Overview
Python 3.14, released on October 7, 2025, introduces t-strings, deferred annotations by default, and continues work on free-threading and the JIT compiler.
Main Features
T-strings (PEP 750)
T-strings (t"...") are template strings that capture interpolations as structured data instead of evaluating them immediately. They enable safe, customizable processing of inserted data.
from string.templatelib import Template
name = "O'Brien"
template = t"SELECT * FROM users WHERE name = {name}"
# template is a Template object, not a str
print(type(template)) # <class 'Template'>
# Access static parts and interpolations
for part in template:
print(part)
Deferred annotations (PEP 649)
Type annotations are now evaluated lazily by default. There is no longer a need to use from __future__ import annotations. Forward references work natively.
# No more need for from __future__ import annotations
class Tree:
def __init__(self, value: int, children: list[Tree] | None = None):
self.value = value
self.children = children or []
# Forward reference 'Tree' works natively
t = Tree(1, [Tree(2), Tree(3)])
Free-threading and JIT
The experimental free-threaded mode (no GIL) and JIT compiler continue to mature. Free-threading enables true parallelism between Python threads. The JIT improves performance for CPU-intensive loops.
import sys
# Check free-threaded mode
print(sys._is_gil_enabled()) # False if free-threaded
# JIT is enabled at build time:
# ./configure --enable-experimental-jit
# Free-threading: true parallelism
import threading
results = []
def compute(n):
results.append(sum(range(n)))
threads = [threading.Thread(target=compute, args=(10**7,)) for _ in range(4)]
for t in threads: t.start()
for t in threads: t.join()
