Meeting 13 December 2018

Bjarne Stroustrup on CppChat

  • education
  • The Standards Committee
  • C++20 and beyond

Matt Godbolt on CppChat

  • Compiler Explorer, contributors, infrastructure
  • Tools —> LLVM MCA (machine code analyser), Clang Tidy, PAHole
  • Patched compiler versions to explore new features
  • Code execution is coming
  • Undefined behaviour

C++Now 2018: Matt Godbolt - What else has compiler done for me lately?

IntelliCode in Visual C++

IntelliCode uses machine learning to train over thousands of real-world projects including open-source projects on GitHub. As such, IntelliCode will be most helpful when using common libraries such as STL. Based on this training, IntelliCode saves your time by putting what you’re most likely to use at the top of your IntelliSense completion list.

VS2019 Preview

CLion 2019 Roadmap

IKOS static analyzer from NASA

IKOS is a sound static analyzer for C and C++ based on LLVM, developed at NASA.

Here, sound means that it is mathematically correct and cannot miss a bug, thanks to the theory of Abstract Interpretation. The counterpart is that it might produce false positives.

IKOS checks for a lot of undefined behaviors, such as buffer overflows, divisions by zero and so on. The full list is available here. The list is somewhat similar to UBSan checks.

Concepts

std::Boolean concept

Standard Ranges, by Eric Niebler

Ranges got merged and will be part of C++20. This is huge news and represents probably the biggest shift the Standard Library has seen since it was first standardized way back in 1998.

Library: SQLite ORM

SQLite ORM light header only library for modern C++

  • Code (BSD-2-Clause)
    • C++14
    • No raw string queries
    • CRUD support; pure select query support
    • Custom types binding support
    • Supports: BLOB - maps to std::vector<char> or a custom type; FOREIGN KEY; composite keys; JOIN; transactions; ORDER BY and LIMIT, OFFSET, GROUP BY / DISTINCT, INDEX, COLLATE
    • Migration functionality
    • The only dependency - libsqlite3
    • No undefined behaviour - if something goes wrong lib throws an exception
    • In-memory database support - provide :memory: or empty filename

Library: Inja - a template engine for modern C++

1json data;
2data["name"] = "world";
3inja::render("Hello {{ name }}!", data); // Returns "Hello world!"

Library: C++ REST SDK (formerly Casablanca) by Microsoft

  • Code
    • Licence: MIT
    • C++11
    • Supports Windows, Linux, macOS, iOS, Android

The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Library: Caffe2 - A New Lightweight, Modular, and Scalable Deep Learning Framework

Tool: Superluminal profiler for Windows

Website

  • Combines sampling and instrumentation
  • Visualizes thread communication flow
  • Kernel-level callstacks
  • Dynamic filtering of areas of interest
  • High frequency sampling (8 KHz)
  • Timeline view, call graph, source view
  • 7-day free trial, then EUR 99/149/289

Twitter

Reddit