The ISO C++ Committee has completed the Committee Draft for C++20, and will move it to the Draft International Standard for final approval and publication. C++20 features major programming language features such as modules, concepts, coroutines, and better-time programming support.
According to the committee, C++20 is “the most impactful revision of C++ in a decade.”
C++20 is the informal name for the revision of the ISO/IEC standard for the C++ programming language expected to follow C++17.
The Synchronization Library has been listed here with an exhaustive list of revisions in C++20, such as efficient atomic waiting and semaphores, latches and barriers, ‘atomic_flag::test’ and lockfree integral types, and a change that doesn’t make C++ unimplementable for small CPUs.
In the new version, Executors progressed significantly, according to the developers behind the language. There is now a CONSENSUS (!) design on everything except error handling, and a few TODOs on reconciling bulk executors with the latest changes.
Most of the concurrency & parallelism features for C++20 were applied, including semaphores (binary and counting), latches, barriers, efficient polling (wait and notify – think: like Futex), the joining thread and its stop token. Preventive maintenance was done in this release also.
The updated language also introduces a new text formatting API, std::format, with the goal of being as flexible as the printf family of functions, with its more natural call style and separation of messages and arguments, and as safe and extensible as iostreams. std::format will make it possible to write, according to a post.
The full video of Bjarne Stroustrup, the creator of C++, describing the changes and providing suggestions to developers is available here.
His suggestions are that user-level/ application-level concepts should have semantics, incomplete concepts are better than no concepts, recommends using ‘static_asserts’ to check (sets of) types against concepts and to check algorithms against (sets of) types.
In addition, the ISO C++ Committee has also started a plan for C++23, which is expected to prioritize the modular standard library, and include library support for corountines, executors and networking. More information is available here.