Episodes
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)...
Published 10/29/24
Published 10/29/24
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)...
Published 10/03/24
We’ve been gone all Summer, visiting two European conferences in the mean time. In this episode we’re talking about them both, talks we liked, as well as our own talks at those events. In a rare turn of events, this one was recorded in person at Łukasz’s home studio in Poznań! ## Outline (00:00:00) INTRO (00:01:30) PART 1: EuroPython highlights (00:02:03) Maintaining pyrepl forward with pypy (00:05:51) Mai Giménez and her keynote (00:09:30) Yuliia Barabash and Laysa Uchoa talk...
Published 09/03/24
In this lucky episode we're interviewing fellow core developer Brandt Bucher to talk about Justin, Swedish warships, and the n-body benchmark. We're also breaking the duration record with this one. We promise we'll get faster in future releases! ## Outline (00:00:00) INTRO (00:01:43) PART 1: BRANDT BUCHER INTERVIEW (00:03:04) Beginnings of contribution (00:06:29) Sticking around (00:09:38) PEP work: pattern matching, dict unions, weird decorators (00:13:07) Implementing pattern...
Published 06/29/24
You think you know Python? We thought so, too. Join us for an episode of surprises. You might know some of those, but you sure don't know all of them. ## Outline (00:00:00) INTRO (00:02:22) Integer interning with a twist (00:10:58) Return in finally (00:15:32) all([[]]) (00:20:06) Lists, iterators and hashing shenanigans (00:27:08) hash(-1) (00:31:30) String interning (00:34:23) PR OF THE WEEK (00:34:56) asyncio REPL now uses pyrepl, too (00:44:06) PyOS_InputHook (00:51:56) WHAT'S GOING ON...
Published 06/10/24
Who says we can't do short episodes? Well, it was a challenge! But with the help of some gentle conference schedule pressure, here's our first sub-hour episode. We're discussing the language summit, answering audience questions, and behaving like serious professionals, as usual. ## Outline (00:00:00) INTRO (00:02:01) PEP 602 tweaks: 2 years of bug fix releases (00:02:45) CalVer for Python versions? (00:04:51) In Python there's this thing called the C API (00:08:51) More about...
Published 05/28/24
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...
Published 05/03/24
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)...
Published 03/14/24
The suspense was killing us! OK, the old parser was then... but what about NOW? We're finally answering this question... in more detail than you dared to ask for. PEG, memoization, funky secrets, and how a certain auto-formatter self-inflicted an existential crisis on itself. It's all there, told in barely 100 minutes! Can you believe it? # Timestamps (00:00:00)  INTRO (00:00:54)  PART 1: What even is PEG? (00:04:02)  You can't prove anything! (00:05:03)  What's a "parsing...
Published 03/01/24
Context-free grammars, non-deterministic finite automatons, left-to-right leftmost derivations... what even is all that?! Today we're talking about how Python parses your source code. We start gently with how this worked in the past. Come listen to Łukasz's high-level explanations and Pedantic Pablo's "well actuallys". # Timestamps (00:00:00) INTRO (00:01:35) You can still download Python 1.0! (00:02:19) The original tokenizer (00:03:10) What even is a tokenizer? (00:04:08) FUN...
Published 01/31/24
Happy New Year! In this episode we're talking about exceptions, how they work, and how they evolved. Expect the unexpected. # Timestamps (00:00:00)  INTRO (00:01:43)  How does a 'try' block work? (00:04:00)  How many 'try' blocks can you fit on a bus? (00:05:56)  How does Python store the current exception? (00:09:30)  Pre-history: exceptions as strings (00:12:59)  Try out string exceptions with CentOS 5 (00:14:28)  PEP 341: Combining 'finally' and 'except' in one 'try'...
Published 01/08/24
This time we're hosting a special guest: Carl Meyer from Meta. What is Cinder, how does it work, and how does it intersect with the future of Python 3? Find out in today's episode. 100% serious stuff! # Timestamps (00:00:00)  INTRO (00:00:53)  Carl Meyer's war story (00:02:27)  CINDER (00:03:22)  Static Python makes things significantly faster (00:08:15)  Cinder JIT and how it's tuned for Instagram (00:11:57)  Strict Python and the joy of import side effects (00:16:35)  The static...
Published 12/11/23
What makes Python an interpreter? Today we're talking about ceval.c, the wonders of frame evaluation, and how it changed over the years. # Timestamps (00:00:00)  INTRO (00:00:59)  BACK TO PYTHON 2.6 (00:02:53)  Stack virtual machine (00:04:41)  First encounter with opcodes (00:08:06)  What even is frame evaluation? (00:12:51)  Stack! Which stack? (00:15:46)  PRESENT DAY (00:16:41)  Computed gotos (00:21:22)  PEP 523: JIT me, maybe (00:26:53)  Let's generate the...
Published 11/29/23
What happens when you type “import abc”? Why does it say the module is frozen? What significant changes landed in Python in the past two weeks? And why does the “PR of the Week” jingle go so hard? Find out in this week’s episode! # Timestamps (00:00:00)  INTRO (00:01:12)  IMPORTS (00:02:21)  Here be dragons (00:02:42)  High level summary (00:05:12)  Finders and Loaders (00:06:29)  Loading encrypted modules (00:08:13)  Debugging by altering someone else's code (00:10:08)  Support...
Published 11/13/23
We've read the PEP on making the Global Interpreter Lock optional so you don't have to. Timestamps (00:00:00) Intro (00:00:50) CURRENT STATE OF THINGS (00:00:58) Reference counting (00:01:35) Garbage collection (00:02:33) What is the Global Interpreter Lock? (00:03:57) The GIL and threading (00:07:24) Current ways around the GIL (00:09:26) HISTORICAL ATTEMPTS TO REMOVE THE GIL (00:09:46) 1999: Greg Stein's attempt at Python 1.6 (00:10:46) Jython doesn't have the...
Published 10/30/23
In this first episode Pablo and Łukasz talk about what happened in at the 2023 Cpython Core Developer sprint. Join us and learn from our ramblings about a possible new CPython new JIT compiler, how we are making the REPL easier, what in the world is a memory hive, and how we are trying to make a new C API without making everyone mad. Timestamps (00:00:00) Intro (00:01:02) Cpython core developer sprint (00:04:54) Pablo's highlights (00:06:09) Łukasz's highlights (00:08:08) Coverage...
Published 10/30/23