Python 3.14
新特性速查卡

Free-Threading · Copy-and-Patch JIT · t-Strings · Deferred Annotations · Interpreters · Zstd
3.14
Released 2025-10-07
CPython v3.14.0
🔓
自由线程
正式支持
Copy-Patch
JIT 实验
📝
t-Strings
模板字符串
🔄
延迟注解
PEP 649/749
📦
4 个
新模块
🔓 自由线程(无 GIL)PEP 703/779
# 启用方式
# 1. 使用自由线程二进制
python3.14t script.py

# 2. 运行时环境变量
PYTHON_GIL=0 python3.14 script.py
PYTHON_GIL=1 python3.14t script.py  # 强制启用GIL

# 检测运行模式
import sys
if hasattr(sys, '_is_gil_enabled'):
    ft = not sys._is_gil_enabled()
  • 单线程开销:约 5-10%
  • 多线程扩展:接近线性(4核≈3.5x)
  • 五大组件:QSBR · BRC · 关键区段 · Parking Lot · mimalloc
C 扩展需标记 Py_MOD_GIL 或适配后标记 Py_MOD_FREE_THREADED
Copy-and-Patch JIT 实验性
# 启用 JIT
PYTHON_JIT=1 python3.14 script.py

# 构建时启用
./configure --enable-experimental-jit
  • Tier 1:尾调用解释器(+3-5%)--with-tail-call-interp
  • Tier 2:uop 优化器(1.2-2x)
  • Tier 3:JIT 机器码(1.5-5x)
Stencil AOT 编译 + 运行时 Patch,比传统 JIT 编译快 100x。对类型稳定的数字循环效果最好。
📝 t-Strings 模板字符串 PEP 750
# t-strings 返回 Template 对象
name = "World"
t = t"Hello, {name}!"
str(t)  # "Hello, World!"

# 逐段访问(安全SQL/HTML)
from string.templatelib import Template, Interpolation
for part in t:
    if isinstance(part, str): ...  # 静态文本
    else: part.value, part.expr  # 插值
  • 对比 f-strings:延迟求值、可拦截、可转义
  • 安全场景:SQL 参数化 · HTML 转义 · i18n · DSL
🔄 延迟注解 PEP 649/749
# 无需 __future__ annotations!
# 前向引用自然工作
class Node:
    def __init__(self, next: Node|None=None):
        self.next = next

import annotationlib
from annotationlib import Format
ann = annotationlib.get_annotations(
    Node, format=Format.VALUE)
# VALUE=真实类型, STRING=字符串, FORWARDREF=对象
from __future__ import annotations软弃用,直接删除即可!

⚡ 类型系统更多变更

# UnionType = Union:| 语法完全统一
print(int | str)  # "int | str"(旧: "Union[int, str]")
isinstance(int|str, typing.Union)  # True!

# io.Reader/Writer 替代 typing.IO
from io import Reader, Writer  # 真正的 Protocol
📦 新模块
模块用途
annotationlib注解统一访问 API,三种 Format
concurrent.
interpreters
子解释器真并行,Channel 通信
string.
templatelib
Template / Interpolation 类
compression.
zstd
Zstandard 压缩(比 gzip 快 3-5x)
# InterpreterPoolExecutor
from concurrent.interpreters import InterpreterPoolExecutor
with InterpreterPoolExecutor(max_workers=4) as ex:
    results = list(ex.map(fn, tasks))
🔧 构建与命令速查
--disable-gil构建自由线程版
--with-tail-call-interp尾调用解释器
--enable-experimental-jit启用 JIT
PYTHON_JIT=1运行时启用 JIT
PYTHON_GIL=0/1运行时控制 GIL
python3.14t自由线程可执行文件
python -m asyncio ps/pstreeasyncio 任务内省(树形)
python -m pdb -p PIDpdb 远程附加
python -m jsonJSON 彩色格式化
📐 语法 & 内置变更

无括号 except PEP 758

try: risky()
except ValueError, TypeError:  # 无括号!
    handle()
# as 绑定时仍需括号: except (V,T) as e:

finally 控制流警告 PEP 765

# SyntaxWarning: 'return' in finally
# 将 return/break/continue 移出 finally

