1712665877
core.py

Advertise on podcast: core.py

Rating
★★★★★
5
from
18 reviews
This podcast has
29 episodes
Language
English
Date created
2023/10/19
Latest episode
2026/01/03
Average duration
111 min.
Release period
33 days

Description

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!

Unlock core.py podcast Email contact info,
Listeners & Audience details

Email contact information

Direct podcast contact details

Listeners

Audience numbers & engagement insights

Audience details

Podcast Insights

Podcast episodes

Check latest episodes from core.py podcast


Episode 28: 2025 In Review
2026/01/03
Let's take a breather from heavy content and take a look back at last year in this light but spicy episode! The good, the less good, and the disgusting. All that in barely an hour! ## Timestamps (00:00:00) INTRO (00:01:32) Pablo Galindo SPACE (00:06:20) PART 1: 2025 - the good, the uncertain, and the disgusting (00:07:06) Good: free threading (00:15:34) Good: remote debugging (00:17:31) Good: Python Installation Manager on Windows (00:19:44) The juicy bits (00:20:12) Uncertain: the JIT (00:21:04) Uncertain: Steering Council elections (00:25:01) Uncertain: another type checker (00:28:57) The TIOBE index (00:34:03) Mojo (00:38:12) Underinvestment (00:44:53) The Future (00:56:41) PART 2: PR OF THE WEEK (01:05:32) PART 3: WHAT'S GOING ON IN CPYTHON (01:08:00) Performance (01:11:47) Free threading (01:14:04) OUTRO
Episode 27: Calling Things, Part 1
2025/12/07
Inside of you there are two stacks. Actually, there’s three. The system-level call stack, the CPython call stack, and the interpreter’s evaluation stack. What is all that about? Today we’ll talk about how synchronous Python function calls work. Async stuff comes next time! ## Timestamps Here you go — all square brackets changed to parentheses: (00:00:00) INTRO (00:02:28) PART 1: CALLING THINGS (00:04:19) The Lawful Good Language (00:13:18) Why is there a call stack? (00:19:45) Python functions are not tied to the system call stack (00:23:22) What's in a Python frame? (00:23:35) Execution book-keeping data (00:24:21) Locals (00:27:35) The interpreter evaluation stack (00:28:34) What are register-based interpreters? (00:36:33) Interpretation using the evaluation stack (00:42:46) Executing a function (00:45:37) How do exceptions fit into the execution model? (01:05:51) PART 2: PR OF THE WEEK (01:15:48) PART 3: DONATE.PYTHON.ORG (01:17:21) PART 4: WHAT'S GOING ON IN CPYTHON (01:27:59) Free threading changes (01:38:16) Performance (01:51:08) Bugfixes (02:04:03) OUTRO
Episode 26.2: CPython Sprint Week in Cambridge UK, Part 2
2025/10/25
More interviews from the core sprint! This time we have: Greg P. Smith, Thomas Wouters, Paul Ganssle, Pradyun Gedam, Carol Willing, Guido van Rossum, Brett Cannon, Erlend Aasland, Tal Einat, Lysandros Nikolaou, Yury Selivanov, and Diego Russo -- the organizer himself. ## Timestamps (00:00:00) INTRO (00:01:51) Greg P. Smith (00:07:57) Thomas Wouters (00:16:33) Paul Ganssle (00:28:28) Pradyun Gedam (00:34:02) Carol Willing (00:43:32) Guido van Rossum (00:55:39) Brett Cannon (01:10:01) Erlend Aasland (01:14:05) Tal Einat (01:22:21) Lysandros Nikolaou (01:30:40) Yury Selivanov (01:45:08) Diego Russo (01:58:27) What did the hosts do? (02:17:18) OUTRO
Episode 26.1: CPython Sprint Week in Cambridge UK, Part 1
2025/10/15
What? What do you mean this two-and-a-half hour episode is PART 1? Well, there were fifty people at the sprint in September. We interviewed thirty of them. In Part 1 you can hear from 18 of them: Ken Jin, Alex Waygood, Russell Keith-Magee, Sam Gross, Steve Dower, Dino Viehland, Petr Viktorin, Peter Bierma, Eric V. Smith, Hugo van Kemenade, Savannah Bailey, Eric Snow, Brandt Bucher, Antonio Cuni, Larry Hastings, Hood Chatham, Victor Stinner, and Mark Shannon. ## Timestamps (00:00:00) INTRO (00:02:43) Ken Jin (00:05:28) Alex Waygood (00:08:21) Russell Keith-Magee (00:17:32) Sam Gross (00:23:25) Steve Dower (00:26:17) Dino Viehland (00:36:02) Petr Viktorin (00:40:59) Peter Bierma (00:44:24) Eric V. Smith (00:55:25) Hugo van Kemenade (00:59:39) Savannah Bailey (01:08:53) Eric Snow (01:22:02) Brandt Bucher (01:38:53) Antonio Cuni (01:48:23) Larry Hastings (02:07:54) Hood Chatham (02:12:11) Victor Stinner (02:16:23) Mark Shannon (02:22:44) OUTRO
Episode 25: A Python That Never Was
2025/08/26
What if some rejected PEPs were actually accepted? How would Python look today? Let's go through 10 PEPs from the past and imagine an alternative future for the language! ## Timestamps (00:00:00) INTRO (00:01:00) PART 1: What if rejected PEPs were accepted? (00:02:15) PEP 638: Syntactic Macros (00:13:53) PEP 505: None-aware operators (00:37:12) PEP 671: Late-bound function argument defaults (00:44:40) PEP 335: Overloadable Boolean Operators (00:50:53) PEP 3136: Labeled break and continue (00:52:49) PEP 463: Exception-catching expressions (01:00:58) PEP 511: API for code transformers (01:06:30) PEP 340: Anonymous block statements (01:10:30) PEP 276 and PEP 284: Alternative integer iteration (01:17:12) The do: while: loop (01:19:50) The final boss of Python syntax feature requests (01:25:33) PART 2: PR OF THE WEEK (01:36:17) Raw f-string format fixes (01:38:44) PART 3: WHAT'S GOING ON IN CPYTHON (01:40:55) Python 3.14 RC2 and Python 3.13.7 (01:43:20) Welcome to the core team, Emma (01:43:50) Welcome to the release team, Savannah (01:45:56) Free threading changes (01:47:49) Perf improvements (01:52:00) New features (01:57:20) Bugfixes (01:59:15) OUTRO
The Megahertz
2025/07/12
Python 3.14? That's old news. Let's talk about the first big feature of Python 3.15 -- a built-in sampling profiler for Linux, macOS, and Windows. We also cover improvements in perf support, discuss memory.python.org, and as usual, recent changes in the codebase. ## Timestamps (00:00:00) INTRO (00:02:43) PART 1: THE SAMPLING PROFILER (00:05:07) Built-in profile is bad, long live cProfile (00:10:54) Out-of-process profiling (00:12:18) Shortcuts Compromise Accuracy, Leading Eventually to Numerous Errors (00:16:07) Selfish Łukasz vs benevolent Pablo (00:23:11) How does a sampling profiler even work? (00:30:42) One meeellion huuurtzzz (00:32:40) Free threading makes it extra spicy (00:41:26) AsyncIO makes it even spicier (00:49:49) You made this? I made this (00:54:06) What if the profiled process changes during sampling? (00:57:33) Coming in October 2026 (01:04:30) PART 2: PR OF THE WEEEEEEK (01:14:14) memory.python.org launched (01:23:15) PART 3: WHAT'S GOING ON IN CPYTHON (01:26:45) Performance updates (01:30:24) Features & Curiosities (01:41:45) OUTRO
PyCon US 2025 Recap
2025/06/13
We’ve been gone a while. Here’s our excuse for being silent for a month: PyCon, PyCon, something something security. Come listen to how the conference looked like from our perspective! And whatever you do, DO NOT upgrade to Python 3.13.4. ## Timestamps (00:00:00) INTRO (00:01:06) PART 1: LANGUAGE SUMMIT (00:04:47) A bit about the Summit talks (00:06:19) Is free-threading happening? (00:09:20) Łukasz and his favorite discussion item at the Summit (00:13:38) Find actual competent coverage of the Summit on the PSF blog (00:14:17) PART 2: PYCON TALK HIGHLIGHTS (00:14:33) Cory Doctorow's opening keynote (00:18:17) Brandt Bucher's talk on JIT challenges (00:28:28) Lysandros and Nathan talk about community adoption of free-threading (00:36:23) Lynn Root's keynote (00:37:46) PyXL: Python-oriented chip (00:39:47) Łukasz and his tutorial on WebGL with PyScript (00:47:58) A new bet appears! (00:48:14) Zoom, Enhance the Banana (00:54:11) Watch out, Łukasz is talking about audio again (01:02:42) Ivona and Pablo talk about remote code execution as a service (01:05:44) Core Python sprints after the conference (01:12:48) PART 3: PR OF THE WEEK (01:13:00) tarfile security fixes (01:19:13) Pablo's PR: strncmp considered harmful (01:25:36) PART 4: WHAT'S GOING ON IN CPYTHON (01:26:06) compression.zstd lands (01:28:01) concurrent.futures → asyncio.Future transfer 4X faster (01:29:14) Bugfix: PyCFuncPtr_call no longer uses locks (01:30:13) Some curiosities (01:34:14) OUTRO
Beta Frenzy
2025/05/06
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
Episode 21: A Garbage Episode
2025/04/17
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 F*****G 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 20: Remote Code Execution By Design
2025/03/24
In this episode, Pablo's avoiding the topic of garbage collection by talking about his latest PEP, which allows unprecedented interaction with a running Python process. We also resolve the bet about reference counting semantics, mention some notable changes in Python since the last episode, and discuss syntax highlighting in PyREPL and why it's bad, actually. ## Timestamps (00:00:00) INTRO (00:02:16) PART 1: PABLO'S LATEST PEP (00:04:34) gdb is IMPOSSIBLE (00:12:49) Make the process run code for you (00:14:14) This already works on PyPy (00:15:13) How does it work? (00:25:38) Why a file? (00:31:15) What if you don't trust Pablo? (00:32:57) sys.remote_exec() (00:36:09) Less obvious use cases (00:46:56) PART 2: BETS (00:55:44) PART 3: PR OF THE WEEK (00:55:50) Łukasz: syntax highlighting in PyREPL (01:10:14) Pablo's PR: allow the parser to activate future imports on the fly (01:20:11) PART 4: WHAT'S GOING ON IN CPYTHON (01:20:22) Free threading (01:23:30) Performance (01:34:41) PEP 765 implemented (01:36:08) concurrent.futures.Executor.map(buffersize=) (01:36:57) io.Reader and io.Writer (01:38:40) Pabluco's linecache fetching interactive source code (01:41:25) ast.unparse() roundtrip with semicolons (01:41:59) OUTRO
Episode 19: Async hacks, unicorns and velociraptors
2025/03/08
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
Episode 18: Reference Counting
2025/01/24
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
Episode 17: Argparse, JIT, and balloons with Savannah Ostrowski
2024/11/19
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
Episode 16: Memory Allocation
2024/10/29
How does Python handle memory? Why does it need to perform custom forms of memory allocation? We talk about all that in this episode. We don't talk about Easter eggs, and we never mention Brandt by name, as promised last time! ## Timestamps (00:00:00) INTRO (00:00:22) PART 0: SPORTS NEWS (00:01:57) PART 1: MEMORY ALLOCATION (00:03:46) If you write C correctly, it manages memory for you (00:05:38) malloc and the heap (00:09:31) High-level allocators (00:10:48) pymalloc (00:11:15) 512 is a good number (00:12:43) Memory domains in pymalloc (00:15:09) Why is pymalloc faster than just using malloc? (00:20:16) To free or not to free (00:26:35) User-facing features of pymalloc (00:30:40) Łukasz replaced by an LLM Sim... almost (00:32:58) Debugging help with marked memory (00:39:24) 8-byte alignment (00:42:27) cymem (00:45:08) tracemalloc (00:49:12) memray (00:50:47) Coding like an ultravillain (00:55:22) Complaining about Apple (01:01:45) PART 2: PR OF THE WEEK (01:13:46) Pablo's buildbot release status page (01:18:26) PART 3: WHAT'S GOING ON IN CPYTHON (01:18:52) PEP 762 (01:22:30) PEP 758 (01:26:10) Performance updates (01:29:14) Argparse suggests correct spelling (01:30:13) Fraction.from_number() and Decimal.from_number() (01:30:39) switched in contextvars (01:31:42) Better type annotations in pydoc signatures (01:33:33) Fixes in TaskGroup and _PyFuture ref cycles (01:34:03) Data race in ZoneInfo (01:35:53) Testing certificates set to expire far in the future (01:36:32) InternalDocs (01:40:22) There are no Easter eggs (01:40:42) OUTRO
Episode 15: Core sprint at Meta
2024/10/03
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

Podcast reviews

Read core.py podcast reviews


5 out of 5
18 reviews

Podcast sponsorship advertising

Start advertising on core.py relevant audience podcasts


What do you want to promote?