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!

  1. 08/03/2025

    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

  2. 03/05/2024

    Episode 10: The Interactive REPL

    Oof, no episode in April, huh? Yeah, we're getting close to Python 3.13 beta 1. PyCon US is also coming up real soon. Let's use this opportunity then to talk about a feature we're teaming up on: a better interactive interpreter! ## Outline (00:00:00)  INTRO (00:01:53)  PART 1: History of Terminals (00:03:20)  /dev/tty (00:04:51)  The first cool word (00:05:45)  Chrząszcz (00:06:20)  Control code characters in ASCII (00:11:54)  PART 2: Python REPL Today (00:12:34)  There is no REPL (00:15:28)  So what is there instead? (00:19:13)  readline (00:25:38)  Source in the REPL (00:31:13)  Implementing a REPL from scratch? Prepare to support arg: 5 (00:36:09)  PART 3: PR OF THE WEEK (00:37:09)  Introducing: Complaining Pablo (00:38:23)  Tests are always green if you skip them (00:39:57)  Getting dirty with escape sequences (00:41:28)  Typing finds bugs (00:42:29)  Shiny new features of the new REPL (00:45:55)  Contributing back to PyPy (00:48:10)  We still have two weeks, right? (00:49:59)  Is Python synthwave enough? (00:51:57)  Do we have a bug? (00:55:31)  What's lurking in pydoc? (00:59:38)  PART 4: WHAT'S HAPPENING IN CPYTHON? (01:02:39)  PEP 744: The JIT (01:06:05)  Incremental GC is now actually in (01:08:21)  Tier 2 interpreter updates (01:10:29)  Python supported on iOS with PEP 730 (01:13:11)  Better error messages for name shadowing (01:15:17)  Queue.shutdown() (01:17:14)  ctypes adopts heap types (01:18:26)  Free-threading updates (01:20:14)  Dataclass creation is faster (01:20:44)  OUTRO

  3. 14/03/2024

    Episode 9: Py Day with Emily Morehouse-Valcarcel

    Let's talk about the Steering Council, running a small consultancy business, the Walrus, and pet peeves with our special guest today! ## Outline (00:00:00)  INTRO (00:00:56)  PART 1: Emily Morehouse (00:02:15)  Running a small consultancy business (00:04:39)  What features of JS do you miss in Python? (00:05:50)  Łukasz outnumbered in a world of Steering Council members (00:06:12)  Upgrading to new Python versions (00:07:00)  It depends on who deployed the project (00:09:44)  Second term as a Steering Council member (00:11:33)  Barry, play some bass for us (00:13:04)  Let's hear a recent war story (00:15:17)  Is this progress bar even working? (00:17:40)  The Villain Origin Story (00:21:37)  Emily, The Bringer of Doom (00:22:37)  Consensus within the Steering Council (00:25:52)  Syntax changes in Python are rare, right? Right? (00:28:22)  On implementing PEP 572 (00:32:52)  How would PyCon 2020 in Pittsburgh feel? (00:34:18)  How can you be mad about the Walrus? (00:36:10)  Favorite parts of the standard library (00:38:10)  Is hacking on Python a good experience to newcomers? (00:40:26)  Emily's pet peeve about Python, take 1 (00:42:17)  Emily's favorite change in Python in recent years (00:44:34)  Emily's pet peeve about Python, take 2 (00:46:34)  Łukasz's pet peeve (00:48:25)  Surprise extra question (00:49:42)  At core.py we are professionals (00:51:00)  PART 2: PR of the Week (00:54:00)  CALL TO ACTION: Upgrade Python.org to Django 4! (00:56:22)  PART 3: What's Going On in CPython? (00:56:38)  Faster Python updates (01:00:10)  Free threading: GIL can be disabled but we're not done yet! (01:04:17)  New defaults for SSL context flags (01:05:39)  python -m asyncio and sys.__interactivehook__ (01:06:24)  Surprise question: what is sys.__interactivehook__ even doing? (01:08:11)  OUTRO

About

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!

You Might Also Like