菜单

版本历史与演进

相关源文件

本文档追溯了 Python 通过其主要版本和功能的发展历程,记录了 CPython 在语言、运行时和实现细节方面随时间的重大变化。有关字节码解释器和优化当前实现细节的具体信息,请参阅代码执行管道,有关内存管理演进的信息,请参阅对象系统与内存管理

Python 版本时间线

自 1991 年首次发布以来,Python 已取得了显著的进步。以下是突出关键功能和变化的主要版本时间线。

来源:Doc/whatsnew/3.13.rst1-201 Doc/whatsnew/3.12.rst1-60 Doc/whatsnew/3.11.rst1-50 Doc/whatsnew/3.14.rst1-50

主要版本过渡

Python 2.x 到 3.x 的过渡

从 Python 2.x 到 3.x 的过渡代表了 Python 历史上最重大的断裂。Python 3.0(发布于 2008 年 12 月)为了解决根本性的设计问题,故意不向后兼容。

  • 文本与二进制数据区分(str vs. bytes)
  • 默认情况下使用 Unicode 进行字符串处理
  • print 成为函数而非语句
  • 整数除法行为改变(3/2 = 1.5,而不是 1)
  • 许多函数(range、map 等)使用迭代器而非列表
  • 移除旧式类

此次过渡导致了 Python 2.x 和 3.x 双版本并存的漫长时期。Python 2.7(发布于 2010 年 7 月)成为最后一个 2.x 版本,支持期延长至 2020 年 1 月 1 日。

来源:Doc/whatsnew/2.7.rst1-50 Doc/whatsnew/2.6.rst1-20

Python 3.x 演进

让我们回顾一下 Python 3 开发的关键里程碑。

近期主要版本

来源:Doc/whatsnew/3.13.rst50-120 Doc/whatsnew/3.12.rst55-150 Doc/whatsnew/3.11.rst52-150 Doc/whatsnew/3.14.rst58-120

Python 3.11 (2022)

Python 3.11 的主要改进包括:

  • 性能:通过专门的自适应解释器,比 Python 3.10 快 10-60%。
  • 异常组和 except* 语法 (PEP 654)
  • Traceback 中的精细化错误位置
  • 低影响监控 API (PEP 669)

Python 3.12 (2023)

Python 3.12 的主要功能包括:

  • 类型参数语法和 type 语句 (PEP 695)
  • f-string 在语法中被正式化 (PEP 701)
  • 每个解释器的 GIL (PEP 684)
  • 列表推导式内联 (PEP 709)
  • 从 Python 访问缓冲区协议 (PEP 688)
  • 移除 distutils (PEP 632)

Python 3.13 (2024)

Python 3.13 的主要功能包括:

  • 自由线程模式(可选 GIL),支持真正的并行执行 (PEP 703)
  • 实验性 JIT 编译器
  • 更优的交互式解释器,支持多行编辑
  • 改进的错误消息,默认彩色显示
  • locals() 定义了可变语义 (PEP 667)
  • 移动平台支持(iOS 和 Android)

Python 3.14 (计划于 2025 年发布)

Python 3.14 的即将推出的功能包括:

  • 注解的延迟求值 (PEP 649)
  • 安全的外部调试器接口 (PEP 768)
  • Python 配置 C API (PEP 741)
  • 允许 exceptexcept* 表达式无需括号 (PEP 758)
  • 尾调用优化解释器以提高性能

来源:Doc/whatsnew/3.14.rst67-400 Doc/whatsnew/3.13.rst97-350 Doc/whatsnew/3.12.rst90-320 Doc/whatsnew/3.11.rst110-350

稳定 ABI 和兼容性

稳定 ABI(应用程序二进制接口)于 Python 3.2 (PEP 384) 引入,旨在为扩展模块在不同 Python 版本之间提供二进制兼容性。

稳定 ABI 包括:

  • 核心类型对象(PyLong_TypePyBool_Type 等)
  • 对象操作函数(PyObject_GetAttrPyArg_Parse 等)
  • 内存管理函数(Py_INCREFPy_DECREF 等)
  • 扩展模块 API(PyModule_Create 等)

