Episode 4 - Frame Evaluation
Listen now
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
More Episodes
How does Python handle memory? Why does it need to perform custom forms of memory allocation? We talk about all that in this episode. We don't talk about Easter eggs, and we never mention Brandt by name, as promised last time! ## Timestamps (00:00:00) INTRO (00:00:22) PART 0: SPORTS...
Published 10/29/24
Published 10/29/24
Over 40 core developers spent a week in Bellevue WA putting finishing touches on Python 3.13, planning, prototyping, and implementing features for Python 3.14. We talked to half of them. We laughed, we cried. We were happy watching graphs go up, and sad watching them go down. It was intense....
Published 10/03/24