Skip to content

v1.7.0

Latest
Compare
Choose a tag to compare
@federico-busato federico-busato released this 31 Mar 00:12
· 13 commits to master since this release

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 within constexpr 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