languages/python/README.md

Python Language Overview & Ecosystem (2026)

Verified current CPython/tooling status for 2026: 3.14 free-threading now officially supported (PEP 779), the JIT compiler's process crisis (PEP 836), and the uv/Ruff/ty toolchain that has displaced pip/Black/flake8/mypy for new projects.

This is the index for the Python section. Everything below is a verified status snapshot, not tutorial material - the reader is assumed fluent in the language itself.

Interpreter status (verified July 2026)

ItemStatusDetail
Latest stable3.14.x (3.14 released 2025-10)3.15 is in beta (3.15.0b3), expected 2026-10
Free-threading (PEP 703)Officially supported, not default - PEP 779 accepted for 3.14Single-thread overhead now ~5-10% (down from ~40% at PEP 703 draft time); opt-in build (python3.14t). Phase 3 (default build) has no committed version yet.
JIT compilerIn process jeopardyThe Steering Council pulled it from "just ship it" status in June 2026, ruling PEP 744 (informational, unresolved open questions) never should have gated merging JIT code into main. New development on main is suspended; a successor spec, PEP 836 ("JIT Go Brrr"), must be accepted within 6 months or the JIT is removed from main entirely. Do not plan production performance work around the JIT's presence until PEP 836 lands.
3.15 JIT (if it survives)~4-12% geomean speedup over interpreter, register allocation added, unwind info for native debuggersContingent on PEP 836 outcome above

Practical read: pin free-threading adoption to workloads where you've already verified every C-extension dependency (NumPy, Pydantic's Rust core, DB drivers) supports PyGILDISABLED - see concurrency.md. Do not cite the JIT as a reason to avoid mypyc/Cython/PyPy for a current performance problem; its supported status is unresolved.

Toolchain (verified July 2026) - what actually displaced what

Old defaultCurrent defaultNotes
pip + pip-tools + virtualenvuv (Astral), 0.11.xSingle static binary, no root needed, manages its own Python builds. See project_structure.md.
Black + isort + flake8 + pyupgradeRuffOne binary, one config block in pyproject.toml. See codestyleguide.md.
mypy / Pyright as the only optionsmypy/Pyright plus ty (Astral), beta, 1.0 targeted 202610-60x faster than mypy/Pyright per Astral's own benchmarks (uncached); gradual-guarantee typed. Not yet a blind swap-in for mypy in CI - still beta.
requirements.txtpyproject.toml + uv.lockPEP 735 dependency groups now the standard place for dev/test deps. See project_structure.md.

Where to look

  • Packaging, layout, pyproject.toml, workspaces: project_structure.md
  • Style/lint/type-hint conventions and Ruff config: codestyleguide.md
  • Error handling, data modeling, logging decision rules: best_practices.md
  • asyncio/threading/multiprocessing/free-threading decision framework: concurrency.md
  • Profiling, compilation, caching: performance.md
  • pytest ecosystem specifics: testing.md
  • Framework guidance: frameworks/fastapi/bestpractices.md, frameworks/django/bestpractices.md

Sources