Python 3.9.7 & 3.8.12 发布

科技资讯 投稿 51400 0 评论

Python 3.9.7 & 3.8.12 发布

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 模块过去常常接受不明确的前导零

编程笔记 » Python 3.9.7 & 3.8.12 发布

赞同 (32) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