Recently, Herb Sutter, Chair of the ISO C++ Committee, announced on his personal blog that he has left Microsoft after 22 years to join financial firm Citadel Securities as a Technical Researcher. Despite this career shift, Sutter’s responsibilities within the C++ Standard Committee and community remain unchanged, as he continues to serve as Chair of the ISO C++ Standards Committee and the Standard C++ Foundation, driving the future development of C++.
Blog Highlights
Sutter stated: “Working with the Visual C++ compiler team for 22 years has been an amazing experience, filled with challenges and the opportunity to collaborate with first-class members. It has always been exciting.”
As a team member responsible for foundational technologies like mainstream C++ compilers, Sutter explained that he didn’t need to change jobs frequently to encounter interesting projects. Many innovative projects required compiler support, naturally involving his role. This stability allowed him to stay in the position for such a long time.
2024: A Critical Year for C++
Sutter noted in his blog: “2024 is a critical year for C++.”
At the September CppCon conference, he outlined the direction of C++ for the next decade, emphasizing reflections and safety improvements as key focuses.
For the upcoming C++26 Standard, set for release in 2026, Sutter described it as the most impactful version since C++11, which marked the beginning of a new era for the language. The C++26 specifications will be finalized by mid-2026, though features implemented in compilers like Clang and GCC will roll out progressively, with some already available.
Four Key Features of C++26
Sutter highlighted four key features of C++26, stating they are progressing well:
Improved
std::execution
: Enhancements to the asynchronous operations library will significantly boost concurrency and parallelism.Type and Memory Safety Enhancements: Aimed at bringing C++ on par with other modern, safer languages. For example, uninitialized local variables will no longer result in undefined behavior (UB). Developers can achieve safer code simply by recompiling with a C++26 compiler—no manual changes required.
Reflection and Code Generation: Described by Sutter as “part of a compile-time programming revolution” and potentially the most impactful feature ever introduced.
Contracts: Enables interface consistency checks, including assertions for preconditions, postconditions, and valid states.
The Focus on Safety in C++
Safety remains one of C++’s longstanding challenges, often leading experts to advocate for alternatives like Rust. However, Sutter clarified that C++'s "safety improvements" don’t aim for perfection but focus on addressing high-priority, easily improvable issues.
Specific measures include:
Introducing more secure components into the standard library.
Removing undefined behavior related to safety.
Adding new compile-time static safety rules.
Enhancing dynamic runtime safety checks.
These improvements aim to reduce common safety risks during development while retaining C++'s flexibility and performance advantages.
Concerns About Complexity
Some developers remain cautious about C++'s evolution, concerned that the language’s growing complexity may not be fully resolved by initiatives like Sutter’s experimental compiler, Cppfront. They argue that compatibility with legacy code makes it easier to add features than remove them. Some suggest creating a simpler, C++-inspired language to replace C++, but Rust is not universally viewed as the ideal candidate.
Reflections on C++ Evolution
As Bjarne Stroustrup, the creator of C++, noted, C++11 redefined the programming experience by introducing features like auto
type deduction, lambda expressions, standardized safe smart pointers, range-based for
loops, move semantics, and constexpr
for compile-time code. These changes laid the foundation for "Modern C++," simplifying the language and making it more efficient. Subsequent versions—C++14, C++17, C++20, and C++23—have expanded and refined these features over the past decade, driving continuous language evolution.
Sutter explained that C++26 is not just a language upgrade but a fresh start, poised to lead developers into a smarter and more powerful programming future. It marks the dawn of a second major transformation for "Modern C++," characterized by default safety and top-tier support for reflection-based generative compile-time libraries.
Looking ahead, C++26 will serve as the "initial version" of these foundational tools, providing developers with a starting point to explore new features. Over time, developers will learn to apply these tools, resulting in safer, more efficient code and continued optimization of the language.