Skip to content
Episode 21: A Garbage Episode episode artwork

Apr 17, 2025 1 hr 57 min

Episode 21: A Garbage Episode

from core.py Hosted by Pablo Galindo and Łukasz Langa

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

Episode details come from the podcast's RSS feed.

Embed this episode

Ready to play

Episode 21: A Garbage Episode

0:00 1:57:34

No transcript yet.

Requests help us decide what to transcribe next.

Frequently asked questions

How long is this episode of core.py?

This episode is 1 hour and 57 minutes long.

When was this core.py episode published?

This episode was published on April 17, 2025.

Can I download this core.py episode?

Yes. Use the download control on the episode player to save the publisher-provided media file.