talkpython.fm
Episode #532 - 2025 Python Year in Review
### Key Points and Takeawayss #### 1. Free-Threaded Python: The GIL's Days Are Numberedd The most transformative development in Python for 2025 is the advancement of free-threaded Python, which removes the Global Interpreter Lock (GIL). Thomas Wouters, who championed this effort, confirmed that free threading has moved from experimental to officially supported status in Python 3.14. The performance overhead is remarkably small - basically the same speed on macOS (due to ARM hardware and Clang optimizations) and only a few percent slower on Linux with recent GCC versions. The main challenge now is community adoption: getting third-party packages to update their extension modules for the new APIs. Barry Warsaw called this "one of the most transformative developments for Python, certainly since Python 3." Early experiments show promising results, with highly parallel workloads seeing 10x or greater speedups. The PyTorch data loader, for example, has seen massive improvements by leveraging multiple threads. … The speed improvements fundamentally change how developers interact with type checking - it becomes a real-time feedback loop rather than a batch process. However, Gregory noted a challenge: different type checkers can disagree on whether code has errors, even on the same codebase. His research team built a tool that automatically generates Python programs causing type checkers to disagree with each other. The PyLands team at Microsoft is working with the Pyrefly team to define a Type Server Protocol (TSP) that would let type checkers feed information to higher-level LSPs. … #### 6. Lazy Imports Coming to Python (PEP 810)) Thomas Wouters mentioned lazy imports as his "second favorite child" topic - a PEP that was accepted in 2025 and will significantly improve Python startup time and import performance. This feature defers the actual importing of modules until they are first used, rather than loading everything at startup. The lazy imports PEP (810) had broad community support despite some very vocal opposition. Pablo Galindo, a Steering Council member, led the effort and bore the brunt of criticism despite the technical merits being clear. This feature will be especially impactful for applications with many imports that may not all be needed for every code path. … The Steering Council itself exists because Guido van Rossum received such abuse over PEP 572 (the walrus operator) that he stepped down as BDFL. Thomas shared that Pablo Galindo received "ridiculous accusations" in his mailbox simply for proposing lazy imports. Core developers sometimes skip the PEP process entirely to avoid this gauntlet, which is also problematic because important changes don't get properly documented or discussed. Barry believes Python needs to rethink how it evolves the language while not losing the voice of users. … #### 8. Concurrency Options Are Expanding (But Abstractions Will Help)) With free threading joining asyncio, multiprocessing, and subinterpreters, Python now has multiple concurrency approaches. Reuven asked how developers should choose between them. Thomas explained that most end users should not need to make these low-level choices - higher-level abstractions should handle it. Brett suggested using `concurrent.futures` as a unified interface where you start with threads (fastest), fall back to subinterpreters if needed, then to process pools. … ### Overall Takeawayy Python in 2025 stands at an inflection point where decades of foundational work are paying off in transformative ways. The removal of the GIL promises to unlock true parallelism, modern tooling like uv is abstracting away complexity that once frustrated beginners, and Rust-based type checkers are making static analysis feel instantaneous. Yet beneath these technical victories lies a community wrestling with sustainability - funding challenges, contributor burnout, and the difficulty of evolving a language used by millions through a 25-year-old proposal process.