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 cursor and void.
    • ➕ 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 float128 in the list of floating-point types.
    • ➕ Added numeric_limits example.
    • 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 z suffix.
    • ➕ Added two small examples of undefined behavior.
    • 👌 Improved "Arithmetic Types - Promotion and Conversion Rules" section.
    • Slightly improved int/unisgned properties.
    • 👌 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 constexpr evaluation.
    • ➕ Added [[indeterminate]] attribute.

    Basic Concepts V :

    • ➕ Added the alignof operator and improved the sizeof section.
    • ➕ Added C++26 constexpr relaxation.
    • ➕ Added a section for constexpr objects.
    • 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 static call 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 constexpr lambda 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 noexcept behavior with defaulted = default methods.

    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 IKOS static analyzer.
    • 👌 Improved "C++ standard library hardening" section.
    • ➕ Added Google result for standard library hardening.
    • ➕ Added Microsoft STL hardening.
    • ➕ Added clang safe 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 -ftrapv flag to prevent undefined behavior.
    • ➕ Added "Type Sanitizer" section.
    • ➕ Added "Contracts" section.
    • 👌 Improved "Overview" and "Assertions" sections.
    • ➕ Added Cpptrace and Backward libraries.
    • ➕ Added reference to MSVC AddressSanitizer.

    Ecosystem :

    • ✂ Removed cloc, added tokei and scc.
    • ➕ Added compiler-explorer features 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::span section.
    • ➕ Added "True Random Number Generator (TRNG)" description.

    Iterators, Containers, Algorithms :

    • Described pro/cons of using std::array instead of raw 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 constexpr vs. 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, added uintptr_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 "constexpr Function - Limitations" and minor section improvements
    • Described the relation between constexpr function and argument lifetime
    • Better explanation and more examples for static_cast, reinterpret_cast, const_cast, bit_cast
    • ➕ Added narrow_cast and "uniform initialization cast"
    • Mentioned the behavior of auto within structures
    • Mentioned the behavior of constexpr and structure binding
    • 🗄 Described volatile deprecation 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-errors to "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::Assert and Boost::stacktrace to assertion section
    • ➕ Added GWPSan Sampling-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 unroll compiler support
    • ➕ Added a new reference for hash table comparison
    • ➕ Added MSVC forceinline attribute 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-arrays optimization 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 target and target_clones function 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