1.7.0
版本发布时间: 2024-03-31 08:12:54
federico-busato/Modern-CPP-Programming最新发布版本:1.7.0(2024-03-31 08:12:54)
A huge thank you to all the contributors who are helping to make this course better and better day by day: @jakeheke75, @guoci, @leofracca, @ChenMiaoi, @AlanDeSmet, @indraneel-mondal, @Yuppdivyaj, @BiradarMayur2509, @Ali-Sda, @eltociear, @freakynit, @Wheest, @VaibhavSaraf, @LuccaT95, @ilovexyz, @kushnaryo8, @liyixin123, @Ingerdev, @eugenefil, @binary-manu, @dijkstracula, @arnimarj
General Improvements:
- Subsections now point to the right page
- Switched to TexLive2024
- Moved the first part of Basic Concepts I in a new lecture "Preparation"
- Provided the first draft of "Software Design" lectures
Introduction:
- Updated the book section
- Added language performance benchmarking
- Added a new quote on learning
- Added new references to Rust, including "Secure by Design: Google’s Perspective on Memory Safety"
- Added Cobol example to "Why Switching to a New Language is Hard?"
Preparation:
- Added the Zed editor
- Added C++23/26 compiler flags
Basic Concepts I:
- Added a new section about the C++ type system
- Minor improvements for the "Fundamental Types" section
Basic Concepts II:
- Added a couple of undefined behavior examples for integral types
- Added a new example of mixing signed/unsigned error (Chandler Carruth, CppCon 2016)
- Described the special value behavior for floating-point
- Added floating-point undefined behavior
- Slightly expanded the floating-point arithmetic properties section
Basic Concepts III:
- Added a
[[deprecated]]
attribute section - Added C++26
auto _
unused variable
Basic Concepts IV:
- Improved initialization section, especially brace-initialization
- Added an example of undefined behavior for initialization
- Described undefined behavior for pointer arithmetic
- Improved the "sizeof" section
- Described the
[[no_unique_address]]
section - Improved
constexpr
limitations section - Added
static
keyword withinconstexpr
functions C++23
Basic Concepts V:
- Added another examples of common macro problems
Object-Oriented Programming I:
- Slightly improved the copy constructor introduction
Object-Oriented Programming II:
- Improved "Object Layout" section
Templates and Meta-Programming I:
- Added C++26
static_assert
with formatting - Improved "Implicit Template Instantiation" section, thanks to @gouci
- Added a subsection related to "Template Instantiation"
Templates and Meta-Programming II:
- Improved the "variadic template" section + two more examples
- Added an example of variadic template applied to types
- Added two notes about function SFINAE limitations
- Removed "Class + Function" SFINAE
- Improved CTAD introduction
Debugging and Testing (previously Ecosystem I):
- Improved "Undefined Behavior Sanitizer" section
- Created a new section "Hardening Techniques"
- Added compiler warnings for Windows
- Improved the "static analysis" section and added msvc
/analyse
- Added a new example of Cost of Software Defects
- Minor improved to the "Program Errors" section
Ecosystem:
- Removed
Kite
- Added
ugrep
Code Conventions:
- Improved the Naming section
- Described how to use
clang-tidy
to enforce a naming style - Reorganized code convention list
- Added a personal comment on West/East notation
Utilities:
- Move
std::span
to this lecture - Improved the "Time Measuring" section
Iterators, Containers, and Algorithms:
- Added a common error of iterator usage
Advanced Concepts I:
- Improved the "Undefined Behavior" section
Advanced Concepts II:
- Added Trivial infinite loop undefined behavior
- Added the reference "Enumerating Core Undefined Behavior"
- Added "Return Code", "Return Code and Exception Summary", and "std::expected" to "Recoverable Error Handing" section
Performance Optimizations I:
- Reformulated the "Basic Architecture Concepts" section
- Added "core-to-core latency and threads affinity" section
- Added Poisson solver complexity over time in the Moore's Law Limitations section
- Added Arm64 cache line size
- Added "Memory Ordering Model" section
Performance Optimizations II:
- Better explanation of loop unswitching
- Added assertion optimization example
- Improved data alignment section
- Better explanation of signed integer optimization and added an example
- Added a note related to stack data structure
- Improved function attribute section
- Improved function call section
Performance Optimizations III:
- Added ARM reference for BOLT optimization
- Added
-fopt-info
to compiler optimization flags - Added
-fassociative-math
to floating point optimization flags - Added Abseil and Frozen to std data structures replacement