Python 3.9.6 发布
Python 3.9.6 正式发布,该版本更新内容如下:
安全
- mod:
http.client现在可以避免在服务器发出100 Continue状态响应后无限地读取潜在的HTTP headers 信息;
核心和内置程序
- 修复标记生成器初始化时引发的标记生成器错误的错误位置信息;
- 改进了 Oracle Solaris 上非 UTF 语言环境中的 Unicode 支持,此问题不会影响其他 Solaris 系统;
- 修复解析器中涉及带有无效表达式的关键字参数的错误消息;
- 修复了 C 代码中不正确的 dictkeys_reversed 和 dictitems_reversed 函数签名,这会破坏 webassembly 构建;
- 不再急切地使导入文件名绝对化,除了在 3.9.5 中引入的扩展模块。
- 修正
str.format()中一个令人困惑的错误信息; - 当通过
compile()编译带有递归引用的ast.AST对象时,解释器不再崩溃,而是引发RecursionError。
库
- 将 vendored pip 更新为 21.1.3;
- 修复在其他 Python 实现中非常不可能发生的 glob 资源泄漏;
- 修正在
bz2.BZ2File.write()/lzma.LZMAFile.write()方法中,当输入数据是支持缓冲区协议的对象时,文件长度可能是错误的问题。 - 修正
as_string()函数,以正确传递 unixfrom; - 在使一个枚举类成为 unpicklable 之前,要更稳健地搜索 pickle 支持;
- 允许多个数据类型混合,如果它们都是一样的;
- 在 Mac 上,给 turtledemo 按钮文本一个颜色,在浅色或深色背景下都可以使用;
- 修正当线程对象从未被加入时的引用泄露问题;
- 修正前一版本中用
pathlib.Path对象的列表调用pkgutil.iter_modules()时的回归问题; - 当为 ARM 平台编译时,
hashlib模块不再进行未对齐的内存访问; - 将
IO、BinaryIO、TextIO、Match和Pattern加入typing._**all_;** - bpo-43972: When
[http.server.SimpleHTTPRequestHandler](<https://docs.python.org/release/3.9.6/library/http.server.html#http.server.SimpleHTTPRequestHandler>)sends a301 (Moved Permanently)for a directory path not ending with/, add aContent-Length: 0header. This improves the behavior for certain clients. - 修正
pdb中checkline()如果在reset()之后被调用会引发AttributeError的错误;
构建
- bpo-44381: Windows 版现在可以接受 EnableControlFlowGuard 设置为 guard 来启用 CFG。
Windows
- 修正在
threading中使用超时时,例如使用threading.Lock.acquisition()或threading.Condition.wait()时的 16ms 抖动;
macOS
- bpo-43568:在为 macOS 构建扩展模块时放宽不必要的限制性 MACOSX_DEPLOYMENT_TARGET 检查;
- 允许 –with-lto 配置选项与 Apple 提供的 Xcode 或命令行工具一起使用;
IDLE
- 将缩进空间设置从“字体”选项卡移动到新的 Windows 选项卡;
- 将设置对话框 General 选项卡拆分为 Windows 和 Shell/ED 选项卡。将扩展帮助菜单的帮助源移动到扩展选项卡。为新选项腾出空间并缩短对话框;
- 避免
AutoCompleteWindow.winconfig_event()中未捕获的异常; - 修正 IDLE 在 macOS 上完成标签时有时会冻结的问题;
更多详情可查看:https://docs.python.org/release/3.9.6/whatsnew/changelog.html