pla*_*etp 12 python python-2.7
所以最终的 Python 2 版本已经发布。但是,我找不到此版本的任何更改。GitHub 上相应的新闻页面也是空的。任何人都可以对此有所了解吗?
好问题。您可以通过下载并比较 2.7.17 和 2.7.18 的源代码来自行查找。由于 2.7 是我最喜欢的 Python 风格,所以我决定自己做;这是 WinMerge 的屏幕截图:
看起来有些差异。另一方面,Misc\NEWS又明确指出:
Python 2.7.18 Final 有哪些新功能?
发布日期:2020-04-19
2.7.18版本没有新的变化。
恕我直言,这并不完全正确,但在讨论之前,让我们首先看看这些差异主要是什么。同样,内部列出了更改Misc\NEWS,它们与版本 2.7.18rc1 相关:
Python 2.7.18 候选版本 1 有哪些新增功能?
发布日期:2020-04-04
安全
bpo-38945:执行 uu 编码时,换行符已被转义,以防止它们溢出到编码文件的内容部分。这可以防止在解码过程中恶意或意外修改数据。
bpo-38804:修复 :mod: 中的 ReDoS 漏洞
http.cookiejar。本·卡勒 (Ben Caller) 的补丁。核心和内置
- bpo-38535:修复了装饰器中不带参数的调用的 AST 节点的行号和列偏移量。
图书馆
bpo-38576:禁止在 http.client 的主机名中使用控制字符,解决 CVE-2019-18348。此类潜在的恶意标头注入 URL 现在会导致引发 InvalidURL。
bpo-27973:修复 urllib.urlretrieve 在来自同一主机的后续 ftp 传输中失败的问题。
建造
- bpo-38730:修复 GCC
-Wstringop-truncation警告发现的问题。视窗
- bpo-37025:
AddRefActCtx()不必要地检查PC/dl_nt.c.苹果系统
- bpo-38295:防止 macOS Catalina 上 test_py_compile 中的 test_relative_path 失败。
应用编程接口
- bpo-38540:修复了 :c:func:
PyArg_Parse和格式单元的类似函数"es#"以及"et#"宏
:c:macro:PY_SSIZE_T_CLEAN未定义时可能存在的泄漏。
所以,看起来 2.7.18 只是 2.7.18rc1 的封装,但这就是全部吗?确切地说,有一些属于 2.7.18 的更改,这些更改与将其标记为 Python 2 的最终版本并向用户发出有关产品 EOL 的警告有关。例如,tools\templates\layout.html您可以找到以下块:
{% block header %} {%- if outdated %} {% trans %}此文档适用于旧版本的 Python,即 {% endtrans %} { % trans %}不再受支持{% endtrans %}。{% trans %}您应该升级并阅读 当前稳定版本的 {% endtrans %} {% trans %} Python 文档{% endtrans %}。{%- endif %} {% endblock %}
因此,我相信最终版本背后的原因有两个:(a) 完成 2.7.18rc1 的更改;(b) 将其标记为 Python 2 的最终版本并让用户了解它。