Episode 4 - Frame Evaluation
Description
What makes Python an interpreter? Today we're talking about ceval.c, the wonders of frame evaluation, and how it changed over the years.
# Timestamps
(00:00:00 ) INTRO
(00:00:59 ) BACK TO PYTHON 2.6
(00:02:53 ) Stack virtual machine
(00:04:41 ) First encounter with opcodes
(00:08:06 ) What even is frame evaluation?
(00:12:51 ) Stack! Which stack?
(00:15:46 ) PRESENT DAY
(00:16:41 ) Computed gotos
(00:21:22 ) PEP 523: JIT me, maybe
(00:26:53 ) Let's generate the interpreter
(00:29:08 ) The JIT is coming
(00:33:13 ) Python function call inlining
(00:37:23 ) Instrumentation: DTrace, PEP 669
(00:41:50 ) lltrace and pystats
(00:44:02 ) Eval breaker
(00:47:54 ) Signal handling
(00:50:47 ) Recursion limits
(00:54:27 ) String concatenation special case
(00:58:24 ) WHAT'S GOING ON IN CPYTHON?
(00:58:42 ) 3.12.0a2
(00:59:12 ) Critical section API adoption
(00:59:34 ) PyOnceFlag
(01:00:28 ) PyDict_GetItemRef()
(01:03:36 ) PyList_Extend() and PyDict_Pop()
(01:04:18 ) Parser: better error messages for non-matching elif/else
(01:05:39 ) glob.translate()
(01:07:22 ) TLS-PSK in the ssl module
(01:08:35 ) IDLE debugger improvements
(01:10:50 ) First micro-op in the Tier 2 interpreter
(01:11:18 ) OUTRO