Practicing C++ developers from leading companies will share their knowledge, present practical talks, and discuss real-world case studies backed by metrics.
The conference will take place simultaneously in two countries and three cities. Belgrade and Moscow will offer both onsite and online programs, while St. Petersburg will feature onsite-only program with activities.
Modern toolchains offer a wide range of tools for identifying errors during the QA (various sanitizers, fuzzing, property-based testing, etc.). However, critical software running in production also needs UB protection. This protection, also known as «hardening», must be comprehensive enough to prevent the most common vulnerabilities while remaining lightweight enough to avoid a significant performance impact. The talk covers the hardening features available in modern toolchains (ASLR, Glibc and STL checks, etc.) and their influence on the evolution of C++.
We will take a look at strict aliasing, restrict, the optimizations they enable, and some surprising behavioral nuances. We'll also investigate how they affect performance, and the difficulties of supporting them in compilers and the C++ standard.
How C++ projects used to link external libraries in the past and how they do it today. We’ll review system dependencies via pkg-config, the magic behind find_package () in CMake, and the dependency () directive in Meson. We’ll also look at how Conan and vcpkg are changing the build approach, and take a glimpse into the future: CPS as a new standard for cross-language dependencies.
Recently, lightweight threads have gained significant popularity in C++, with libraries such as Userver, Argobots, and Boost:fibers leading the way. However, using traditional concurrency primitives like mutexes or locks with these lightweight threads can pose challenges.
For instance, consider a scenario involving a lock that employs active waiting techniques, such as a test-and-set lock. When a thread yields and suspends while in a critical section, all currently active lightweight threads can attempt to acquire the lock without suspending themselves. This behavior can result in deadlock, as the active threads will never be able to acquire the lock since the suspended thread cannot release it.
Due to these challenges, existing lock implementations need to be updated to function correctly in environments with lightweight threads. In this talk, we will explore various approaches to transforming state-of-the-art locks. These new implementations will support all libraries that utilize lightweight threading capabilities and provide a specific interface. To demonstrate the versatility of our approach, we will present experiments using three lightweight thread libraries: Userver, Argobots, and Boost:fibers.
The talk covers probabilistic data structures, focusing on how they work and their real-world applications, from bloom filter to hyperloglog. The case studies will include use cases from HFT, deduplication, unique object counting, and latency assessment.
He is also the Chair of the Russian Working Group for C++ Standardization. Anton is developing and maintaining the GCC standard library and Boost libraries. He is the author of the PFR, TypeIndex, DLL and StackTrace Boost libraries, and an active maintainer of Any, Conversion, LexicalCast, and Variant.
Anton is also the author of the Boost C++ Application Development Cookbook.
He loves C++, large acyclic graphs, and hiding mutexes from business logic in multithreaded code.
She builds communities, arranges events, and coordinates speakers.