Episode 2 - PEP 703: Removing the GIL
Description
We've read the PEP on making the Global Interpreter Lock optional so you don't have to.
Timestamps
(00:00:00 ) Intro
(00:00:50 ) CURRENT STATE OF THINGS
(00:00:58 ) Reference counting
(00:01:35 ) Garbage collection
(00:02:33 ) What is the Global Interpreter Lock?
(00:03:57 ) The GIL and threading
(00:07:24 ) Current ways around the GIL
(00:09:26 ) HISTORICAL ATTEMPTS TO REMOVE THE GIL
(00:09:46 ) 1999: Greg Stein's attempt at Python 1.6
(00:10:46 ) Jython doesn't have the GIL
(00:11:19 ) 2015: Larry Hastings' Gilectomy at Python 3.5
(00:12:34 ) Pablo says removing the GIL is actually very easy
(00:13:24 ) Łukasz is skeptical
(00:14:20 ) 2021: Sam Gross' nogil at Python 3.9
(00:18:22 ) 2023: PEP 703 for Python 3.13
(00:20:05 ) PEP 703 IN DETAIL
(00:20:20 ) Biased Reference Counting
(00:25:19 ) Other needed speedups: deferred refcounts, immortalization, GC
(00:28:41 ) mimalloc
(00:34:46 ) More GC changes
(00:38:20 ) eval breaker
(00:42:08 ) Thread-safe standard collections
(00:45:26 ) Fast paths vs. slow paths
(00:49:47 ) Reading freed memory with mimalloc is kinda okay?
(00:58:06 ) Specializations become harder to implement without the GIL
(01:01:27 ) PEP 703 terms of acceptance
(01:04:08 ) No free lunch
(01:09:25 ) It's now or never
(01:11:59 ) Outro