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.

python
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.

python
# 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.

python
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()

Sources