Discovercore.pyEpisode 4 - Frame Evaluation
Episode 4 - Frame Evaluation

Episode 4 - Frame Evaluation

Update: 2023-11-29
Share

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

Comments 
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Episode 4 - Frame Evaluation

Episode 4 - Frame Evaluation

Pablo Galindo and Łukasz Langa