Discovercore.pyEpisode 21: A Garbage Episode
Episode 21: A Garbage Episode

Episode 21: A Garbage Episode

Update: 2025-04-17
Share

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

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 21: A Garbage Episode

Episode 21: A Garbage Episode

Pablo Galindo and Łukasz Langa