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
