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

Python 增强提案

PEP 283 – Python 2.3 发布计划

作者:
Guido van Rossum
状态:
最终版
类型:
信息性
主题:
发布
创建日期:
2002 年 2 月 27 日
Python 版本:
2.3
发布历史:
2002 年 2 月 27 日

目录

摘要

本文档描述了 Python 2.3 的开发和发布计划。该计划主要关注 PEP 级别的事项。小型功能可能会在第一次 Beta 发布之前(包括该次发布)添加。Bug 可以在最终发布之前修复。

将至少有两次 Alpha 发布、两次 Beta 发布和一次发布候选。Alpha 和 Beta 发布间隔至少 4 周(除非必须进行紧急发布以纠正前一版本中的错误;在这种情况下,该错误版本不计算在内)。发布候选版本间隔至少一周(同样不包括错误修正)。

Alpha 1 2002 年 12 月 31 日
Alpha 2 2003 年 2 月 19 日
Beta 1 2003 年 4 月 25 日
Beta 2 2003 年 6 月 29 日
候选版本 1 2003 年 7 月 18 日
候选版本 2 2003 年 7 月 24 日
最终版本 2003 年 7 月 29 日

发布经理

Barry Warsaw, Jeremy Hylton, Tim Peters

2.3 版本已完成的功能

