

core.py
Pablo Galindo and Łukasz Langa
We talk about Python internals, because we work on Python internals. We joke about stuff, because we’re jokers. Episodes between 60 and 90 minutes in length. We’ve done more than a few so far and it doesn’t seem like we’ll be stopping any time soon!
Hi Loren!
Hi Loren!
Episodes
Mentioned books

10 snips
Jul 12, 2025 • 1h 42min
The Megahertz
Discover the exciting new built-in sampling profiler introduced in Python 3.15, revolutionizing how developers analyze performance. Dive into the complexities of profiling AsyncIO applications and the challenges of multi-threaded environments. The conversation also highlights the launch of memory.python.org and the advancements in profiling tools, including the benefits of efficient sampling to reduce overhead. Enjoy a light-hearted take on the technical intricacies and common misconceptions surrounding hashing and performance optimization!

7 snips
Jun 13, 2025 • 1h 36min
PyCon US 2025 Recap
Discover the excitement from PyCon, where a focus on free-threading sparked engaging discussions. Keynote highlights include thought-provoking talks from Cory Doctorow and Lynn Root. Humor abounds with anecdotes from quirky moments preparing a talk on AsyncIO. Learn about the potential of Python 3.14's JIT improvements and the innovative use of PyScript for 3D graphics. Plus, a peek into audio visualization techniques and the challenges faced at the conference, showcasing the vibrant spirit of the Python community.

May 6, 2025 • 1h 19min
Beta Frenzy
Python 3.14 Beta 1 is coming! And that means we reach feature freeze. BUT QUICK, there’s still time to squeeze in one last thing!## Timestamps(00:00:00) INTRO(00:01:58) PART 1: Template strings(00:07:10) PART 2: Asyncio Introspection(00:29:07) PART 3: Syntax highlighting(00:43:00) PART 4: Color themes(00:50:56) PART 5: Debugging a remote process with pdb(01:01:35) PART 6: Python Installation Manager for Windows(01:05:29) PART 7: Worship(01:08:53) PART 8: What else is happening?(01:16:03) OUTRO

Apr 17, 2025 • 1h 58min
Episode 21: A Garbage Episode
Dive into the fascinating world of garbage collection in Python, tackling the headaches of reference counting and cyclical references. Discover why 64 bits may not be enough and explore the innovative realm of 128-bit computing. The discussion also highlights memory management techniques and recent developments, like incremental garbage collection. Adding a twist, they humorously examine type-checking challenges while celebrating the evolution of Python's tools. It's a lively mix of tech talk and playful banter that keeps you hooked!

Mar 24, 2025 • 1h 44min
Episode 20: Remote Code Execution By Design
Discover the latest PEP that enables remarkable interaction with live Python processes. Join the humorous debate on Python's reference counting semantics and delve into the complexities of syntax highlighting in PyREPL. Explore the fascinating mechanics of remote code execution and how new APIs enhance security. Engage with insights on Python’s evolving features, including performance improvements and better memory management. The lighthearted banter keeps it engaging while covering serious technical advancements!

Mar 8, 2025 • 2h 7min
Episode 19: Async hacks, unicorns and velociraptors
In this asynchronous episode we're interviewing a fellow core developer Yury Selivanov to talk about asyncio's past and future, composable design, immutability, and databases you'd actually like using. We also broke the 2-hour episode barrier!## Timestamps(00:00:00) INTRO(00:01:33) PART 1: INTERVIEW(00:02:27) What drives you?(00:04:47) How do you choose what to work on?(00:08:10) Hyperfocus(00:09:28) Things from Rust that Python could use(00:14:50) Nothing is sacred when you depend on glibc(00:18:47) TypeScript typing is god-tier(00:22:04) Adding async and await to Python(00:34:11) Adding new keywords to the language(00:41:17) Jumping into a new codebase(00:49:22) Any design regrets?(00:58:46) Contextvars(01:10:40) Is the frozenmap PEP happening?(01:19:21) uvloop(01:23:25) What makes Gel lovable?(01:39:57) PART 2: PR OF THE WEEK(01:47:08) Saturday talks at PyCon should be fun(01:50:35) PART 3: WHAT'S GOING ON IN CPYTHON(01:50:47) Ken Jin's tail-call interpreter(01:55:05) Barney Gale's glob.glob() optimization(01:55:43) Brandt's boolean guards to narrow types to values in the JIT(01:56:33) Mark Shannon's stack limits implemented with addresses, not counters(01:58:34) Brandt's removal of _DYNAMIC_EXIT(01:58:53) Mark Shannon's async for branches instrumented(01:59:36) Free-threading changes(01:59:58) Sam Gross' regression tests can now run in --parallel-threads(02:00:34) Tomasz Pytel's thread safety crusade(02:01:01) Xuanteng Huang's __annotations__ race fix(02:01:11) Kumar's per-thread linked lists for tasks(02:02:54) Serhiy's crashes related to PySys_GetObject() fixed(02:03:22) Sam's usage of stack pointers in thread stack traversal(02:03:38) Dino Viehland's lock avoidance during object cleanup(02:04:23) OUTRO

