Python 3.13.0 Is Released
Free-Threaded / No-GIL Python and Performance
- Many are excited about free-threaded execution and optional GIL removal, hoping it will make multithreading truly useful for CPU-bound tasks and simplify designs compared to multiprocessing.
- Others argue Python’s inherent performance limits mean heavy CPU work should still be offloaded to faster languages.
- Counterpoint: variable access is not “all hash-table lookups” anymore; modern CPython has optimized opcodes and slots.
- Debate over “mental cost”: some say only runtime implementers pay the extra complexity, others say all users bear it via new concurrency pitfalls.
Language Stability, Deprecations, and Backward Compatibility
- Several note that recent 3.x versions (3.11–3.13) focus more on implementation (JIT, free-threaded, REPL) than new syntax, which is widely welcomed.
- Deprecations are now enforced more aggressively; old stdlib modules are being removed, with the expectation that most users can swap in third‑party replacements or vendor copies.
- Some complain Python “breaks things constantly,” comparing unfavorably with other ecosystems; others counter that breaking changes are usually motivated and documented, though not everyone reads release notes.
Imports and Multiprocessing Changes
- Import system pain points: circular imports, path hacks, and especially local modules shadowing stdlib modules. 3.13 improves error messages but doesn’t solve future-name collisions.
- There was a rejected PEP for lazy imports; some think it’s still worth revisiting.
- Upcoming change: default
multiprocessingstart method on Unix will switch away fromfork(likely in 3.14), breaking workloads that rely on cheap snapshotting of large in-memory structures. - Some argue
forkas default was a long-standing footgun in threaded code; others say silently changing defaults is dangerous and should at least require an explicit choice.
New REPL and Tooling
- New REPL brings multiline editing, colored prompts, better history, and special modes (help, paste), seen as a major usability upgrade.
- Concerns about missing vi mode and compatibility with alternative REPLs (e.g., IPython, ptpython); some plan to keep using those.
- Discussion of environment management: strong advocacy for pyenv/uv and per-project virtualenvs over relying on OS Python, though some still find system Python fine for small scripts.
Release Adoption Strategies
- Common heuristics: use “n‑1” Python version in production, wait for wheels for all deps, and rely on robust CI to catch breaks.
- Cloud runtimes (e.g., Azure Functions) are criticized for lagging behind new Python versions.
- Some prefer other languages (Go, Rust) for new projects due to perceived Python churn, though others continue to embrace new features like advanced typing (
TypeGuard,TypeIs).