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
--------
2:01:23
--------
2:01:23
The Megahertz
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
--------
1:42:23
--------
1:42:23
PyCon US 2025 Recap
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
--------
1:36:11
--------
1:36:11
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
--------
1:19:11
--------
1:19:11
Episode 21: A Garbage Episode
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
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!