Jan 24, 2025 • 1h 39min
Episode 18: Reference Counting
After we talked about memory allocation in Python back in Episode 16, we're ready to complain, uh, explain reference counting. Or at least throw a bunch of reference counting facts at you. Plus a big assortment of recent Python changes. You ready?
## Timestamps
(00:00:00) INTRO
(00:04:17) PART 0: SPORTS NEWS
(00:06:53) PART 1: REFERENCE COUNTING
(00:08:28) New segment of 2025
(00:13:54) C++ is asymptotic Python
(00:15:37) Is Rust game yet?
(00:18:01) Names
(00:20:25) Breaking the law
(00:23:08) sys.getrefcount()
(00:25:21) Pedantic Pablo
(00:26:06) sys.gettotalrefcount()
(00:31:24) TraceRefs
(00:33:28) Advantages of refcounting
(00:36:16) Disadvantages of refcounting
(00:38:40) Reference cycles
(00:40:39) Multithreading
(00:41:25) When refcounting goes wrong
(00:44:05) Freeing memory in Python doesn't return it to the OS
(00:45:42) Leaks and cycles redux
(00:50:29) Double free
(00:53:05) Avoiding reference counting
(00:54:59) Immortal objects
(01:00:40) PART 2: WHAT'S GOING ON IN CPYTHON
(01:02:43) New features
(01:04:11) Assorted interesting changes
(01:15:23) Performance
(01:18:09) Free-threading changes galore
(01:27:02) AsyncIO
(01:34:25) Windows changes
(01:36:45) Security
(01:37:20) OUTRO

Nov 19, 2024 • 1h 45min
Episode 17: Argparse, JIT, and balloons with Savannah Ostrowski
Meet our newest member of the core developer team, Savannah! Currently at Snowflake, she also worked with development tools at Docker and Microsoft, but also flew drones over forests. In terms of CPython, Savannah works on argparse and the JIT, but that's not her last word.
# Timestamps
(00:00:00) INTRO
(00:01:26) PART 1: INTERVIEW WITH SAVANNAH OSTROWSKI
(00:02:12) Beginnings as a Python user
(00:04:14) Carol Willing's nudge
(00:06:55) First PR
(00:08:56) Psychological damage from asyncio
(00:11:51) Savannah at ***** Maps
(00:14:04) Chipotle Claim to Fame
(00:16:14) The most funky CPython discoveries
(00:19:06) What if you could break backwards compatibility in argparse?
(00:23:51) How do the JIT internals look to new eyes?
(00:27:33) Is Savannah team typing?
(00:33:55) Somebody's jealous
(00:37:29) Favorite PEP and least favorite PEP
(00:42:10) Big Fish
(00:52:58) Hard conversations
(01:02:31) Polska
(01:06:37) Do it scared
(01:08:14) PART 2: PR OF THE WEEK
(01:08:22) Łukasz
(01:12:01) Pabluco
(01:14:46) Savannah
(01:18:27) PART 3: WHAT'S GOING ON IN CPYTHON
(01:21:21) Features
(01:29:59) Bug fixes
(01:33:42) Performance
(01:40:12) Security
(01:43:23) OUTRO

Oct 29, 2024 • 1h 46min
Episode 16: Memory Allocation
Discover how Python expertly manages memory with an in-depth look at the PyMalloc allocator. The hosts explore the intricacies of memory allocation, sharing insights on memory pools and fragmentation. Learn about powerful tools like TraceMalloc and Memray that help debug memory issues. They also discuss unique challenges posed by recent macOS updates and advancements in Python 3.13 that improve memory tracing. With humor and relatable metaphors, the conversation demystifies the complex world of memory management in programming.

Oct 3, 2024 • 1h 56min
Episode 15: Core sprint at Meta
Over 40 core developers spent a week in Bellevue WA putting finishing touches on Python 3.13, planning, prototyping, and implementing features for Python 3.14. We talked to half of them. We laughed, we cried. We were happy watching graphs go up, and sad watching them go down. It was intense. There was even cake, no joke!## Timestamps(00:00:00) INTRO(00:02:05) PART 1: THE CAKE IS NOT A LIE(00:04:09) Interview with sprint organizer Itamar Oren(00:07:48) Surprise waffle machine(00:08:36) PART 2: DEVELOPERS IN THEIR OWN WORDS(00:08:47) Brandt Bucher(00:10:49) Tian Gao(00:12:31) Hugo van Kemenade(00:16:35) Thomas Wow-ters(00:24:08) Yury Selivanov(00:29:33) Mark Shannon(00:30:56) Raymond Hettinger(00:32:06) Russell Keith-Magee(00:33:18) Mariatta(00:41:41) Larry Hastings(00:46:07) Barry Warsaw(00:53:10) Jelle Zijlstra(00:56:20) Alex Waygood(00:57:39) Gregory P. Smith(01:04:08) Petr Viktorin(01:04:49) Emily Morehouse-Valcarcel(01:08:27) Interlude: Łukasz was right for once(01:09:28) Lysandros Nikolaou(01:17:38) Dino Viehland(01:23:22) Carl Meyer(01:24:29) Eric Smith(01:32:00) Eric Snow(01:41:46) Janitor 1(01:50:01) Janitor 2(01:53:03) OUTRO