Herb Sutter, chair of the ISO C++ ISO C++ committee, has left Microsoft after 22 years, to become technical fellow at Citadel Securities, where he will work on technical strategy and training. He will continue to chair the ISO committee and claims that 2024 has been a “pivotal year” for the language.
Sutter spoke at CppCon in September where he said that “The C++ 26 standard … is likely to change the way we develop software,” and be the biggest change to the language since C++ 11. The specification for C++ 26 is set to be completed in mid-2026, as its name implies, though the rollout of implemented features in compilers such as Clang and GCC will be gradual; some are already present.
Sutter identified four key features in C++ 26 which he said “appear to be on track.” These are:
- Improvements to std:execution (a standard library for asynchronous operations) for improved concurrency and parallelism
- Type and memory safety improvements, with the aim of parity with other modern, safer languages
- Reflection and code generation, described by Sutter as “part of our sea change to compile-time programming” and “arguably [the] most impactful feature ever added
- Contracts, which specify interfaces so their conformance can be checked, including preconditions, postconditions and assertions of valid state
Safety is a big issue in the C++ community, with many security experts recommending that developers switch to languages such as Rust in order to avoid the bugs and issues associated with problems such as out of bounds memory usage and undefined behaviour. At CppCon, Sutter said safety parity did not mean perfection, but that “low-hanging priority targets” would be addressed, including more safe libraries within the standard, removal of safety-related undefined behavior, new compile-time static safety rules, and dynamic safety checks.
In a blog post this week, Sutter said the previous landmark release, C++ 11, introduced modern C++ with features such as auto, lambdas and safe smart pointers. C++ 26 will be characterised by “safety by default and first-class support for reflection-based generative compile-time libraries.”
Sutter conveys infectious enthusiasm for the language. “So many possibilities with reflection/generation! Can’t wait for the complete standardization and compiler implementation!,” said one dev, commenting on the talk.
Others though are more cautious, and raised fears of yet more complexity for the language. “The whole language has become so complicated. Efforts like Cppfront help but we need a new C++ inspired programming languages to rise from C++’s ashes,” said a developer, adding, “and, no, it isn’t Rust.” Cppfront is an experimental compiler created by Sutter to prove new concepts.
It is always easier to add language features than to remove them, because of the need for compatibility with legacy code.
Sutter worked on Visual C++ at Microsoft, a tool widely used within the company for both Windows and for key applications such as Office. Oddly, given Sutter’s role on the ISO committee, Visual C++ has tended to be slow in implementing new C++ features, compared to Clang and GCC.
In recent years, prominent voices within Microsoft have argued for a shift to Rust for security and reliability reasons, not least Azure CTO Mark Russinovich.