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类型及其常量True和False(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)。这意味着在hex或oct转换或左移对于具有相同值的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.encode或str.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
据我所知,这方面没有任何进展。
- 对
types和string模块使用待定废弃。这需要为尚未涵盖的部分提供替代方案(例如string.whitespace和types.TracebackType)。看来我们无法就此达成共识。 - 废弃
buffer对象。- https://mail.python.org/pipermail/python-dev/2002-July/026388.html
- https://mail.python.org/pipermail/python-dev/2002-July/026408.html
看来这永远无法解决。
- 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/
- 惰性跟踪元组?
- https://mail.python.org/pipermail/python-dev/2002-May/023926.html
- https://bugs.python.org/issue558745
我相信没有多少热情。
- PEP 286 增强参数元组,von Loewis
我还没有时间彻底审查这个。这似乎是一个深入的优化技巧(尽管也提供了更好的正确性保证)。
- 将“as”设为关键字。它作为伪关键字已经足够久了。麻烦太多,不值得费心。
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0283.rst