Python 3.14 adds template strings, deferred annotations, and subinterpreters, plus free-threaded mode, an experimental JIT, and Sigstore verification.
Python 3.14 was released today. It happens to land on the digits of π, and the release team leaned into it with pie-themed art and a nod to Mike Keith’s Near a Raven. Under the hood, 3.14 delivers major updates including template string literals, deferred annotation evaluation, and official support for subinterpreters in the standard library, along with ongoing work on free-threaded execution and an experimental JIT compiler.
It’s one of Python’s most substantial updates in years, marking steady progress toward a more concurrent, flexible, and secure runtime.

Release logo credit: Python 3.14 & 3.15 release manager and core developer Hugo van Kemenade
Major Highlights#
The most visible new feature is template string literals (PEP 750), introducing t-strings: a new literal form that looks like f-strings but produces a reusable template object instead of immediately interpolating values. Developers can render or process these templates later, enabling safer handling of dynamic content in templating, code generation, and data formatting.
Deferred annotation evaluation (PEPs 649 and 749) changes how type hints are handled by storing them as unevaluated expressions until needed. This resolves long-standing issues with forward references, reduces import-time overhead, and improves interoperability with type checkers and runtime frameworks that inspect __annotations__.
The third headline addition brings long-requested support for multiple isolated interpreter instances to the standard library (PEP 734). The new concurrent.interpreters module lets developers create and manage separate interpreters within a single process, a major step toward safer concurrency models and sandboxed execution without relying on subprocesses.
Performance and Concurrency#
Python 3.14 officially supports free-threaded Python (PEP 779), advancing the ongoing effort to remove the Global Interpreter Lock. The free-threaded build, introduced experimentally in 3.13, now allows true parallel execution of Python bytecode across threads. While it’s still opt-in and carries some single-threaded performance trade-offs, its promotion to supported status marks a key milestone in Python’s multi-core work.
An experimental just-in-time compiler is also included in the official macOS and Windows binaries. Disabled by default, the JIT can be enabled with the PYTHON_JIT=1 environment variable for testing. Early benchmarks are mixed, but including it in the release shows the core team’s willingness to experiment with new approaches to runtime optimization.
Developer Experience and Debugging#
Python 3.14 adds a zero-overhead external debugger interface (PEP 768), allowing tools to safely attach to running processes. The update also introduces new asyncio commands (python -m asyncio ps and python -m asyncio pstree) that make it easier to inspect active tasks and event loops. Error messages continue to improve, with clearer syntax hints and better control-flow diagnostics.
Standard Library and Platform Updates#
Python’s standard library continues to expand with Zstandard compression support (PEP 784). The new compression.zstd module provides a fast, modern alternative to gzip and bzip2, and integrates with tarfile, zipfile, and shutil for built-in use.
Platform support also widens: official Android binaries are now available, and Emscripten has been promoted to Tier 3 support, extending Python’s reach into browser and embedded environments.
Build and Security Changes#
PEP 761 replaces PGP signatures for release artifacts with Sigstore-based verification, improving transparency and integrity for Python’s release process. Each distribution now also includes a build-details.json file (PEP 739) containing machine-readable metadata to support reproducible builds.
For full details, see Python's documentation of the release: What’s New in Python 3.14.
Subscribe to our newsletter
Get notified when we publish new security blog posts!
Try it nowReady to block malicious and vulnerable dependencies?