Summary by TwinMind · 10m 20s

Summary by TwinMind · 10m 20s

Bjarne Stroustrup: C++ Standards - C++03, C++11, C++14, C++17, C++20

Bjarne Stroustrup: C++ Standards - C++03, C++11, C++14, C++17, C++20

Lex Fridman

Lex Fridman

Origins of C++ Standardization (1989)

  • Early 1989: Two representatives (IBM, HP) approached creator requesting C++ standardization
  • Initial resistance: C++ wasn't finished, not ready for formal standardization
  • Corporate pressure: Organizations couldn't depend on language owned by potential competitor
  • Risk mitigation: Creator might "get run over by a bus" - needed formal standards
  • Combination of "arm-twisting and flattery" led to agreement
  • Late 1989: First meeting in DC under ANSI (American National Standards Institute)
    • 25 attendees (new record for this type of meeting)
    • Included experienced C standardization committee members
    • Received training on ANSI standardization rules

ISO Standardization Process Structure

  • Open process: Anyone can participate
  • Entry fee: ~$1000 originally, now $1280
  • Meeting schedule: 3 one-week meetings per year
    • Tried 2 meetings/year briefly - didn't work well
  • Voting system: One vote per organization (prevents single company dominance)
  • Technical discussions followed by proposal votes
  • Extended to worldwide process after couple years
  • Current participation: 15-20 active countries, 15-20 additional observing/voting countries
  • Consensus-based approach: Avoid 60-40 splits to prevent dialects/fragmentation

Historical Timeline and Challenges

First Standard (C++98)

  • First technical meeting: 1990
  • Completion: 1998 (8 years vs typical 10-year ISO cycle)
  • Universal approval: All countries voted in favor
  • Standard widely adopted until C++11

Second Standard (C++11) - "Second System Effect"

  • Originally named "C++0x" (expecting completion within single decade)
  • Actual completion: 2011 (13 years)
  • Overambition due to experience and confidence
  • Last-minute additions pattern emerged
  • STL integration was major success - "saved C++ it was beautiful"
  • Other late additions less successful, caused delays

Shift to 3-Year Release Cycle

  • Problem: 10-year cycles allowed 11+ year delays when slips occurred
  • Solution: 3-year cycles limit delays to 3-4 years maximum
  • Feature freeze to shipping delay: 1-2 years consistently

Modern Release Schedule Success

  • C++14: Shipped on time
  • C++17: Shipped on time
  • C++20: Will ship on time (committee draft voting in Cologne next week)
  • Predictability benefits:
    • Compiler implementers can target specific releases
    • Library implementers have clear deadlines

Implementation Timeline Improvements

  • C++11: 2 years for most compilers to achieve adequate support
  • C++14: Most compilers "getting pretty good" by release
  • C++17: Everybody shipped support in 2017
  • C++20: Almost everybody shipping almost everything (already shipping in 2019)

Current Status

  • Next meeting: Cologne, Germany (next week)
  • Agenda: Vote out C++20 committee draft
  • Process: Goes to national standards committees for comments/change requests
  • Final step: Second vote round hoping for universal approval