Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 3003 – Python 语言暂停

作者:
Brett Cannon, Jesse Noller, Guido van Rossum
状态:
最终版
类型:
流程
创建日期:
2009年10月21日
发布历史:
2009年11月3日

目录

摘要

本PEP提议,从Python 3.1发布之日起,暂停对Python语言语法、语义和内置功能的任何更改,期限至少两年。具体而言,暂停期将包括Python 3.2(在3.1发布后18-24个月发布),但允许Python 3.3(假设未提前发布)再次包含语言更改。

暂停功能旨在让非 CPython 实现“赶上”语言的核心实现,帮助简化 Python 3.x 的采用,并为社区提供更稳定的基础。

基本原理

这个想法是由 Guido van Rossum 在 python-ideas [1] 邮件列表中提出的。他的电子邮件前提是减缓 Python 核心语法、内置函数和语义的修改,以允许非 CPython 实现赶上 Python 2.x 和 3.x 的当前状态。

Python 作为一种语言,不仅仅是核心实现——CPython——它拥有一个丰富、成熟和充满活力的实现社区,例如 Jython [2]、IronPython [3] 和 PyPy [4],这些实现不仅对社区有益,而且对语言本身也有益。

还有一些,例如 Unladen Swallow [5](CPython 的一个分支)不寻求创建替代实现,而是寻求增强 CPython 本身的性能和实现。

Python 3.x 在过去几年中是 Python 开发的重要组成部分。它的发布,以及由它和之前的 2.6.x 版本引入的大量语言更改,使替代实现“跟上”核心 Python 开发处于严重劣势。

此外,CPython 所实现的最新语言版本中的许多更改尚未被普通用户广泛使用。例如,大多数用户仅限于其操作系统预装的解释器版本(通常是 CPython)。大多数操作系统供应商才刚刚开始发布 Python 2.6——发布 Python 3.x 的甚至更少。

由于 Python 2.7 预计将是 Python 2.x 代码线的有效“生命周期结束”,而 Python 3.x 将是未来,因此暂停语言本身的修改符合 Python 核心开发的最大利益,以允许所有这些外部实体赶上并协助采用和迁移到 Python 3.x

最后,暂停旨在释放核心开发内部的时间,以专注于其他问题,例如 CPython 解释器及其改进、标准库等。

本次暂停不允许例外——一旦接受,任何待定的语言语法或语义更改都将推迟,直到暂停解除。

本次暂停不适用于任何其他 Python 实现,这意味着如果需要,其他实现可以添加偏离标准实现的功能。

详情

不可更改

  • 新的内置函数
  • 语言语法
    语法文件基本上是不可变的,除了歧义修复。
  • 通用语言语义
    语言按原样运行,只有特定豁免(见下文)。
  • 新的 __future__ 导入
    这些是被明确禁止的,因为它们有效地改变了语言语法和/或语义(尽管使用了编译器指令)。

逐案豁免

  • 内置函数的新方法
    可以提出向内置对象添加方法的理由。
  • 不正确的语言语义
    如果语言语义根据原始设计的意图被证明是模糊或不正确实现的,那么语义可能会改变。
  • 难以实现的语言语义
    由于其他虚拟机尚未开始实现 Python 3.x 语义,因此某些语义可能难以复制。在这些情况下,可以对其进行更改,以简化其他虚拟机对 Python 3.x 的采用。

允许更改

  • C API
    只要不违反本暂停的其他限制,更改 CPython 的底层 C 代码是完全可以接受的。例如,删除 GIL 将是可行的,前提是当前原子操作保持原子性。
  • 标准库
    由于标准库不直接与语言定义绑定,因此不受本次暂停的限制。
  • 将 3.x 功能移植到 2.x
    暂停仅影响 3.x 中新增的功能。
  • 导入语义
    例如,PEP 382。毕竟,导入语义在不同的 Python 实现之间本来就有所不同。

追溯

重要的是要注意,暂停涵盖了自 Python 3.1 发布以来所有更改。此规则旨在避免在暂停讨论期间将功能匆忙或偷偷地引入 CPython 源代码树。对 py3k 开发分支的 NEWS 文件的审查显示,无需回滚任何提交即可实现此目标。

延期

暂停的期限只能通过新的 PEP 延长。

参考资料


来源:https://github.com/python/peps/blob/main/peps/pep-3003.rst

上次修改:2025-02-01 08:59:27 GMT