map(strict=True)

from builtins import map
list(map(fn, a, b, strict=True))
# 长度不一致抛 ValueError

NotImplemented TypeError

# 布尔上下文使用 NotImplemented → TypeError
# 正确写法:
if result is NotImplemented: return NotImplemented

float.from_number()

float.from_number(3)      # 3.0
float.from_number(10**400) # OverflowError

operator 新函数

from operator import is_none, is_not_none
list(filter(is_not_none, items))

UUID v6/v7/v8 RFC 9562

import uuid
uid = uuid.uuid7()  # 时间排序,适合DB主键
uuid.NIL, uuid.MAX  # 常量
📚 标准库改进精选
  • REPL:语法高亮、自动补全默认开启
  • asynciops/pstree CLI、capture/print_call_graphcreate_task(kwargs=...)、自由线程、双向链表
  • concurrent.futuresInterpreterPoolExecutor、forkserver 默认、terminate/kill_workers()
  • pathlibPath.copy/movePath.info 缓存
  • pdb:远程附加 -p PID、async 支持
  • argparse:彩色输出、suggest_on_error
  • inspectannotation_formatunquote_annotationsispackage()
  • jsonpython -m json 彩色 CLI、错误路径注释
  • unittestassertHasAttr/IsSubclass/StartsWith/EndsWith
  • heapqheapify_max/heappop_max 等大顶堆函数
  • loggingQueueListener 支持 with 语句
  • pickle:协议 5 默认
  • struct:F/D 复数格式符
  • http.server:HTTPS 支持、深色模式
  • faulthandler:C 栈追踪
🚨 迁移速查表
3.13 及之前3.14 状态替代方案
from __future__ import annotations软弃用直接删除(PEP 649 默认启用)
codecs.open()弃用open(encoding=...)
argparse.FileType弃用pathlib.Path + open()
os.popen/spawn*()软弃用subprocess
asyncio.ChildWatcher移除不再需要
ast.Num/Str移除ast.Constant
urllib.URLopener移除urllib.request.urlopen
Py_HUGE_VAL(C API)移除C99 HUGE_VAL
Py_IS_NAN/INFINITY移除C99 isnan/isinf
obj->ob_refcnt(Limited API)不透明化Py_REFCNT/Py_SET_REFCNT
⚠️ multiprocessing 默认启动方法从 fork 改为 forkserver(Linux);增量 GC 在 3.14.5 回退为分代 GC。
🛡️ 自由线程安全速查
操作安全
d[key], key in d✅ 无锁读
d[key] = v✅ 关键区段
lst.append(x)✅ 关键区段
lst[i]
counter += 1❌ 需锁
if k in d: d[k]❌ TOCTOU
不可变对象读取
# C 扩展关键区段
Py_BEGIN_CRITICAL_SECTION(self);
self->value = new_val;
Py_END_CRITICAL_SECTION();
🔌 C API 新增
  • PEP 741PyInitConfig 统一初始化
  • PEP 757PyLong_Export/FreeExport 零拷贝整数
  • PEP 768:远程调试 API
  • Py_NewRef / Py_XNewRef
  • PyObject_GetOptionalAttr
  • Py_Is(a, b)
  • PyUnicode_EqualToUTF8
🗂️ CPython 关键源码
文件功能
Python/ceval.c解释器循环
Python/qsbr.cQSBR 无锁回收
Python/jit.cCopy-Patch JIT
Python/optimizer.cTier 2 uop 优化
Objects/dictobject.c字典实现
Grammar/python.gramPEG 语法定义
InternalDocs/qsbr.md · jit.md
📜 Python 3.14 核心 PEPs
PEP 703 无 GIL(Phase 2)
PEP 744 JIT 官方特性
PEP 750 t-strings
PEP 649 延迟注解
PEP 749 annotationlib
PEP 734 多解释器 stdlib
PEP 784 Zstandard
PEP 758 无括号 except
PEP 765 finally 警告
PEP 741 配置 C API
PEP 757 整数导出 API
PEP 768 远程调试接口
PEP 761 Sigstore 替代 PGP
PEP 739 build-details.json
PEP 776 Emscripten Tier 3
PEP 779 自由线程受支持