Episode 6 - An Exceptional Episode
Happy New Year! In this episode we're talking about exceptions, how they work, and how they evolved. Expect the unexpected. # Timestamps (00:00:00) INTRO (00:01:43) How does a 'try' block work? (00:04:00) How many 'try' blocks can you fit on a bus? (00:05:56) How does Python store the current exception? (00:09:30) Pre-history: exceptions as strings (00:12:59) Try out string exceptions with CentOS 5 (00:14:28) PEP 341: Combining 'finally' and 'except' in one 'try' block (00:16:15) Core Hacker in Residence (00:16:51) PEP 3109: Raising exceptions in Python 3K (00:19:17) Automatic tuple unpacking for raised exceptions?! (00:21:55) PEP 3110: Catching exceptions in Python 3K (00:26:00) Foreshadowing: exception groups (00:27:10) PEP 3134: Exception chaining (00:29:12) __cause__, __context__, __traceback__ (00:31:50) Back in the day we had to walk uphill both ways (00:32:56) PEP 409: Suppressing exception chaining (00:34:44) Raise from None? Or raise from Ellipsis? (00:37:11) __supress_context__ (00:38:13) Semantic difference between 'pass', 'None', and '....' (00:41:02) NotImplemented vs NotImplementedError (00:43:02) Zero-cost exceptions in Python 3.11 (00:51:12) Reconstructing exception table entries dynamically (00:52:51) Objects/exception_handling_notes.txt (00:54:19) PEP 654: Historical context (00:56:58) PEP 654: BaseExceptionGroup and ExceptionGroup (00:58:29) PEP 654: except* (01:03:23) PEP 678: Exception notes (01:06:09) PEP 657: Cooler Errors (01:08:36) A message to language implementers (01:09:15) Fine-grained error locations in tracebacks (01:12:05) This is useful for tracing coverage and Specializator (01:13:50) Hacker in Residence fired? (01:16:25) WHAT'S GOING ON IN CPYTHON (01:16:58) Copy&patch JIT PR open (01:21:30) Free-threading progress: GC split, stop-the-world (01:24:22) The buildbots are red (01:25:27) Faster CPython changes: interpreter code generator refactors (01:26:27) Eval Game crash fix (01:28:41) Three developers in residence! (01:29:54) OUTRO # Links https://compilercrim.es/rust-np/