针对稳定 ABI 编译的扩展可以在多个 Python 版本之间工作而无需重新编译,从而支持 Python 生态系统的增长。

来源:Misc/stable_abi.toml1-100 Doc/data/stable_abi.dat1-100 PC/python3dll.c1-50

核心系统演进

解释器执行管道演进

CPython 解释器执行模型在最近几个版本中得到了显著的演进。

  • Python 3.11:添加了专门的自适应解释器,该解释器创建代码对象的专用版本以实现更快的执行(性能提升 10-60%)。
  • Python 3.12:引入了每个解释器的 GIL,允许多个解释器并行运行。
  • Python 3.13:添加了自由线程模式选项,允许禁用 GIL 以实现真正的并行执行。
  • Python 3.13:添加了实验性 JIT 编译器,默认禁用。
  • Python 3.14:引入尾调用优化解释器以实现显著的性能提升。

来源:Doc/whatsnew/3.13.rst300-420 Doc/whatsnew/3.14.rst350-398

对象系统演进

Python 的对象系统在保持兼容性的同时得到了持续的改进。

  • Python 3.0:统一了类型系统,移除了旧式类。
  • Python 3.8:引入了 Vectorcall 协议以加快函数调用速度。
  • Python 3.11:更小的 PyObject 结构 (PEP 623)
  • Python 3.13:对象支持自由线程,具有每个对象的互斥锁。

在 Python 3.13 中,核心对象结构已扩展以支持自由线程。

来源: Include/object.h109-164 Doc/whatsnew/3.13.rst300-350

模块系统与标准库演进

标准库得到了显著的演进

模块移除与弃用

Python 3.11 通过 PEP 594 弃用了许多遗留模块,这些模块已在 Python 3.13 中被移除

  • 3.13 中移除的模块:aifc, audioop, cgi, cgitb, chunk, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib
  • Python 3.12 移除了 distutils(已被 setuptools 和现代打包工具取代)

标准库改进

  • Python 3.4:增加了 pathlibenumasyncio
  • Python 3.12:通过支持子类化改进了 pathlib
  • Python 3.13:将 dbm.sqlite3 添加为默认 DBM 后端
  • Python 3.13:增加了使用形式化验证代码实现的 HMAC

来源: Doc/whatsnew/3.13.rst93-101 Doc/whatsnew/3.12.rst112-122 Doc/whatsnew/3.11.rst96-98

安全改进

Python 一直在不断改进其安全状况

  • Python 3.12:为 tarfile 增加了安全的解压功能,以防止目录遍历攻击
  • Python 3.13:用形式化验证过的 HACL* 代码替换了内置哈希实现
  • Python 3.13:为 SSL 证书验证增加了更安全的默认值

来源: Doc/whatsnew/3.13.rst145-148 Doc/whatsnew/3.12.rst126-133

开发者体验改进

Python 一直在持续提升其开发者体验

  • Python 3.11:在 traceback 中增加了精细的错误位置信息
  • Python 3.12:改进了错误的“您是否是指...”建议
  • Python 3.13:为 traceback 和 doctest 增加了彩色输出
  • Python 3.13:引入了更好的支持多行编辑的交互式 shell

来源: Doc/whatsnew/3.13.rst247-284 Doc/whatsnew/3.12.rst427-458 Doc/whatsnew/3.11.rst115-130

发布模式变更

Python 的发布节奏和支持周期已经过时

  • 在 Python 3.9 中,PEP 602 确立了年度发布周期(取代了 18 个月)
  • Python 3.13 将完全支持(“bugfix”)周期延长至两年
  • 支持时间线
    • Python 3.9-3.12:1.5 年完全支持 + 3.5 年安全修复
    • Python 3.13 及以后:2 年完全支持 + 3 年安全修复

来源: Doc/whatsnew/3.13.rst197-205

未来方向

根据当前的开发和讨论,Python 的未来可能包括

  • 进一步完善 JIT 编译器
  • 扩大对自由线程的支持
  • 增强静态类型功能
  • 通过专用字节码路径实现更多性能优化
  • 持续改进开发者体验和错误消息