Episode 21: A Garbage Episode
Description
We talked about this episode for months now, and it's finally here. Garbage collection in its full glory. Classic and free-threaded. Generational and single-pass. With eager and delayed untracking. We cover it all! Explicitly.
## Timestamps
(00:00:00 ) THE FUCKING INTRO
(00:02:03 ) PART 0: SPORTS NEWS
(00:03:19 ) PART 1: GARBAGE COLLECTION
(00:03:57 ) The big problem with refcounting
(00:08:35 ) Solving reference cycles through PyGC_Head
(00:11:45 ) 64 bits ought to be enough for anybody
(00:17:30 ) Why a doubly-linked list?
(00:21:15 ) How reference counting makes finding cycles easier
(00:26:25 ) Roots bloody roots
(00:30:17 ) How are objects in the cycle destroyed?
(00:31:58 ) Object resurrection
(00:43:21 ) Why do you need "generations"?
(00:52:26 ) Delayed untracking
(00:54:46 ) Weak references, strong problems
(00:59:19 ) GC in free threading
(01:03:27 ) Reference counting in free-threading builds
(01:10:08 ) Incremental GC talk is DEFERRED
(01:11:00 ) PART 2: PR OF THE WEEK
(01:17:15 ) Type checking the standard library itself?
(01:29:51 ) PART 3: WHAT'S GOING ON IN CPYTHON?
(01:30:15 ) Free-threading changes
(01:32:54 ) Performance updates
(01:36:11 ) http.server supports HTTPS!
(01:37:01 ) PEP 768 and 758 landed
(01:37:34 ) HACL*
(01:38:24 ) fnmatch.filterfalse()
(01:38:54 ) Bugfixes
(01:42:46 ) Curiosities
(01:54:49 ) OUTRO