Deprecating volatile
summary
Argues for deprecating many volatile uses in C and C++, documents actual edits accepted for C++20 (language and library papers split), shows LLVM semantics where volatility is an instruction property not a type property, and gives concrete examples that will appear in the standard (volatile bitfields, unions, structured bindings). Proposes deprecated volatile compound assignments and removing top-level volatile qualifiers, plans a replacement that treats volatile as instruction property and notes which changes land in C++20 versus those deferred.
AI-written summary · about
chapters (47)
- 0:00Introduction
- 1:05How did this get started
- 4:13Motivation examples
- 4:30Example
- 8:45What does it do
- 10:15Another example
- 10:54Toplevel volatile qualified
- 12:42Constructor volatile
- 13:16Load volatile
- 14:36What does volatile mean
- 15:01Knowing your own ignorance
- 15:12Volatile optimizer
- 16:06Memory can tear
- 17:03Is it guarantees instruction ordering
- 17:57Is it guarantees synchronization
- 18:55Early unix
- 19:05Early C
- 22:13Volatile
- 25:43Documentation
- 26:42Models
- 27:07Variables
- 28:53Semantic similarities
- 29:26Threads
- 29:55Atomicity
- 30:11Standards
- 30:31Poetry
- 31:09Abstract
- 38:21What do compilers do
- 39:44What do optimizers do
- 40:48Target specific semantics
- 41:16Side effects of volatile operations
- 41:34Explicit dereferencing
- 43:01CV
- 43:31Corner cases
- 44:26Do not break good code
- 45:00Remove confusion
- 45:16Remove useless abstractions
- 45:34No replacement for volatile
- 46:05Remove complexity from the language
- 46:35Make volatile useful
- 48:51Remove truly useless
- 49:10Remove cons
- 49:46Volatile load and volatile stores
- 52:13Structured bindings
- 53:20Final paper
- 53:35National body
- 54:00Examples
related talks
47mSecure Coding in C and C++ - Volatility Ahead
42mMaking sense of Volatile
24mC++17 and 20 Goodies
15mC++ devirtualization in clang
01h 25mMove Slow and Break Things - Upgrading to C++26
01h 36mThe Incredible Shrinking Standard
01h 23mElsewhere Memory (C++20 Abstract Machine) + Virtual Memory
59mC++17 in Breadth (part 1 of 2)
