Python 3.9.7 和 3.8.12 现已发布。Python 3.9.7 是 Python 编程语言的最新主要稳定版本,许多新功能和优化,自 3.9.6 以来已经有 187 次提交。而 Python 3.8 现在处于其生命周期的 “仅安全修复” 阶段,此次更新包含四个修复程序。
主要更新内容
- 3.9.7 & 3.8.12
- 将 tempfile.mktemp() 的使用替换为 TemporaryDirectory 以避免潜在的竞争条件
- 将供应商的 libexpat 副本更新到 2.4.1(从 2.2.8 开始)以修复 CVE-2013-0340 “Billion Laughs” 漏洞。此副本最常用于 Windows 和 macOS
- 使 smtplib 中的内部 putcmd 函数清理输入中是否存在 /r 和 /n 字符,以避免(不太可能)命令注入
- 修复清理方法对象时的深度递归的分段错误
- 在 frameobject.c 中使用新的垃圾桶宏 (Py_TRASHCAN_BEGIN/END) 而不是旧的 (Py_TRASHCAN_SAFE_BEGIN/END)
- 修复 update_bases() 和 __build_class__ 的错误路径中的引用泄漏
- 3.9.7
- 将审计事件添加到 marshal 模块,并停止为每个未编组的代码对象引发 code.__init__ 事件。直接实例化的代码对象将继续引发事件,审计事件处理程序应检查或收集原始封送数据。从 .pyc 文件加载时,这会显着降低性能开销。
- 修复了迭代超过2**32次的范围迭代器的纠错问题
- 修复了 WeakKeyDictionary、WeakValueDictionary 和 WeakSet 中,当两个线程试图提交最后一个待处理的删除时的竞争。这同时修复了asyncio.create_task,防止 asyncio.run 中 shutdown_asyncgens 未运行时的数据丢失
- 完善了导入语句中尾部逗号的语法错误
- 恢复复数指数的行为,整数类型的指数为浮点数或复数
- 纠正带有格式规格和重复表达式的 f-字符串的星号位置
- 3.8.12
- ipaddress 模块不再接受 IPv4 地址字符串中的任何前导零。前导零是不明确的,一些库将其解释为八进制表示法。例如,遗留函数 socket.inet_aton() 将前导零视为八进制表示法。现代 inet_pton() 的 glibc 实现不接受任何前导零。有一段时间,ipaddress 模块过去常常接受不明确的前导零
详情请查看更新公告。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/135494.html