此列表不完整。更多内容请参见 CVS 中的 Doc/whatsnew/whatsnew23.tex,当然还有 Misc/NEWS 中的完整列表。

  • Tk 8.4 更新。
  • bool 类型及其常量 TrueFalse (PEP 285)。
  • PyMalloc 得到了极大增强,并默认启用。
  • 通用换行符支持 (PEP 278)。
  • PEP 263 定义 Python 源代码编码,Lemburg

    已实现(至少是第一阶段,这也是 2.3 版计划的全部)。

  • 所有内置序列的扩展切片表示法。Michael Hudson 的补丁现已全部提交。
  • 通过填充 tp_iter 和其他调整来加快列表迭代。参见 https://bugs.python.org/issue560736;也已用于 xrange 和元组。
  • 超时套接字。 https://bugs.python.org/issue555085
  • int/long 集成的 B0 阶段 (PEP 237)。这意味着在 hexoct 转换或左移对于具有相同值的 int 返回与 long 不同的值时发出 FutureWarning。语义在 Python 2.3 中 改变;这将在 Python 2.4 中发生。
  • 从所有代码对象中删除 SET_LINENO(提供一种不同的设置调试器断点的方式)。这可以将 pystone 提升超过 5%。https://bugs.python.org/issue587993,现已提交。(不幸的是,pystone 的提升并未发生。发生了什么?)
  • 编写一个 pymemcompat.h,人们可以将其与扩展一起打包,然后将 2.3 内存接口与所有 Python 版本(1.5.2 到 2.3 范围)一起使用。(Michael Hudson 提交了 Misc/pymemcompat.h。)
  • 添加一个新的概念,“待定废弃”,并带有相关的警告 PendingDeprecationWarning。此警告通常被抑制,但可以通过合适的 -W 选项启用。目前只有少数事物使用此功能。
  • 当扩展类型的 tp_compare 返回除 -1、0 或 1 之外的任何值时发出警告。 https://bugs.python.org/issue472523
  • None 的赋值(以各种形式)发出警告。
  • PEP 218 添加内置集合对象类型,Wilson

    Alex Martelli 贡献了 Greg Wilson 原型的新版本,我对此进行了大量修改。它现在作为模块 sets 在标准库中,尽管一些细节在第一个 Beta 发布之前可能仍会改变。(目前没有计划将其设为内置类型。)

  • PEP 293 编解码器错误处理回调,Dörwald

    已完全实现。unicode.encodestr.decode 中的错误处理现在可以自定义。

  • PEP 282 日志系统,Mick

    Vinay Sajip 的实现已打包并导入。(文档和单元测试仍在进行中。) https://bugs.python.org/issue578494

  • 一种修改后的 MRO(方法解析顺序)算法。共识是我们应该采用 C3。Samuele Pedroni 贡献了一个 C 语言的草稿实现,参见 https://bugs.python.org/issue619475。这现在已经提交。
  • 一个新的命令行选项解析器。Greg Ward 的 Optik 包 (http://optik.sf.net) 已被采用,并转换为一个名为 optparse 的单一模块。另请参见 https://pythonlang.cn/sigs/getopt-sig/
  • 一个标准的 datetime 类型。这始于一个 wiki:http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage。原型在 nondist/sandbox/datetime/ 中编码。Tim Peters 完成了 C 实现并已提交。
  • PEP 273 从 Zip 档案导入模块,Ahlstrom

    作为 PEP 302 实现工作的一部分实现。

  • PEP 302 新的导入钩子,JvR

    已实现(尽管 2.3a1 版本包含一些已在发布后修复的 bug)。

  • 一个新的序列化协议。参见 PEP 307
  • PEP 305(CSV 文件 API,由 Skip Montanaro 等人编写)已完成;这是 csv 模块。
  • Raymond Hettinger 的 itertools 模块已完成。
  • PEP 311(Mark Hammond 编写的简化 GIL 获取扩展)已包含在 Beta 1 中。
  • 两个新的 PyArg_Parse*() 格式代码,'k' 返回一个无符号 C 长整型,接收 Python 参数的低 LONG_BIT 位,截断而不进行范围检查。'K' 返回一个无符号 C 长长整型,接收低 LONG_LONG_BIT 位,截断而不进行范围检查。(SF 595026;Thomas Heller 完成了这项工作。)
  • 从 IDLEfork 项目(http://idlefork.sf.net)导入了一个新版本的 IDLE。代码现在位于标准库的 idlelib 包中,并且 idle 脚本由 setup.py 安装。

2.3 版本计划中的功能

现在做任何事情都为时已晚。

进行中的任务

以下是持续进行中的待办事项,我们应努力完成,而不必期望在特定日期完成。

  • 文档:完成分发和安装手册。
  • 文档:完成新式类的文档。
  • 查看 Demos/ 目录并在需要时更新(Andrew Kuchling 已经做了很多)
  • 新测试。
  • 修复 SF 上的文档错误。
  • 删除核心中已弃用功能的使用。
  • 适当记录已弃用的功能。
  • 使用 Py_DEPRECATED 标记已弃用的 C API。
  • 弃用未维护的模块,或者为“未维护”模块创建一个新类别
  • 总的来说,大量清理工作,以便更容易向前推进。

开放问题

在最终版本(最好在第一个 Beta 版本)之前,可能还需要更多工作和/或思考的一些问题:没有遗留问题。

未能进入 Python 2.3 的功能

  • 导入锁可能需要重新设计。(SF 683658。)
  • 集合 API 问题;集合模块是完美的吗?

    我认为在获得更广泛的用户体验之前,它已经足够好,可以停止完善。

  • 一个更好的 API 来打开文本文件,取代一些人眼中“丑陋”的“U”模式标志。有一个提案是引入一个新的内置类型 textfile(filename, mode, encoding)。(它不应该也有一个 *bufsize* 参数吗?)

    同上。

  • Tkinter 的新部件???

    有人有时间做这个吗?Tk 8.4 中 *有* 任何新部件吗?请注意,我们已经有更好的 Tix 支持(尽管在 Windows 上还没有)。

  • Fredrik Lundh 的 basetime 提案

    http://effbot.org/ideas/time-type.htm

    我相信这已经夭折了。

  • PEP 304(Montanaro 编写的控制字节码文件生成)似乎已经失去了动力。
  • 对于在另一个类中定义的类,__name__ 应该是 "outer.inner",并且序列化应该有效。(SF 633930。我不再确定这很容易甚至正确。)
  • reST 将在 Zope3 中大量使用。也许它可以成为一个标准库模块?(由于 reST 的作者认为它过于不稳定,我倾向于不这样做。)
  • 决定更清晰的废弃策略(特别是针对模块)并付诸行动。首先,请参阅 Neal Norwitz 的这封邮件:https://mail.python.org/pipermail/python-dev/2002-April/023165.html 似乎没有足够的兴趣以有组织的方式推进此事,而且它也不是特别重要。
  • types 模块的常见用途提供替代方案;

    Skip Montanaro 为此想法发布了一个 proto-PEP:https://mail.python.org/pipermail/python-dev/2002-May/024346.html

    据我所知,这方面没有任何进展。

  • typesstring 模块使用待定废弃。这需要为尚未涵盖的部分提供替代方案(例如 string.whitespacetypes.TracebackType)。看来我们无法就此达成共识。
  • 废弃 buffer 对象。

    看来这永远无法解决。

  • PEP 269 Python 的 Pgen 模块,Riehl

    (一些必要的更改已经完成;pgen 模块本身需要更成熟。)

  • 添加对期待已久的 Python 目录的支持。Kapil Thangavelu 有一个基于 Zope 的实现,他在 OSCON 2002 上进行了演示。现在我们所需要的是一个托管它的地方和一个人来倡导它。(至少,distutils 的一些更改已到位,以支持此功能。)
  • PEP 266 优化全局变量/属性访问,Montanaro

    PEP 267 优化模块命名空间访问,Hylton

    PEP 280 优化全局变量访问,van Rossum

    这些基本上是三个友好的竞争提案。Jeremy 在一个新的编译器方面取得了一些进展,但进展缓慢,而且编译器只是第一步。也许我们可以在这个版本中重构编译器。我倾向于认为我们不会抱太大希望。与此同时,Oren Tirosh 有一个更简单的想法,通过优化和内联字典访问,可能会显著提升访问全局变量和内置函数的性能:http://tothink.com/python/fastnames/

  • 惰性跟踪元组?

    我相信没有多少热情。

  • PEP 286 增强参数元组,von Loewis

    我还没有时间彻底审查这个。这似乎是一个深入的优化技巧(尽管也提供了更好的正确性保证)。

  • 将“as”设为关键字。它作为伪关键字已经足够久了。麻烦太多,不值得费心。

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

最后修改:2025-02-01 08:59:27 GMT