Modern C++ Programming v1.9.0 Release Notes
Release Date: 2026-01-06 // 5 months ago-
Main Changes
- 🏗 Two new chapters related to build aspects: Build Size and Build Time.
- Reorganized "Basic Concepts II" into two chapters, splitting integer and floating-point topics.
Full Changelog
Preparation :
- 👌 Improved IDE/Editor section, added
cursorandvoid. - ➕ Added C++ standard adoption (JetBrains Developer Ecosystem).
- Listed C++ main conferences.
Basic Concepts I :
- 👌 Improved "Implicit Promotion" section.
- ➕ Added special cases for
!and bitwise shift promotion. - 🛠 Fixed wrong case of undefined behavior in function evaluation.
- ➕ Added
float128in the list of floating-point types. - ➕ Added
numeric_limitsexample. - Specified two's complement in C++ for signed integer types.
- Slightly improved the "Language Types" section organization.
Basic Concepts II - Integer Types :
- 🛠 Fixed usage of
zsuffix. - ➕ Added two small examples of undefined behavior.
- 👌 Improved "Arithmetic Types - Promotion and Conversion Rules" section.
- Slightly improved
int/unisgnedproperties. - 👌 Improved "Undefined Behavior of Signed Integer" section.
Basic Concepts II - Floating-Point Types :
- 👌 Improved "IEEE floating-point and C++" introduction.
- 🛠 Fixed "Inf Behavior" that leads to NaN (Special Values Behavior).
- ⚡️ Updated IEEE754 visualization and converter links.
Basic Concepts IV :
- 👌 Improved description of attributes for lambda expressions.
- Further clarification of
constexprevaluation. - ➕ Added
[[indeterminate]]attribute.
Basic Concepts V :
- ➕ Added the
alignofoperator and improved thesizeofsection. - ➕ Added C++26
constexprrelaxation. - ➕ Added a section for
constexprobjects. - Fixed wrong structure size in
[[no_unique_address]]section. - 👌 Improved "Structure initialization - brace or equal" section.
- ➕ Added a section "Fixed-Size Arrays".
Basic Concepts VI :
- ➕ Added an example of C++23 lambda with the
staticcall operator. - Explained how a lambda is translated into a function object.
- Explained lambda trailing return type.
- Explained the introduction of a new variable in the capture list of a lambda.
- 👌 Improved
constexprlambda explanation in C++17. - 👍 Provided a better solution for "Preprocessing - Common Error 2".
- 👌 Improved the "Macro" section.
Object-Oriented Programming I :
- 👌 Improved "Defaulted Constructors, Destructor, and Operators" section.
- 0️⃣ Clarified
noexceptbehavior with defaulted= defaultmethods.
Object-Oriented Programming II :
- Explained C++20
operator!=overloading behavior.
Templates and Meta-programming I :
- Described the difference between
decltype(T{}+R{})vs.std::common_type.
Templates and Meta-programming II :
- 👍 Found a better way to resolve CTAD limitations.
🌐 Translation Units I :
- 👌 Improved "Linkage" introduction.
- ➕ Added a small section "Declarations and Definitions in Header and Source Files".
- Described symbol visibility.
Code Conventions II :
- ➕ Added "Literal" section.
Debugging :
- Created a new section for "Static Analyzers".
- ➕ Added results for "Static Analysis Tools Effectiveness".
- ➕ Added
NASA IKOSstatic analyzer. - 👌 Improved "C++ standard library hardening" section.
- ➕ Added Google result for standard library hardening.
- ➕ Added Microsoft STL hardening.
- ➕ Added
clangsafe buffer programming model. - ➕ Added a study related to the impact of compiler warnings.
- Created a new section "Code Complexity".
- ➕ Added Debian test case for
cppcheck. - ➕ Added
-ftrapvflag to prevent undefined behavior. - ➕ Added "Type Sanitizer" section.
- ➕ Added "Contracts" section.
- 👌 Improved "Overview" and "Assertions" sections.
- ➕ Added
CpptraceandBackwardlibraries. - ➕ Added reference to
MSVC AddressSanitizer.
Ecosystem :
- ✂ Removed
cloc, addedtokeiandscc. - ➕ Added
compiler-explorerfeatures and extended its description. - ➕ Added
SourceTrail - Project Visualization. - ➕ Added
Mr.Docs. - ➕ Added
AST diff. - ➕ Added
ast-grep.
Utilities :
- ➕ Added "C++ Views" introduction.
- ➕ Added
std::mdspan. - Significantly improved
std::spansection. - ➕ Added "True Random Number Generator (TRNG)" description.
Iterators, Containers, Algorithms :
- Described pro/cons of using
std::arrayinstead ofraw arrays.
Advanced Topics II :
- Mentioned C++26 rule that disallows binding a returned reference to a temporary.
Optimizations I :
- ➕ Added "Amazon PageSpeed" case.
Optimizations II :
- 👌 Improved "Inlining" description.
- ⚠ Described function inlining warning
-Winline. - ➕ Added "one-character commit" (Meta) case study.
- 👌 Improved "Pure" and "Constant" functions section.
- 👌 Improved "Exception" effects on performance.
- ➕ Added
constexprvs.static constexpr.
Optimization III :
- ➕ Added "Automatic Feedback-Directed Optimization (AutoFDO)" description.
- ➕ Added "Compiler Optimization Remarks" description.
- ➕ Added "Compression Libraries".
- 👌 Improved "Performance Benchmarking" section.
- ➕ Added "Program Memory Layout compiler options".
- 👌 Improved "Architecture Flags" section.
- ➕ Added VS2026 performance improvement.
Thanks for all feedback and contributions: @ValentinoGuerrini, @nicolaszzhao, @bnbolo, @lingeandrea, @eddelbuettel, @leofracca, @mmorawiec, @linesight, @alarxx, @fdila, @bitorangej, @roshankarande, @hsunchiu, @c02y.
Special thanks to @oleksandr-pavlyk and @krzysztofkortas for many opened issues.
Previous changes from v1.8.0
-
🚀 The soul of this release is the full refactoring and updating of the "Code Conventions" chapter:
- All code conventions have been reviewed again, adding missing items and improving the organization of the existing ones
- "Core C+"+ code convention has been fully added
- Mentioned code convention tools like
clang-tidy - All bullet points now have links to the official convention descriptions
- The chapter has been split into two lectures and organized into several subsections to improve the readability
Introduction :
- ⚡️ Updated main charts: "C++ popularity" and "compute-trend"
Preparation :
- ⚡️ Books updated: "Professional C++", "Programming and Principles using C++"
Basic Concepts II :
- Improved "Integral data type" section: description of
ptrdiff_t, addeduintptr_t, added hardware relation with integral arithmetic - ➕ Added saturation arithmetic functions C++26 for integral data types
- 👌 Improved signed integer and bitwise operations description
Basic Concepts III :
- ➕ Added C++ attributes section
- 🚚 Moved "namespace" section here and added improvements: using namespace, using declaration in details
- ➕ Added alternative syntax for namespace
- ➕ Added an example of "using enum" pre-C++20
Basic Concepts IV :
- 🛠 Fixed "
constexprFunction - Limitations" and minor section improvements - Described the relation between
constexprfunction and argument lifetime - Better explanation and more examples for
static_cast,reinterpret_cast,const_cast,bit_cast - ➕ Added
narrow_castand "uniform initialization cast" - Mentioned the behavior of
autowithin structures - Mentioned the behavior of
constexprand structure binding - 🗄 Described
volatiledeprecation in C++20 - 🚚 Moved pointer description before "Heap and Stack"
- ➕ Added C++23 type safe placement allocation function
Basic Concepts V :
- ➕ Added "Boost Predef" library reference for common macros
- ➕ Added template lambda emulation
- ➕ Added an example of template lambda without automatic deduction
- ➕ Added the relation between lambda expression and function
- Described recursive lambda and lambda within another lambda
- ➕ Added C++23 lambda expressions with optional parameters
- Reported GCC 14 flag
-fdiagnostics-all-candidates
Object-Oriented Programming II :
- 👌 Improved Polymorphism introduction and added "C++ Mechanisms for Polymorphism"
Template and Metaprogramming II :
- ➕ Added
-Wfatal-errorsto "Template Debugging" section
🌐 Translation Units II :
- 👌 Improved C++ libraries section. Clarified building steps, environment variables, usage, and ABI
- 🌐 Small improvements in the "compiling multiple translation units" section
Debugging :
- ➕ Added
Boost::AssertandBoost::stacktraceto assertion section - ➕ Added
GWPSanSampling-based Sanitizer - ➕ Added additional compiler flags to help debugging
Ecosystem :
- ⚡️ Updated the "AI-Powered Code Completion" tools
- ⚡️ Books updated
Utilities :
- ➕ Added a section for random number generator for "Recent Algorithms and Performance"
- 👌 Improved the seed generation section
Advanced Topics I :
- 🛠 Fixed type deduction example for array
Optimization I :
- ➕ Added new references in the "Introduction" section
- 👌 Improved "Arithmetic Intensity" section
Optimization II :
- ➕ Added a few notes about loop optimization
- 👌 Improved memory alignment section and added C++20
std::assume_aligned - 🛠 Fixed C++17 alignment function and added an example
- ⚡️ Updated
pragma unrollcompiler support - ➕ Added a new reference for hash table comparison
- ➕ Added MSVC
forceinlineattribute and adopted C++11 syntax
Optimization III :
- ➕ Added official link to LLVM Bolt project and a new benchmark
- ➕ Added a benchmark for "Polyhedral Optimizations"
- ➕ Added
-fprefetch-loop-arraysoptimization flag - ➕ Added userspace governor setting for cpu frequency
- ➕ Added "Hash-prospector" as replacement for PRNG
- ➕ Added optimized linear and binary search in "External libraries" section
- ➕ Added
targetandtarget_clonesfunction attributes
Software Design I :
- 🔨 Refactored "Member Functions vs. Free Functions" -> "Class Design"
Thanks for all feedback and contributions: @FisherKKK, @JDRanpariya, @YueLu0116, @luck-tian, @D4arkShad0w, @DYNIO1999, @saveasguy, @leofracca, @Dong-kyu-Lee, @ChoiSeonMun, @viktorteren, @ChoiSeonMun, @Mati-as, @RuimingShen, @abzrg, @xintin, @russkel, @binary-manu