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
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 tostd::vector<char>
or a custom type;FOREIGN KEY
; composite keys;JOIN
; transactions;ORDER BY
andLIMIT
,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++
- Code
- Licence: MIT
- Header-only
- Uses NLohmann’s JSON library
- Conan wrapper
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
- 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