Changelog

Python next

*发行日期:XXXX-XX-XX *

Library

Windows

  • bpo-40741:更新 Windows 版本以包括 SQLite 3.32.3.

Python 3.8.5 finally版

*发布日期:2020-07-20 *

Security

  • bpo-41304:修复了bpo-29778的修复(CVE-2020-15801)在 Windows 上忽略的python3x._pth

  • bpo-39603:pass拒绝 http.client.putrequest(...)中的控制字符来防止注入 HTTPHeaders。

核心和内建函数

  • bpo-41295:解决了 CPython 3.8.4 中的回归问题,其中,如果基本类型涉及内建/扩展类型,则在多继承设置中定义“ setattr”并调用层次结构链可能会失败。

Library

  • bpo-41288:现在,使用 C 实现取消选择无效的 NEWOBJ_EX 操作码会引发 UnpicklingError 而不是崩溃。

  • bpo-39017:使用 tarfile 模块(CVE-2019-20907)读取特制的 TAR 文件时,请避免无限循环。

Documentation

  • bpo-37703:更新了文档以全面详细说明 collect.cancel()的行为

Build

  • bpo-41302:启用使用 libmpdec-2.5.0 构建 Python 3.8,以简化 Linux 发行版的维护。 Felix Yan 的补丁。

macOS

  • bpo-40741:更新 macOS 安装程序以使用 SQLite 3.32.3.

IDLE

  • bpo-41300:使用非 ASCII 字符保存文件。修复了 3.9.0b4 和 3.8.4 中发布的回归。

Python 3.8.4 finally版

*发布日期:2020-07-13 *

Security

  • bpo-41162:现在,在完成过程中稍后会清除审核钩子,以避免丢失事件。

  • bpo-29778:确保在嵌入 Python(CVE-2020-15523)时从正确的位置加载python3.dll

核心和内建函数

  • bpo-41247:在运行asyncio.set_running_loop时始终缓存运行中的循环持有人。

  • bpo-41252:修复了_ssl.c 的_servername_callback()中错误的计数。

  • bpo-41218:Python 3.8.3 进行了回归分析,使用 ast.PyCF_ALLOW_TOP_LEVEL_AWAIT 进行编译会使用 CO_COROUTINE 积极标记列表理解。现在,只有使用 async/await 的列表理解将被标记为。

  • bpo-41175:防止由bytearray() + bytearray()操作触发的 bytearrayobject 中的 NULL 指针取消引用。

  • bpo-39960:重写了“ hackcheck”,以防止pass调用超类方法偷偷靠近类型的__setattr __(),从而允许 C 实现的堆类型。

Library

IDLE

  • bpo-37765:将关键字添加到模块名称完成列表。重写 IDLE 文档的“完成”部分。

  • bpo-41152:IDLE 中的stdinstdoutstderr的编码现在始终为 UTF-8.

Python 3.8.4 发行候选 1

*发布日期:2020-06-29 *

Security

  • bpo-41004:ipaddress.IPv4Interface 和 ipaddress.IPv6Interface 的__hash __()方法分别错误地生成了 32 和 128 的常量哈希值。这导致总是导致哈希冲突。该修复程序使用 hash()为(地址,掩码长度,网络地址)的 Tuples 生成哈希值。

  • bpo-39073:在 email.headerregistry.Address 参数中禁止 CR 或 LF,以防止 Headers 注入攻击。

核心和内建函数

  • bpo-41094:在非 UTF-8 语言环境中打开具有非 ASCII 名称的文件时,pass审计解决了解码错误。

  • bpo-41056:在pass-c 提供代码时,在构建涉及相对符号链接的 sys.path 时,修复了启动期间对释放的堆栈空间的引用。 (pass Coverity 发现)

  • bpo-35975:Stefan Behnel 报告说,即使未设置 PyCF_ONLY_AST,也使用 cf_feature_version。这与意图和记录的行为背道而驰,因此已得到修复。

  • bpo-40957:当 PySys_Audit()失败时,修复_Py_fopen_obj()中的 refleak

  • bpo-40870:在验证自定义 AST 时提高ValueError,其中在ast.Name节点内使用常量TrueFalseNone

  • bpo-40826:修复PyOS_Readline()中的 GIL 使用情况:锁定 GIL 以设置异常,并在检查是否存在未决 signal 时传递 Python 线程状态。

  • bpo-40824:_运算符中的TypeError以及operator模块的函数contains()indexOf()countOf()不再掩盖了调用__iter__方法时发生的意外错误。

  • bpo-40663:正确生成 Comments,在这些 Comments 中Ellipsis但必须加上括号(例如Type[(str, int, *other))]

Library

  • bpo-41138:修复了具有非 UTF-8 编码的 Python 源文件的trace模块 CLI。

  • bpo-31938:修复select模块中多个函数的默认值签名-作者:Anthony Sottile。

  • bpo-41068:修复了写入后直接从 ZIP 存档中读取具有非 ASCII 名称的文件的问题。

  • bpo-41058pdb.find_function()现在可以正确确定源文件的编码。

  • bpo-41056:在键盘日志回调中出现 MemoryError 期间,在 ssl 模块中修复了 NULL 指针取消引用。 (由 Coverity 发现)

  • bpo-41048mimetypes.read_mime_types()函数使用 UTF-8 编码而不是语言环境编码读取规则文件。 Srinivas Reddy Thatiparthy 修补程序。

  • bpo-40448ensurepip现在在安装pipsetuptools的 Binding 版本时禁用pip缓存。 Krzysztof Konopko 的补丁。

  • bpo-40855:统计信息模块中的标准偏差和方差函数忽略了它们的 mu 和 xbar 参数。

  • bpo-40807:停止 codeop._maybe_compile,由 code.InteractiveInterpreter(和 IDLE)使用。从发出每个警告三次。

  • bpo-40834:修复使用_xxsubinterpreters.channel_send 发送 str 对象时的截断。

  • bpo-38488:更新 surepip 以安装 pip 20.1.1 和 setuptools 47.1.0.

  • bpo-40767webbrowser现在可以pass检查 WAYLAND_DISPLAY 环境变量在纯 Wayland 系统中正确找到默认浏览器。补丁由 JérémyAttali 提供。

  • bpo-40795ctypes模块:如果 ctypes 无法转换回调的结果,或者 ctypes 回调函数引发异常,则现在将调用 sys.unraisablehook 并设置一个异常。以前,该错误是由PyErr_Print()登录到 stderr 的。

  • bpo-30008:修复ssl代码以与使用no-deprecated--api=1.1.0的 OpenSSL 1.1.x 构建兼容。

  • bpo-40614ast.parse()传递的feature_version小于(3, 8)时,将不会解析 f 字符串中的自我记录表达式。

  • bpo-40626:根据 HDF5 格式化数据文件的 HDF 组建议,将 h5 文件 extensions 添加为 MIME Type application/x-hdf5.补丁由 Mark Schwab 提供。

  • bpo-25872linecache从多个线程访问时可能会以KeyError崩溃。由 Michael Graczyk 修复。

  • bpo-40597:如果文本内容行长于 policy.max_line_length,请始终使用内容编码来确保它们被换行。

  • bpo-40515sslhashlib模块现在可以主动检查是否已在线程支持下构建了 OpenSSL。 Python 3.7.0 使线程支持成为必需,并且在无线程构建中不再安全地工作。

  • bpo-13097ctypes现在在调用具有超过 1024 个参数的回调时引发ArgumentError

  • bpo-40457:ssl 模块现在支持不使用 TLS 1.0 和 1.1 方法的 OpenSSL 构建。

  • bpo-39830:将zipfile模块中的zipfile.Path添加到__all__中。

  • bpo-40025:在成员之后定义_generate_next_value 时引发 TypeError。 Ethan Onstott 的补丁。

  • bpo-39244:修复了multiprocessing.context.get_all_start_methods以便首先在 macOS 上正确返回默认方法。

  • bpo-39040:pass折叠裸引号字符串中的编码单词之间的空格来修复无效的 mimeHeaders 参数的解析。

  • bpo-35714:现在,如果struct格式字符串中有空字符,则引发struct.error

  • bpo-36290:AST 节点现在针对冲突的关键字参数提出了TypeError的建议。补丁由 RémiLapeyre 提供。

  • bpo-29620assertWarns()在访问模块的__warningregistry__导致导入新模块或在另一个线程中导入新模块时不再引发RuntimeException。由 Kernc 修补。

  • bpo-34226:修复cgi.parse_multipart,但没有 content_length。罗杰·杜兰(Roger Duran)的补丁

Tests

  • bpo-41085:修复索引大于2**31的 64 位 Windows 上array.array.index()方法中的整数溢出。

  • bpo-38377:在 Linux 上,如果当前用户无法在/dev/shm/目录中创建文件,请跳过使用 multiprocessing 的测试。将skip_if_broken_multiprocessing_synchronize()函数添加到test.support模块。

  • bpo-41009:修复了将support.require_{linux|mac|freebsd}_version()个修饰符用作类修饰符。

  • bpo-41003:安装numpy时修复test_copyregtest.pickletester现在在导入numpy时保存/恢复警告过滤器,以忽略numpy安装的过滤器。

  • bpo-40964:禁用远程imaplib测试,主机 cyrus.andrew.cmu.edu 阻止传入连接。

  • bpo-40055:distutils.tests 现在可以保存/恢复警告过滤器,以使其保持不变。导入测试会导入 docutils,该 docutils 会导入 pkg_resources 并添加警告过滤器。

  • bpo-34401:使 test_gdb 在 HP-UX 上正确运行。迈克尔·奥西波夫(Michael Osipov)的补丁。

Build

  • bpo-40204:在Doc/Makefile中将 Sphinx 版本固定为 2.3.1.

  • bpo-40653:将_dirnameW 移出 HAVE_SYMLINK,以解决潜在的编译问题。

Windows

  • bpo-41074:固定支持函数msilib.OpenDatabase()msilib.init_database()中的非 ASCII 名称以及方法msilib.Database.OpenView()中的非 ASCII SQL。

  • bpo-40164:将 Windows OpenSSL 更新为 1.1.1g

  • bpo-39631:将 Windows 上.py文件的已注册 MIME 类型更改为text/x-python而不是text/plain

  • bpo-40677:手动定义 IO_REPARSE_TAG_APPEXECLINK,以防某些旧的 Windows SDK 没有它。

  • bpo-40650:将 pytime.c 中的 winsock2.h 包含在 timeval 中。

  • bpo-39148:在 ProactorEventLoop 中为asyncio数据报端点添加 IPv6 支持。将未知地址系列的引发异常更改为 ValueError,因为它不是 Windows API 发出的。

macOS

  • bpo-39580:如果从命令行运行安装程序,请避免打开 Finder 窗口。补丁由 Rick Heil 提供。

  • bpo-41100:修复在 macOS 11 上构建时的配置错误。请注意,当前的 Python 版本是在 macOS 11(Big Sur)的首次开发人员预览后不久发布的;在开发人员预览版上构建和运行还有其他已知问题。预期将来的 Python 3.8.x 和 3.9.0 的错误修正版本将完全支持 Big Sur。

  • bpo-41005:修复了 XDG 设置问题,该问题不允许 macos 打开 webbrowser.py 中的浏览器

  • bpo-40741:更新 macOS 安装程序以使用 SQLite 3.32.2.

IDLE

  • bpo-41144:使“打开模块”打开特殊的模块,例如 os.path。

  • bpo-39885:在选区中单击鼠标右键时,使上下文菜单“剪切和复制”再次起作用。

  • bpo-40723:导入后运行时,使 test_idle pass。

Tools/Demos

  • bpo-40479:更新 multissltest 助手,以使用最新的 OpenSSL 1.0.2、1.1.0、1.1.1 和 3.0.0-alpha 进行测试。

  • bpo-40163:修复 multissltest 工具。 OpenSSL 更改了旧版本的下载 URL。现在,multissltest 工具try从当前和旧的下载 URL 中进行下载。

Python 3.8.3 finally版

*发布日期:2020-05-13 *

核心和内建函数

  • bpo-40527:修复命令行参数解析:不再将错误多次写入 stderr。

  • bpo-40417:修复了在调用 PyImport_ReloadModule 时 imp 模块弃用的警告。 Robert Rouhani 修补程序。

  • bpo-39562:更新future模块中将来标志的常量值,以防止与编译器标志冲突。以前PyCF_ALLOW_TOP_LEVEL_AWAITCO_FUTURE_DIVISION冲突。

Library

Documentation

Windows

  • bpo-40458:增加保留的堆栈空间,以防止 Windows 上的崩溃崩溃。

C API

  • bpo-40412:在完成过程中将 inittab_copy 无效,以防止将来嵌入式情况下的解释器初始化崩溃。 Gregory Szorc 的补丁。

Python 3.8.3 发行候选 1

*发布日期:2020-04-29 *

Security

  • bpo-40121:修复了在创建新套接字时引发的审核事件。

  • bpo-38576:禁止使用 http.client 中主机名中的控制字符,地址为 CVE-2019-18348.现在,此类潜在的恶意 Headers 注入 URL 导致引发 InvalidURL。

  • bpo-39503:CVE-2020-8492:urllib.request模块的AbstractBasicAuthHandler类使用了无效的正则表达式,攻击者可以利用该正则表达式来导致拒绝服务。修复正则表达式,以防止灾难性的回溯。 Ben Caller 和 Matt Schwager 报告的漏洞。

核心和内建函数

  • bpo-20526:修复PyThreadState_Clear()PyThreadState.frame是借用的引用,不是强引用:PyThreadState_Clear()不能调用Py_CLEAR(tstate->frame)

  • bpo-39965:如果在非异步函数中使用* await *且设置了PyCF_ALLOW_TOP_LEVEL_AWAIT(如在异步 REPL 中),则正确提高SyntaxError。 Pablo Galindo 修补程序。

  • bpo-39562:给出PyCF_ALLOW_TOP_LEVEL_AWAIT标志时,允许在顶层执行异步理解。 Batuhan Taskaya 修补程序。

  • bpo-38894:修复了存在符号链接的情况下调用pathlib.Path.glob时导致不完整结果的错误,该符号链接指向用户没有读取权限的文件。 Pablo Galindo 和 Matt Wozniski 的补丁。

  • bpo-39871:当第一个参数不能转换为float时,修复math.{atan2,copysign,remainder}()中可能的SystemError。 Zachary Spytz 的补丁。

  • bpo-39776:解决了竞争情况,即由 PyGILState_Ensure()创建的线程可能获得重复的 ID。

这会像 contextvar 缓存机制一样影响 tstate-> id 的使用者,该机制可能会在高线程负载(在嵌入式方案中观察到)下返回无效的缓存对象。

  • bpo-39778:修复了由于错误处理collections.OrderedDict类中的弱引用而导致的崩溃。 Pablo Galindo 修补程序。

  • bpo-39520:修复无项目的 ext slice 的解析(foo[:,])。 Batuhan Taskaya 修补程序。

  • bpo-22490:不要将环境变量__PYVENV_LAUNCHER__泄漏到 macOS 的解释器会话中。

Library

  • bpo-40138:修复大于INT_MAX >> 8的退出代码的os.waitpid()的 Windows 实现。现在将退出状态解释为无符号数字。

  • bpo-39942:当typing.TypeVar中缺少“ name”时,将“ main”设置为默认模块名称。魏鹏宏的补丁。

  • bpo-40330:在ShareableList.__setitem__()中,请在将新字符串项编码为 utf-8 后检查其大小,而不是在此之前。

  • bpo-40287:修复了SpooledTemporaryFile.seek()以返回位置。

  • bpo-40260:确保modulefinder使用io.open_code()并遵守编码 Comments。

  • bpo-40196:修复了symtable模块中的一个错误,该错误导致将全局变量错误地报告为局部变量。 Pablo Galindo 修补程序。

  • bpo-40126:修复了在 unittest.mock 中恢复多个补丁的问题。现在,如果修补程序的__enter__()失败,则永远不会调用它的__exit__()。从__exit__()返回 true 将使异常静音。

  • bpo-40089:修复 threading._after_fork():如果 fork 不是由 threading.Thread 产生的线程调用的,threading._after_fork()现在为_main_thread 创建一个_MainThread 实例,而不是_DummyThread 实例。

  • urllib.request中的bpo-39503AbstractBasicAuthHandler现在解析所有 WWW-Authenticate HTTPHeaders,并接受每个 Headers 多个挑战:使用第一个基本挑战的领域。

  • bpo-40014:修复os.getgrouplist():如果getgrouplist()Function由于组列表太小而失败,请重试较大的组列表。失败时,getgrouplist()的 glibc 实现会将ngroups设置为组的总数。对于其他实现,请将组列表大小加倍。

  • bpo-40016:在文档字符串中,阐明内联和参数编译标志之间的关系。

  • bpo-39953:更新ssl模块中的 OpenSSL 错误代码内部表。

  • bpo-39360:pass multiprocessing 的模块完成处理程序隐式完成multiprocessing.Pool时,确保所有工作程序退出。这修复了当pass上下文 Management 器或对multiprocessing.Pool.terminate的调用未正确完成 Pool 时可能遇到的死锁情况。 Batuhan Taskaya 和 Pablo Galindo 的补丁。

  • bpo-39652:仅当设置了 PARSE_COLNAMES 选项时,在sqlite3.Cursor.description中找到的列名才被第一个'['截断。

  • bpo-39915:确保unittest.mock.AsyncMock.await_args_list具有 await 参数 Sequences 的调用对象,而不要使用unittest.mock.Mock.call_args作为调用的最后一个值。 Karthikeyan Singaravelan 修补程序。

  • bpo-38662ensurepip模块现在passrunpy模块调用pip。因此,它不再与 Binding 的pip版本的内部 API 紧密结合,从而允许在内部和分发者更容易地更新到较新的pip版本。

  • bpo-39916:更可靠地使用Path.glob()中的os.scandir()。break时不再发出 ResourceWarning。

  • bpo-39850multiprocessing现在支持抽象套接字地址(如果正在运行的平台支持抽象套接字)。 Pablo Galindo 修补程序。

  • bpo-39828:修复json.tool以捕获BrokenPipeError。罗东熙的补丁。

  • bpo-13487:当trypasssys.modules循环时,应避免从inspect.getmodule()获得*“ RuntimeError:字典在迭代过程中更改大小” *。

  • bpo-39794:添加–without-decimal-contextvar 构建选项。这将启用线程局部而不是协程局部上下文。

  • bpo-39769compileall.compile_dir()函数的* ddir *参数和 compileall 命令行标志-d不再将错误的路径名写入到要编译的目录树根目录下的子模块的 pyc 文件中。这修复了 Python 3.5 引入的回归。

  • bpo-39517:使用类似路径的对象时,修复 runpy.run_path()

  • bpo-39764:在 PyAsyncGenObject 任务上调用 get_stack 时修复 AttributeError

  • bpo-30566:try使用 punycode 编解码器解码无效字符串时修复IndexError

  • bpo-39667:如 zipp 3.0 中所述,纠正zipfile.Path中的性能下降。在保留兼容性的同时,由于 Python 3.9 中的签名更改,此更改不鼓励使用zipfile.Path.open。为了在 python 3.8 和更高版本之间具有兼容性,请考虑在 python 3.8.x 和更早版本上使用zipp.Path

  • bpo-39548:修复了不存在可选qop参数时urllib.request.AbstractDigestAuthHandler中 Headers 的处理。

  • bpo-38971:BPO 中的打开问题表明希望与 io.open()保持一致,以实现 codecs.open()的实现,后者实现了 try/except 以确保在引发异常之前关闭文件流。

  • bpo-38410:正确处理sys.set_asyncgen_hooks()中的sys.audit()个失败。基于 Zackery Spytz 的补丁。

  • bpo-36541:lib2to3 现在可以识别命名的赋值表达式(海象运算符:=)

  • bpo-31758:防止使用未初始化的_elementtree.XMLParser对象时发生崩溃。 Oren Milman 修补程序。

Documentation

  • bpo-27635:pickle 文档错误地指出,解泡时默认不调用__new__

  • bpo-39879:更新了Data model个文档以包含dict()个插入 Sequences 保留。 Furkan Onder 和 Samy Lahfa 的补丁。

  • bpo-39868:更新了 PEP 572的语言参考。

  • bpo-13790:将 doc 格式的“字符串”更改为“规范”。

  • bpo-17422:语言参考不再将默认类名称空间限制为仅字典。

  • bpo-39530:修复有关混合类型数字比较的误导性文档。

  • bpo-39718:更新token文档以反映 Python 3.8 中的新增内容

  • bpo-39677:将模块disMAKE_FUNCTION 操作数名称从* argc 更改为 flags *

  • bpo-38387:C-API 参考中的文档PyDoc_STRVAR宏。

Tests

  • bpo-40436:test_gdb 和 test.pythoninfo 现在检查 gdb 命令退出代码。

  • bpo-40162:将 Travis CI 配置更新为 OpenSSL 1.1.1f。

  • bpo-40146:在 Azure Pipelines 中将 OpenSSL 更新到 1.1.1f。

  • bpo-40019:如果由于优化了 Python 二进制文件而检测到 gdb 未能读取调试信息,则 test_gdb 现在跳过测试。

  • bpo-27807:如果sys.path路径包含.pth文件,则现在将跳过test_site.test_startup_imports()

  • bpo-39793:测试make_msgid时使用相同的域。 Batuhan Taskaya 修补程序。

  • bpo-1812:从加载程序具有 get_data 方法的程序包加载时,修复 doctest.testfile 中的换行处理。 Peter Donis 修补程序。

  • bpo-37957:test.regrtest 现在可以接收要忽略的测试模式列表(使用-i/-ignore 参数)或具有要忽略的模式列表的文件(使用-ignore-file 参数)。 Pablo Galindo 修补程序。

  • bpo-38502:如果有可用的进程组,则 test.regrtest 现在在 multiprocessing 模式(-jN 命令行选项)中使用进程组:如果os.setsid()os.killpg()函数可用。

Build

  • bpo-38360:支持 macOS -isysroot 标志的单参数形式。

  • bpo-40204:在Doc/Makefile中将 Sphinx 版本固定为 1.8.2.

  • bpo-40158:修复 NuGet 包(build/native/python.props)中的 CPython MSBuild 属性

  • bpo-38527:修复了 Solaris 上针对“浮字排序”的配置检查:有时,未使用正确的“ grep”命令。由 Arnon Yaari 修补。

Windows

  • bpo-40164:将 Windows 更新为 OpenSSL 1.1.1f

  • bpo-39930:确保所需的vcruntime140.dll包含在安装软件包中。

  • bpo-39847:在 await49 天正常运行时间时,在 await 互斥对象(对于threading中与锁相关的对象)时使计算机处于休眠状态时,请避免挂起。

  • bpo-38597distutils在可再发行版本不可用时将不再静态链接vcruntime140.dll。 CPython 的所有将来发行版都将包含此 DLL 的副本,以确保可以 continue 加载分布式扩展。

  • bpo-38380:更新 Windows 版本以使用 SQLite 3.31.1

  • bpo-39789:将 Windows 版本的生成计算机更新为 Visual Studio 2019(MSVC 14.2)。

  • bpo-34803:nuget.org 的软件包现在包括存储库参考和 Binding 的图标图像。

macOS

  • bpo-40164:更新 macOS 安装程序版本以使用 OpenSSL 1.1.1g。

  • bpo-38380:更新 macOS 版本以使用 SQLite 3.31.1

IDLE

  • bpo-27115:对于“转到行”,请使用具有 IDLE 标准行为和改进的错误检查的查询框子类。

  • bpo-39885:由于单击以获取 IDLE 上下文菜单会移动光标,因此任何文本选择都应为,现在已清除。

  • bpo-39852:现在,编辑“转到行”将清除所有选择,从而防止意外删除。它还会在状态栏上更新 Ln 和 Col。

  • bpo-39781:选择代码上下文行不再导致跳转。

  • bpo-38439:添加 256×256 像素的 IDLE 图标以支持更现代的环境。由 Andrew Clover 创建。删除未使用的 macOS idle.icns 图标文件。

  • bpo-38689:当 inspect.signature 在获取呼叫提示时失败时,IDLE 将不再冻结。

Tools/Demos

  • bpo-40179:在参数诊所中修复了#elif的翻译。

  • bpo-36184:将 python-gdb.py 移植到 FreeBSD。 python-gdb.py 现在检查“ take_gil”函数名称,以检查框架是否try获取 GIL,而不是检查特定于 Linux 的“ pthread_cond_timedwait”,该条件可能与 GIL 不同。

  • bpo-39889:对于包含单个元素(例如a[i:j,])的扩展切片,修复了unparse.py。使用 Tuples 构建索引时删除多余的 Tuples(例如a[i, j])。

C API

Python 3.8.2 finally版

*发布日期:2020-02-24 *

核心和内建函数

  • bpo-39382:当对象的__bases__具有单个引用时,请在issubclass()的单个继承路径中修复无用后使用,其第一项也是如此。 Yonatan Goldschmidt 修补程序。

  • bpo-39427:在命令行帮助部分中记录-X选项的所有可能性。 Pablo Galindo 修补程序。

Library

  • bpo-39649:删除 bdb.Bdb.format_stack_entry 中对__args__的过时检查。

  • bpo-39681:修复了 Cpickle 模块不允许从未公开 readinto()方法的类似文件的对象中进行 Pickling 的问题。

  • bpo-39546:修复了ArgumentParser中的回归,其中对于使用前缀字符而不是“-”的长选项,allow_abbrev=False被忽略。

  • bpo-39432:为 distutils 中的非 ASCII“ PyInit_…”符号名称实现 PEP-489 算法,以使其在 Windows 上也导出正确的初始化符号。

Documentation

  • bpo-17422:语言参考现在指定了对类名称空间的限制。改编自 Ethan Furman 的补丁。

  • bpo-39572:更新了 TypeDict total标志的文档。

  • bpo-39654:在 pyclbr doc 中,将“类”更新为“模块”,并添加 readmoduleComments。 HakanÇelik 修补程序。

IDLE

  • bpo-39663:添加 pyparse find_good_parse_start()的测试。

Python 3.8.2 发行候选 2

*发布日期:2020-02-17 *

Security

核心和内建函数

  • bpo-39619:在 HP-UX 系统上启用os.chroot()

  • bpo-39606:由对bpo-39386的修复引起的修复回归,阻止了在已经关闭或耗尽的异步生成器上调用aclose

  • bpo-39453:修复了在比较项目期间更改列表时list.__contains__()中可能发生的崩溃。罗东熙的补丁。

  • bpo-39219:现在,令牌生成器中引发的语法错误始终设置正确的“文本”和“偏移”属性。

Library

  • bpo-27657:3.8_.3 中包含的bpo-27657的原始修补程序“使用数字路径修复 urlparse()”(GH-16839)无意中引入了一种行为更改,该行为更改依赖于原始未定义的解析行为破坏了多个第三方程序包。该更改在 3.8.2 中还原,恢复了 3.8.0 和更早版本的行为。

  • bpo-39474:修复了(a)(b)(a)[b](a).b等表达式的 AST 起始位置。

  • bpo-21016pydoctrace模块现在使用sysconfig模块获取 Python 标准库的路径,以支持像 Fedora 上的/usr/lib64/python3.9/这样不常见的安装路径。 JanMatějek 修补程序。

  • bpo-39595:改进了 zipfile.Path 的性能,用于包含大量条目的文件。还提高了性能,并解决了与importlib_metadata 1.5一起发布的小问题。

IDLE

  • bpo-39600:在字体配置窗口中,删除重复的字体名称。

Python 3.8.2 发行候选 1

*发布日期:2020-02-10 *

Security

  • bpo-39401:避免在 Windows 7 启动时不安全地加载api-ms-win-core-path-l1-1-0.dll

  • bpo-39184:将审计事件添加到 os 和 pty 模块中的命令执行Function。

核心和内建函数

  • bpo-39579:将在ast_for_dotted_name中构造的Attribute个节点的结尾列偏移更改为指向当前节点的末尾,而不是最后一个NAME节点的末尾。

  • bpo-39510:在 BufferedReader 上的readinto()方法中修复段错误。

  • bpo-39492:修复了 C Pickler 中的一个参考循环,该循环防止垃圾收集已删除的腌制对象。

  • bpo-39421:修复了使用heapq模块和自定义比较运算符中的Function时可能发生的崩溃。

  • bpo-39386:防止再次 await 异步迭代器。

  • bpo-39235:修复函数调用中单独生成器表达式的 AST 结束位置,例如 f(i 为 a 中的 i)。

  • bpo-39209:以交互方式正确处理多行令牌。 Pablo Galindo 修补程序。

  • bpo-39216:修复仅位置参数的常量折叠优化-Anthony Sottile。

  • bpo-39215:当嵌套函数在仅位置参数上带有 Comments 时,请修复SystemError-由 Anthony Sottile 提供。

  • bpo-38588:修复了调用PyObject_RichCompareBool()时字典和列表可能崩溃的问题。

  • bpo-38610:pass在调用PyObject_RichCompareBool()时保留对列表元素的强引用来修复几种列表方法中可能发生的崩溃。

Library

  • bpo-39590:现在,在 deque .__ contains_和 deque.count 期间,Collections.deque 拥有强引用,从而修复了崩溃。

  • bpo-38149sys.audit()现在每次调用glob.glob()glob.iglob()仅被调用一次。

  • bpo-39450:在从unittest.case.shortDescription()返回文档字符串之前,将其从文档字符串中剥离出来。

  • bpo-39493:将typing.IO.closed标记为属性

  • bpo-39485:修复了unittest.mock.create_autospec()中的一个错误,该错误会抱怨扩展模块返回函数中定义的自定义 Descriptors 的参数数量错误。

  • bpo-39082:允许 AsyncMock 正确修补静态/类方法

  • bpo-39430:修复了tarfile中懒惰导入中的竞争条件。

  • bpo-39390:使用ignore回调shutil.copytree()修复了回归。现在,参数类型分别为 str 和 List [str]。

  • bpo-39389:在gzipFiles 中写入准确的压缩级别元数据,而不是总是表示最大压缩。

  • bpo-39274bool(fraction.Fraction)现在将返回一个布尔值,即使(分子!= 0)不返回布尔值(例如:numpy 数字)。

  • bpo-39297:提高了 importlib.metadata 分发发现的性能,并可以恢复无法访问的 sys.path 条目(importlib_metadata v1.4.0)。

  • bpo-39242:将 Gmane 域从 news.gmane.org 更新到 news.gmane.io,该域用于NNTP新闻阅读器服务器和 nntplib 测试的示例。

  • bpo-38907:在 http.server 脚本中,在 Windows 上还原到 IPv4 的绑定。

  • bpo-39152:修复 ttk.Scale.configure([name])以返回名称或所有选项的配置 Tuples。 Giovanni Lombardo 贡献了部分补丁。

  • bpo-39198:如果要在Logger.isEnabledFor中引发异常(例如,由于异步超时或 stopit),则logging全局锁可能无法适当释放,从而导致死锁。此更改用try...finally包裹该代码块,以确保释放锁定。

  • bpo-39191:在loop.run_until_complete()中启动新任务之前,请检查运行循环,以快速失败;它可以防止在引发异常之前产生新任务的副作用。

  • bpo-38871:正确地基于括号的基于过滤器的语句在 mod lib2to3中包含 lambda 表达式。罗东熙的补丁。

  • bpo-39142:对 logging.config.dictConfig 进行了更改,以避免将命名 Tuples 的实例转换为 ConvertingTuple。假定命名 Tuples 过于专业化,无法像普通 Tuples 一样对待。如果命名 Tuples 的用户需要 ConvertingTuple Function,则他们将必须在其命名 Tuples 类中自己实现该Function。

  • bpo-39129:修复asyncio.TimeoutError的导入路径

  • bpo-39057urllib.request.proxy_bypass_environment()现在忽略前导点,并且不再忽略尾随换行符。

  • bpo-39056:修复了-W 选项中处理无效警告类别的问题。如果不需要,则不再导入 re 模块。

  • bpo-39055base64.b64decode()validate=True现在引发 binascii.Error 如果 Importing 以单个\n结尾。

  • bpo-39033:在zipimport中修复NameError。 Karthikeyan Singaravelan 修补程序。

  • bpo-38878:修复了os.PathLike的__subclasshook__,以在继承时返回正确的结果。由 Bar Harel 修补。

  • bpo-35182:修复了当子进程已经关闭任何管道标准流但仍 continue 运行时,随后发生的Popen.communicate()调用崩溃。 Andriy Maletsky 修补程序。

  • bpo-38473:将内部模拟的签名用于unittest.mock.attach_mock()附加的自动指定方法。 Karthikeyan Singaravelan 修补程序。

  • bpo-38293:向property()个对象添加copy.copy()copy.deepcopy()支持。

Documentation

  • bpo-39153:澄清以下函数的引用语义:-PyObject_SetItem-PyMapping_SetItemString-PyDict_SetItem-PyDict_SetItemString

  • bpo-39392:说明在用turtle 填充时,重叠区域可能未被填充。

  • bpo-39381:在文档中提到asyncio.get_event_loop()仅在从主线程调用时才隐式创建新的事件循环。

  • bpo-38918:在检查文档类型和成员表的“函数”和“方法”部分中为__module__添加条目

  • bpo-3530:在ast模块文档中,修复一个具有误导性的NodeTransformer示例,并添加有关何时使用fix_missing_locations函数的建议。

Tests

  • bpo-39502:如果time.localtime()失败OverflowError,则跳过 test_zipfile.test_add_file_after_2107()。例如,在 AIX 6.1 上就是这种情况。

  • bpo-38546:修复 test_concurrent_futures 的 test_ressources_gced_in_workers():明确停止 Management 器,以防止测试完成后泄漏在后台运行的子进程。

Build

  • bpo-39144:ctags 和 etags 构建目标都包括 Modules/_ctypes 和 Python 标准库源文件。

Windows

  • bpo-39439:在 Windows 上激活 virtualenv 时,请遵循 Python 路径。

  • bpo-39393:try加载具有未解决的依赖关系的 DLL 时,改进错误消息。

  • Windows 上的bpo-38883home()expanduser()现在更喜欢 USERPROFILE,而不再使用 HOME,通常不为常规用户帐户设置。这使它们再次表现为os.path.expanduser(),在 3.8 中已更改为忽略 HOME,请参见bpo-36264

  • bpo-39185:build.bat 脚本具有其他选项,用于非常安静的输出(-q)和非常详细的输出(-vv)

IDLE

  • bpo-30780:为按钮,突出显示和键选项卡添加其余的配置对话框测试。

  • bpo-39388:“ IDLE 设置取消”按钮现在可取消待处理的更改

  • bpo-39050:使“ IDLE 设置”对话框的“帮助”按钮再次起作用。

  • bpo-34118:在库手册内置函数列表中,将 memoryview,range 和 tuple 标记为类,与 list 等相同。

  • bpo-38792:如果发生KeyboardInterrupt或 Shell 重新启动,请关闭 IDLE Shell 调用提示。 Zackery Spytz 修补程序。

  • bpo-32989:添加针对编辑器 newline_and_indent_event 方法的测试。从 pyparse find_good_parse_start 方法中删除无效代码。

Python 3.8.1 finally版

*发布日期:2019-12-18 *

核心和内建函数

  • bpo-39080:当星标表达式 AST 节点位于 Call AST 节点的* args 属性中的元素之中时,请固定 end_col_offset *的值。

  • bpo-39031:解析“ elif”节点时,该节点的 lineno 和 col_offset 现在指向“ elif”关键字,而不是其条件,从而使其与“ if”节点一致。 Lysandros Nikolaou 的补丁。

  • bpo-39008PySys_Audit()现在要求Py_ssize_t用作格式字符串中的大小参数,而不管是否在包含时定义了PY_SSIZE_T_CLEAN

Library

  • bpo-39022:更新 importlib.metadata 以包含对 importlib_metadata 1.3 的改进,包括更好的 EntryPoints 序列化和改进的自定义查找器文档。

  • bpo-38811:缺少os.link()时,修复pathlib中未处理的异常。 TokeHøiland-Jørgensen 修补程序。

  • bpo-36406:处理doctest中的名称空间包。 Karthikeyan Singaravelan 修补程序。

Tests

  • bpo-38546:现在,multiprocessing 和并发。将来测试将在测试完成时停止资源跟踪器进程。

Windows

macOS

  • bpo-38295:防止在 macOS Catalina 上的 test_py_compile 中的 test_relative_path 失败。

IDLE

  • bpo-38944:退出键现在关闭 IDLE 完成窗口。 Johnny Najera 的补丁。

  • bpo-38943:修复 IDLE 自动完成窗口并非总是出现在某些系统上。 Johnny Najera 的补丁。

Python 3.8.1 发行候选 1

*发布日期:2019-12-09 *

Security

  • bpo-38945:在执行 uu 编码时,换行符已转义,以防止它们溢出到编码文件的内容部分。这样可以防止在解码过程中恶意或意外修改数据。

  • bpo-37228:由于重大安全问题,不再支持asyncio.loop.create_datagram_endpoint()的* reuse_address *参数。这是由于 UDP 中SO_REUSEADDR的行为。有关更多详细信息,请参见loop.create_datagram_endpoint()的文档。 (由bpo-37228中的 Kyle Stanley,Antoine Pitrou 和 Yury Selivanov 贡献。)

  • bpo-38722runpy现在使用io.open_code()打开代码文件。 Jason Killen 修补程序。

  • bpo-38804:修复了http.cookiejar中的 ReDoS 漏洞。 Ben Caller 修补程序。

  • bpo-38622:为ctypes模块添加其他审核事件。

  • bpo-38418:修复os.system()的审核事件命名为os.system

核心和内建函数

  • bpo-38673:在 REPL 模式下,如果行以 Comments 或空格开头,请不要切换到 PS2.基于 BatuhanTaşkaya 的工作。

  • bpo-38922:现在,在代码对象上调用replace会引发code.__new__审核事件。

  • bpo-38920:为调用sys.excepthook()sys.unraisablehook()时添加审计钩子

  • bpo-38892:改进审核事件表和Function的文档。

  • bpo-38707MainThread.native_id现在可以在使用multiprocessing.Process产生的子进程中正确重置,而不是保留父进程的值。

  • bpo-38640:修复了编译器中的一个错误,该错误会在存在 break 语句时引发,并在 while 循环始终为 false 的情况下 continue 执行语句。 Pablo Galindo 修补程序。

  • bpo-38535:装饰器中不带参数的调用的 AST 节点的固定行号和列偏移。

  • bpo-38525:修复了使用空dict对象的反向迭代器时的分段错误。由 Dong-hee Na 和 Inada Naoki 修补。

  • bpo-35409:将异常抛出到异步生成器的紧密协程中时,请忽略 GeneratorExit 异常。

Library

  • bpo-39006:缺少 ssl 模块时修复 asyncio:如果 ssl 模块可用,则仅检查 ssl.SSLSocket 实例。

  • bpo-38708:修复解析空 msg-id 时电子邮件解析器中潜在的 IndexError。

  • bpo-38698:向电子邮件解析器添加新的InvalidMessageID令牌,以表示无效的 Message-IDHeaders。另外,在解析 Headers 后还有剩余值时,请添加缺陷。

  • bpo-38979:从ContextVar.__class_getitem__返回类以简化子类化。

  • bpo-38986:使 C 加速 TaskWakeupMethWrapper 的代表与纯 Python 版本的代表相同。

  • bpo-38529:丢弃有关在没有显式.close()调用的情况下删除流的过于嘈杂的异步警告。

  • bpo-38634readline模块现在可以在所有平台上的运行时检测 Python 是否链接到 libedit。以前,该检查仅在 macOS 上进行。

  • bpo-33684:修复json.tool当语言环境编码不是 UTF-8 时,无法读取具有非 ASCII 字符的 JSON 文件。

  • bpo-38698:防止 UnboundLocalError 出现在 parse_message_id 中

parse_message_id()不正确地使用了在异常处理程序中定义的令牌,该令牌在解析无效值时引发UnboundLocalError。 Claudiu Popa 修补程序。

  • bpo-26730:修复SpooledTemporaryFile.rollover()在文本模式下可能会损坏文件。 Serhiy Storchaka 修补程序。

  • bpo-38668:调用 func:shutil.copytree将目录树从一个目录复制到另一个子目录会导致无限循环和 RecursionError。添加了修复程序,以使用迭代器并创建要复制的条目的列表,从而避免了新创建目录的递归。 Bruno P. Kinoshita 的补丁。

  • bpo-37838typing.get_type_hints()正确处理以functools.wraps()装饰的Function。

  • bpo-38859:现在,在对 side_effects 迭代器进行说明时,AsyncMock 现在返回 StopAsyncIteration。从 PEP-479 开始,不可能从协程中引发 StopIteration 异常。

  • bpo-38857:AsyncMock 修复了 await 类型的返回值。它还涵盖了碰巧可以 await 的 side_effect 迭代值,并包装了返回 await 类型的可调用对象。在 await 这些 await 之前而不是原样返回。

  • bpo-38821:在国际化将nargs设置为特殊(非整数)值的参数的错误消息时,修复了argparse中未处理的异常。 Federico Bond 的补丁。

  • bpo-38820:使 Python 与 OpenSSL 3.0.0 兼容。 ssl.SSLSocket.getpeercert()不再返回带有尾随新行的 IPv6 地址。

  • bpo-38807:将os.path.join()TypeError消息更新为将os.PathLike个对象包括为可接受的 Importing 类型。

  • bpo-38785:如果未从asyncio.Future派生的对象的构造函数中调用父__init__,则可以防止异步崩溃。

  • bpo-38723pdb现在使用io.open_code()触发审核事件。

  • bpo-27805:允许使用open()在附加模式下打开管道和其他不可搜索的文件。

  • bpo-38686:在urllib.request.AbstractDigestAuthHandler中添加了对多个qop值的支持。

  • bpo-38334:修复了在加密的zipfile.ZipExtFile上向后搜索的问题。

  • bpo-34679:asynci.ProactorEventLoop.close()现在仅在主线程中调用 signal.set_wakeup_fd()。

  • bpo-31202pathlib.WindowsPath.glob()结果的大小写现在与 Literals 部分的模式的大小写匹配。

  • bpo-38521:修复了 statistics.NormalDist()中错误的相等比较。

  • bpo-38478:修复了inspect.signature.bind()中的一个错误,该错误导致在处理与仅位置参数相同名称的关键字参数时失败。 Pablo Galindo 修补程序。

  • bpo-33604:修复了hmac.newhmac.HMAC,当Ellipsis了 3.8 中现在需要的 digestmod 参数时,引发 TypeError 而不是 ValueError 的问题。还阐明了 hmac 模块的文档和文档字符串。

  • bpo-38422:澄清 pathlib 后缀的文档字符串

  • bpo-36993:改进了 zip64 额外数据不正确的损坏 zip 文件的错误报告。 Daniel Hillier 修补程序。

  • bpo-36820:将异常保存到 socket.py,codeop.py 和 dyld.py 中时生成的break周期,因为它们不仅使异常有效,而且使用户对象pass__traceback__属性保持有效。 Mario Corchero 修补程序。

  • bpo-34776:修复数据类以支持类型 Comments 中的前向引用

  • bpo-33348:lib2to3 现在可以像f(*[] or [])一样识别***之后的表达式。

  • bpo-27657:使用数字路径修复 urllib.parse.urlparse()。不再将诸如“ path:80”之类的字符串解析为路径,而是将其解析为方案(“ path”)和路径(“ 80”)。

Documentation

  • bpo-38816:仅针对 C-API,提供有关fork()与 CPython 运行时之间交互的更多详细信息。这包括有关应在何处不应该调用fork()的警告。

  • bpo-38351:将email个示例从%格式转换为 f 字符串。

  • bpo-38778:记录在子解释器中调用os.fork()时引发RuntimeError的事实。

  • bpo-38592:在 Python 文档网站上将巴西葡萄牙语添加到语言切换器。

Tests

  • bpo-38547:修复 test_pty:如果进程是会话领导者,则关闭主文件 Descriptors 会引发 SIGHUPsignal:运行测试时只需忽略 SIGHUP。

  • bpo-38992:修复了针对math.fsum()的测试,该测试由于不断折叠而失败。

  • bpo-38965:在 GCC 10 上修复 test_faulthandler。在faulthandler._stack_overflow()中使用“ volatile”关键字可防止在任何编译器上进行尾部调用优化,而不是依赖于编译器特定的编译指示。

  • bpo-38875:test_capi:现在,垃圾桶测试需要测试“ cpu”资源。

  • bpo-38841:在缺少用于命名的 Unix 域套接字的Function bind()的平台上,跳过 asyncio test_create_datagram_endpoint_existing_sock_unix。

  • bpo-38669:使用unittest.mock.patch.object()作为字符串传递目标时,引发TypeError

  • bpo-35998:在 test_asyncio.test_start_tls_server_1()中修复竞争条件。以前,替换协议的 test main()函数与测试 ServerProto 协议之间存在竞争状态,一旦获得 HELLO,该协议就会发送 ANSWER。现在,只有测试 main()函数负责发送数据,ServerProto 不再发送数据。

Build

  • bpo-37404asyncio现在使用ssl.SSLSocket套接字调用不兼容的方法时会引发TyperError。 Ido Michael 的补丁。

  • bpo-38809:在 Windows 上,构建脚本现在可以识别并使用活动虚拟环境中的 python.exe。

  • bpo-38684:禁用 Blake2,但 OpenSSL 支持它时,修复_hashlib 构建。

  • bpo-37415:修复了 ICC 编译器的 stdatomic.hHeaders 检查:ICC 实现缺少 Python 所需的 atomic_uintptr_t 类型。

Windows

  • bpo-33125:添加对构建和发布 Windows ARM64 软件包的支持。

  • bpo-38589:修复了 Windows 未安装到 C 盘时的 HTML 帮助快捷方式

  • bpo-38453:确保 ntpath.realpath()正确解析相对路径。

  • bpo-38519:恢复 nuget.org 和 Microsoft Store 程序包中缺少的内部 CHeaders。

  • bpo-38492:删除对 Microsoft C 运行时的pythonw.exe依赖性。

macOS

  • bpo-37931:修复了 Py_Finalize 之后,如果自上一个import posix以来环境已发生更改,则在重新初始化 posix 模块时发生的 OSX 动态构建崩溃。 Benoit Hudson 的补丁。

IDLE

  • bpo-38862:“格式”菜单上的“带尾空格”可在非 Shell 文件末尾删除多余的换行符。

  • bpo-26353:保存 IDLE Shell 窗口时停止添加换行符。

  • bpo-38636:修复“ IDLE 格式”菜单选项卡切换和文件缩进宽度。这些Function(默认快捷键 Alt-T 和 Alt-U)在 3.7.5 和 3.8.0 中被错误地禁用。

  • bpo-4630:添加一个选项来切换 IDLE 的 Shell,编辑器和输出窗口的光标闪烁。请参阅设置,常规,窗口首选项,光标闪烁。 Zackery Spytz 修补程序。

  • bpo-38598:请勿try编译 IDLE Shell 或输出窗口

C API

  • bpo-37633:为pythonrun.h中的宏重新导出一些函数兼容性包装器。

  • bpo-38540:修复了未定义宏PY_SSIZE_T_CLEANPyArg_Parse()和类似Function对于格式单元"es#""et#"的可能泄漏。

  • bpo-36389:现在在发布模式下也可以使用_PyObject_CheckConsistency()Function。例如,它可用于调试 GC 的visit_decref()函数中的崩溃。

Python 3.8.0 finally版

*发布日期:2019-10-14 *

核心和内建函数

  • bpo-38469:修复了存在* global *关键字时无法正确解析命名表达式范围的问题。 Pablo Galindo 修补程序。

  • bpo-38379:当循环垃圾收集(gc)运行终结器以恢复无法访问的对象时,当前 gc 运行将结束,而不会收集任何循环垃圾。但是,由collect()get_stats()报告的统计数据声称已收集了所有发现的循环垃圾,并且已收集了复活的物体。更改统计信息以报告未收集任何数据。

Library

Documentation

  • bpo-38294:添加不再转义字符列表以重新转义文档。

Tests

  • bpo-37531:在超时时,regrtest 不再try再次调用popen.communicate():它可以挂起,直到使用 stdout 和 stderr 管道的所有子进程完成。终止工作进程,并忽略其输出。对于 Python 最慢的构建机器人,还将主进程的故障处理程序超时时间从 1 分钟更改为 5 分钟。

Windows

  • bpo-38344:修复了 activate.bat 中的错误消息。

  • bpo-38359:确保pyw.exe启动器读取正确的注册表项。

  • bpo-38355:修复ntpath.realpathsys.executable上失败。

IDLE

  • bpo-36698:将无法编码的字符写入 stderr 时,IDLE 不再失败。现在,它作为常规 Python 解释器以反斜杠转义。在标准流中添加了errors字段。

Tools/Demos

  • bpo-38118:使用 GCC 内置的 strcmp()时,更新 Valgrind 抑制文件以忽略PyUnicode_Decode()中的错误警报。

  • bpo-38347:pathfix.py:假定以递归方式工作时,所有以“ .py”结尾的文件都是 Python 脚本。

C API

  • bpo-38395:修复了在调用某些关联的方法(可能会删除对代理引用的对象的最后引用)时,由于不正确的生命周期 Management 而导致的weakref.proxy个对象的崩溃。 Pablo Galindo 修补程序。

Python 3.8.0 发行候选 1

*发布日期:2019-10-01 *

Security

  • bpo-38243:将文档页面呈现为 HTML 时,转义服务器名称xmlrpc.server.DocXMLRPCServer。 (由 Dong-hee Na 在bpo-38243中贡献。)

  • bpo-38174:将供应商化的 Expat 库版本更新为 2.2.8,此版本解决了 CVE-2019-15903.

  • bpo-37764:修复了在电子邮件 Headers 没有尾随空格以及包含无效编码字的特定情况下,email._header_value_parser.get_unstructured 陷入无限循环的问题。 Ashwin Ramaswami 修补程序。

核心和内建函数

  • bpo-38006:修复了由于 weakref 和循环垃圾收集器的相互作用而导致的错误。我们必须清除垃圾中的所有弱引用,以防止其回调执行并导致崩溃。

  • bpo-38317:修正警告选项优先级:PyConfig.warnoptions具有最高优先级,如 PEP 587中所述。

  • bpo-36871:改进了模拟的 assert_has_calls 和 assert_has_awaits 方法的错误处理。修复了一个错误,即在将预期的调用绑定到模拟的规范时遇到的任何错误都会被静默吞噬,从而导致错误的错误输出。

  • bpo-38236:如果 Python 无法导入文件系统和 stdio 编码的 Python 编解码器,则现在将转储路径配置。

  • bpo-38013:即使未启动的异步生成器帮助程序也允许调用async_generator_athrow().throw(...)。它修复了asyncio.run()通话结束时的烦人警告。

  • bpo-38124:修复了 PyState_AddModule 中的一个错误,该错误可能导致超出范围的内存访问。

  • bpo-38005:修复了 InterpreterID 和 ChannelID 的比较和创建。

  • bpo-37994:修复了在多个站点中属性查找失败时可以消除任意错误的问题。仅 AttributeError 应该被静音。

  • bpo-37990:无法正确打印 gc 统计信息中的经过时间。该错误是 3.8b4 中的回归。

  • bpo-37966:pass实现 Unicode 标准的完整 normalization-quick-check 算法,大大加快了未标准化字符串is_normalized()的实现。

  • bpo-20490:改进了循环from导入中部分初始化的模块的导入错误消息-作者:安东尼·索特(Anthony Sottile)。

  • bpo-37409:确保从交互式会话和脚本(没有父程序包)中进行显式相对导入始终会引发 ImportError,而不是将当前模块视为程序包。本·刘易斯的补丁。

  • bpo-37619:在将包装 Descriptors 从一个类添加到另一个类(例如,在int子类上设置__add__ = str.__add__)时,在调用运算符时会正确引发异常。

  • bpo-30773:禁止 aclose()/ asend()/ athrow()并行运行。修复 ag_running 以反映 AG 的实际运行状态。

Library

  • bpo-38319:在套接字和 shutil 模块中使用的 sendfile()在 32 位体系结构上为> = 2GiB 的文件引发 OverflowError。 (Giampaolo Rodola 修补程序)

  • bpo-38242:还原新的 asyncio Streams API

  • bpo-38019:正确处理已关闭的异步 unix 管道的暂停/恢复读取。

  • bpo-38163:现在,子模拟将检测其类型为同步还是异步,异步子模拟将为 AsyncMocks,同步子模拟将为 MagicMock 或 Mock(取决于其父类型)。

  • bpo-38161:从 AsyncMock 中删除_AwaitEvent。

  • bpo-38216:允许罕见的代码希望从http.client库发送无效的 http 请求。 bpo-30458的修复程序导致某些项目出现故障,这些项目在面对错误请求时依赖于此Function来测试自己的行为。

  • bpo-38108:AsyncMock 上的所有同步魔术方法现在都将返回 MagicMock。现在,MagicMock 上的所有异步魔术方法都将返回 AsyncMock。

  • bpo-38248:异步:修复不一致的立即任务取消

  • bpo-38237:内置 pow 函数的参数更具描述性。现在,它们也可以作为关键字传递。

  • bpo-38191NamedTupleTypedDict类型的构造函数现在可以接受任意关键字参数名称,包括“ cls”,“ self”,“ typename”,“ _ typename”,“ fields”和“ _fields”。不建议使用pass关键字传递位置参数。

  • bpo-38185:修复了sqlite3.Row索引中不区分大小写的字符串比较。

  • bpo-38136:将 AsyncMock 呼叫计数和 await 计数更改为两个不同的计数器。现在,await 计数仅在 await 协程时才计数,而不是在调用协程时才计数,反之亦然。围绕此更新文档。

  • bpo-37828:修复unittest.mock.Mock.assert_called()exception 中的默认模拟名称。亚伯拉罕·托里兹·克鲁兹(Abraham Toriz Cruz)的补丁。

  • bpo-38175:修复了sqlite3.Row个对象比较时的内存泄漏。

  • bpo-33936:_hashlib 不再使用 OpenSSL 1.1.0 调用过时的 OpenSSL 初始化函数。

  • bpo-34706:保留 inspect.Signature.from_callable 中的子类。

  • bpo-38153:现在已将 OpenSSL 哈希算法的名称标准化,以遵循 Python 的命名约定。例如,OpenSSL 使用 sha3-512 代替 sha3_512 或 blake2b512 代替 blake2b。

  • bpo-38115:修复了 dis.findlinestarts()中的一个错误,该错误将返回无效的字节码偏移量。记录代码对象的 co_lnotab 可以包含无效的字节码偏移量。

  • bpo-38148:将插槽添加到asyncio传输类中,这可以减少内存使用。

  • bpo-36991:修复了在某些不受支持的 Importing 错误情况下转义 ZipFile.extract()的潜在错误 AttributeError 异常。

  • bpo-38134:删除 PBKDF2_HMAC_fast 的过时副本。所有受支持的 OpenSSL 版本都包含一个快速实现。

  • bpo-38132:OpenSSL hashlib 包装器使用了一个更简单的实现。几个宏和无意义的缓存不见了。哈希名称现在来自 OpenSSL 的 EVP。算法名称保持不变,只不过现在总是小写。

  • bpo-38008:修复父类签入协议,以正确识别提供内置协议的模块,而不是假设它们全部来自collections.abc模块

  • bpo-37405:pass返回 1Tuples 而不是字符串,修复了非 CAN_ISOTP AF_CAN 地址族套接字的 socket.getsockname()的回归错误。

  • bpo-38121:更新 importlib.metadata 中函数的参数名称,以匹配 importlib_metadata 0.22 版本中的更改。

  • bpo-38110:os.closewalk()实现现在在可用的平台上使用 libc fdwalk()API。

  • bpo-38093:修复了 AsyncMock,使其在与 AsyncContextManagers 或 AsyncIterators 一起使用时不会崩溃。

  • bpo-37488:向datetime.utctimetuple()datetime.utcnow()datetime.utcfromtimestamp()添加警告。

  • bpo-38086:使用importlib_metadata 0.21中的更改更新 importlib.metadata。

  • bpo-37251:删除__code__,在 AsyncMock 中检查将函数规范错误地评估为异步对象,但无法评估具有__await__但没有定义为异步对象的__code__属性的类。

  • bpo-38037:修复signal模块中的参考计数器。

  • bpo-38066:隐藏内部 asyncio.Stream 方法:feed_eof(),feed_data(),set_exception()和 set_transport()。

  • bpo-38059:inspect.py 现在使用 sys.exit()而不是 exit()

  • bpo-37953:在typing中,针对ForwardReferences改进了__hash____eq__方法。

  • bpo-38026:固定inspect.getattr_static()使用isinstance,但应避免动态查找。

  • bpo-38010:在与importlib_metadata 0.20 同步的importlib.metadata中,阐明files()的行为并解决了对dist-info软件包的requires()仅返回一个要求的问题。

  • bpo-38006:weakref.WeakValueDictionary 定义了一个本地 remove()函数,用作弱引用的回调。该函数是使用闭包创建的。修改实现以避免关闭。

  • bpo-34410:修复了重新 Importingtee()迭代器时发生的崩溃。在这种情况下,现在引发 RuntimeError。

  • bpo-37140:修复了 Python 3.8 的 ctypes 回归。当 ctypes.Structure pass副本传递给函数时,ctypes 内部创建了一个临时对象,该对象具有两次调用结构终结器(del)的副作用。 Python 语义要求终结器必须被精确地调用一次。修复 ctypes 内部,不再调用终结器两次。

  • bpo-37972unittest.mock.call对象的下标现在具有与任何其他自定义属性相同的链接机制,因此以下用法不再引发TypeError

call().foo().getitem('bar')

pass blhsing 修补

  • bpo-22347:更新 mimetypes.guess_type 以允许仅使用主机名正确解析 URL。罗东熙的补丁。

  • bpo-37885:venv:在停用时不生成未设置变量警告。

  • bpo-37785:修复了argparse中的 xgettext 警告。

  • bpo-11953:正在socket中完成 WSA *错误代码。

  • bpo-37424:修复了捕获输出时在subprocess.run()上使用超时时可能挂起的问题。如果子进程产生了自己的子进程,或者将其 stdout 或 stderr 句柄与另一个进程连接,则在达到超时后我们可能会挂起,并且在try从管道读取finally输出时我们的孩子被杀死了。

  • bpo-37212unittest.mock.call()现在在 repr 输出中保留关键字参数的 Sequences。 Karthikeyan Singaravelan 修补程序。

  • bpo-37305:将.webmanifest-> application/manifest json 添加到可识别的文件类型和 Content TypeHeaders 列表中

  • bpo-21872:修复lzma:模块未完全解压缩数据。解压缩 FORMAT_ALONE 格式的文件时,它没有结束标记,有时不能输出最后一到几十个字节。马琳的补丁。

  • bpo-37206:在函数签名中,不能再表示为 Python 对象的默认值不再正确地表示为None

  • bpo-12144:确保在CookieJar.make_cookies()中处理具有expires属性的 cookie。

  • bpo-31163:pathlib.Path 实例的重命名和替换方法现在返回新的 Path 实例。

  • bpo-25068urllib.request.ProxyHandler现在将传递的字典的键小写。

  • bpo-21315:尽管缺少空格,但仍对包含 RFC2047 编码字的电子邮件 Headers 进行了解析,并记录了缺陷。现在,在将已编码的单词注册为缺陷之后,也缺少尾随空白。

  • bpo-36250:在非主线程中忽略signalinteraction中的ValueError

  • bpo-35168shlex.shlex.punctuation_chars现在是只读属性。

  • bpo-20504:修复了 multipart/form-data 请求中没有Content-LengthHeaders 的cgi模块中的错误。

  • bpo-34519:为 HP Roman 8 修补程序添加其他别名。

Documentation

  • bpo-26868:修复了PyModule_AddObject()的示例用法以正确处理错误。

  • bpo-36797:修复了 distutils API 参考中的无效链接。

  • bpo-37977:更强烈,更清楚地警告 pickle 不安全

  • bpo-37937:在sys.settrace()个文档中提及frame.f_trace

  • bpo-36260:将解压缩陷阱添加到 zipfile 模块文档中。

  • bpo-36960:重组了datetime个文档,以使其更加用户友好并提高可读性。布拉德·所罗门的补丁。

  • bpo-23460:使用:g说明符格式化十进制字符串的文档已更新,以反映正确的指数表示法截止点。原始补丁由 Tuomas Suutari 提供。

  • bpo-35803:记录并测试tempfile函数可以接受dir参数的path-like object。 Anthony Sottile 修补程序。

  • bpo-33944:添加了有关.pth 文件中代码预期用途的 Comments。

  • bpo-34293:修复有关 PAPER 环境变量和 PDF 版本的 Doc/Makefile

Tests

  • bpo-38239:修复用于链接时间优化(LTO)构建的 test_gdb。

  • bpo-38275:test_ssl 现在可以更好地处理禁用的 TLS/SSL 版本。可以识别 OpenSSL 的加密策略和运行时设置,并跳过针对禁用版本的测试。对于使用严格设置覆盖了 OpenSSL 默认设置的平台,测试还接受更多 TLS minimum_versions。

  • bpo-38271:使用传统的 PKCS#5 格式的 3DES 加密了 test_ssl 的私钥。 3DES 和 PKCS#5 的摘要算法被某些严格的加密策略阻止。请改用 PKCS#8 格式和 AES256 加密。

  • bpo-38270:test.support 现在具有帮助程序Function,以检查哈希摘要Function的可用性。重构了一些测试以避免 MD5,而改用 SHA256.其他测试被标记为使用 MD5,并且在禁用 MD5 时被跳过。

  • bpo-37123:multiprocessing 测试 test_mymanager()现在也期望-SIGTERM,不仅是退出代码 0.如果停止时间超过 1 秒,BaseManager._finalize_manager()会将 SIGTERM 发送到 Management 器进程,这在慢速的构建机器人上会发生。

  • bpo-38212:multiprocessing 测试:将 test_queue_feeder_donot_stop_onexc()超时从 1 秒增加到 60 秒。

  • bpo-38117:使用 OpenSSL 1.1.1d 进行测试

  • bpo-37531:增强 regrtest 多进程超时:杀死工作进程时写一条消息,捕获 popen.kill()和 popen.wait()异常,在对 popen.communicate()的第二次调用上设置超时。

  • bpo-37876:添加针对 ROT-13 编解码器的测试。

  • bpo-37252:修复test_closetest_events_mask_overflow devpoll 测试中的 assert。

  • bpo-34001:使 LibreSSL pass test_ssl。 LibreSSL 处理最小和最大 TLS 版本的方式与 OpenSSL 不同。

  • bpo-36919:使test_source_encoding.test_issue2301实现独立。该测试现在对 CPython 和 IronPython 均适用。

  • bpo-34596:取消调用unittest.skip()时的默认原因。由 Naitree Zhu 修补。

Build

  • bpo-38301:在 Solaris 系列中,我们必须确保使用-D_REENTRANT。 JesúsCeaAvión 修补程序。

  • bpo-36210:更新 AIX 的可选扩展模块检测。 ossaudiodev 和 spwd 不适用于 AIX,并且不再报告为丢失。 ncurses 的第三方打包(具有 ASIS 支持)与官方支持的 AIX curses 库冲突,因此将 AIX 配置为使用 libcurses.a。但是,跳过try构建_curses_panel 的过程。

M Felt 修补

  • bpo-36002:使用AC_PATH_TOOL而不是AC_PATH_TARGET_TOOL找到llvm-profdatallvm-ar二进制文件。

  • bpo-37936.gitignore文件以无尾随斜杠的方式系统地保持“根目录”,所有规则均适用于 repo 协议中特定位置的文件。以前,当要忽略的目标文件恰好位于存储库的根目录时,我们经常会意外地忽略树中任何位置具有相同名称的文件和目录。

  • bpo-37936.gitignore文件不再适用于实际上在 Git 存储库中跟踪的任何文件。由 Greg Price 修补。

Windows

  • bpo-38117:将 Binding 的 OpenSSL 更新到 1.1.1d

  • bpo-38092:减少在 Windows 虚拟环境中使用 multiprocessing 时的开销。

  • bpo-38133:允许 py.exe 启动器从 Microsoft Store 定位安装并改善活动虚拟环境的显示。

  • bpo-38114pip.ini不再包含在 Nuget 软件包中。

  • bpo-36634os.cpu_count()现在返回活动处理器,而不是最大处理器。

  • bpo-36634:现在,当现有变量包含双引号字符时,venv activate.bat 可以工作。

  • bpo-38081:防止在'NUL'上调用os.path.realpath()时出错。

  • bpo-38087:修复 test_pathlib 和 test_ntpath 中的区分大小写。

  • bpo-38088:修复了仅在安装了 v142 工具集的情况下 distutils 找不到 vcruntime140.dll 的问题。

  • bpo-37283:确保命令行和 unattend.xml 设置覆盖 Windows 安装程序中以前检测到的状态。

  • bpo-38030:修复os.stat()在 Windows 上针对块设备失败

  • bpo-38020:修复了在不支持链接的文件上调用os.readlink()(或间接passrealpath())时可能发生的崩溃。

  • bpo-37705:改进winerror_to_errno()的实现。

  • bpo-37702:修复 Windows 上创建 SSLContext 对象或运行 urllib.request.urlopen('https://…')的内存泄漏。

  • bpo-37445:在FormatMessageW()个呼叫中包含FORMAT_MESSAGE_IGNORE_INSERTS标志。

  • bpo-37380:不要在 Windows 上使用subprocess._active收集未完成的进程以供以后清理。 Ruslan Kuprieiev 修补程序。

  • bpo-32587:使winreg.REG_MULTI_SZ支持零长度字符串。

macOS

  • bpo-38117:在 macOS 安装程序中将 OpenSSL 更新为 1.1.1d。

  • bpo-38089:将 Azure Pipelines 移至最新的 VM 版本,并使 macOS 测试为可选

IDLE

  • bpo-35379:退出 IDLE 时,捕获任何 AttributeError。当两次调用 EditorWindow.close 时,发生一种情况。当从终端运行 IDLE 时,打印回溯是无用且烦人的。

  • bpo-38183:为避免出现问题,test_idle 会忽略用户配置目录。它不再try创建或访问.idlerc 或其中的任何文件。用户必须运行 IDLE 才能发现保存设置的问题。

  • bpo-38077:IDLE 初始化时不再将'argv'添加到用户名称空间。此错误仅影响 3.7.4 和 3.8.0b2 至 3.8.0b4.

  • bpo-38041:Shell 重新启动行现在会填满窗口宽度,始终以'='开头,并避免不必要的换行。如果所包含的文件名相对于宽度较长,则该行仍会换行。

  • bpo-35771:为避免在速度较慢的计算机上偶尔出现虚 Pseudotest_idle 故障,请增加 test_tooltip 中的hover_delay

  • bpo-37902:为 IDLE 模块,路径和堆栈浏览器添加滚轮滚动。由 George Zhang 修补。

Tools/Demos

  • bpo-37803:pdb 的--help--version长选项现在可以使用。

  • bpo-37064:将选项-k 添加到 pathscript.py 脚本:保留 shebang 标志。将选项-a 添加到 pathscript.py 脚本:添加标志。

C API

Python 3.8.0 beta 4

*发布日期:2019-08-29 *

Security

  • bpo-34155:解析具有多个@(例如 a @ b @ c.com.)的无效电子邮件地址,以不将第二个@之前的部分作为有效电子邮件地址返回。pass maxking 和 jpic 进行补丁。

核心和内建函数

PEP 最初建议的TargetScopeError子类已被删除,而只是针对不允许的情况提出常规语法错误。

  • bpo-36311:解码大于 2GiB 的字节对象更快,并且当多字节字符跨越块边界时不再失败。

  • bpo-37433:修复SyntaxError指示器为多行字符串打印了太多空格-作者:安东尼·索特(Anthony Sottile)。

  • bpo-20523pdb.Pdb在 Windows 7 中支持~/ .pdbrc。Tim Hopper 和 Dan Lidral-Porter 进行了修补。

Library

  • bpo-37834:如果在没有 fd 系统调用支持的非 Windows 系统上构建(例如旧版本的 macOS),请防止 shutil.rmtree 异常。

  • bpo-37965:修复了由 distutils.ccompiler.CCompiler.has_function 引起的 C 编译器警告。

  • 现在,当获得“名称”和“模式”属性的值时,bpo-37960repr()的缓冲流和文本流仅使预期的异常静音。

  • bpo-37951:现在,子流程模块的大多数Function都可以在子解释器中再次使用。子解释器中仅限制* preexec_fn *。

  • bpo-36205:修复 time.process_time()的常规实现,以正确报告系统和用户 CPU 时间的总和。

  • bpo-37950:使用未完全初始化的节点调用时修复ast.dump()

  • bpo-34679:从非主线程恢复 Windows IOCP 事件循环的实例化。

  • bpo-36917:添加ast.NodeVisitor.visit_Constant()方法的默认实现,该方法会发出弃用警告并调用相应的方法visit_Num()visit_Str()等。

  • bpo-37798:更新 test_statistics.py 以验证统计信息模块对于 C 和 Python 实现均适用。罗东熙的补丁

  • bpo-26589:向 http 模块添加了新的状态代码:451 UNAVAILABLE_FOR_LEGAL_REASONS

  • bpo-37915:修复了比较datetime.timezonedatetime.tzinfo对象的实例时出现的分段错误。 Pablo Galindo 修补程序。

  • bpo-37868:在给定永远不会在__getattr_中引发 AttributeError 的实例时,修复 dataclasses.is_dataclass。也就是说,即使它不是数据类,也为__dataclass_fields_返回某些内容的对象。

  • bpo-37811:修复了socket模块的socket.connect(address)函数在系统调用break的情况下无法构建连接的问题。在所有使用poll(2)系统调用只能使用非负整数和-1 作为超时值的 OS 上都观察到了该问题。

  • bpo-21131:修复faulthandler.register(chain=True)堆栈。故障处理程序现在分配专用的SIGSTKSZ*2字节堆栈,而不仅仅是SIGSTKSZ字节。在某些平台上,在 Faulthandlersignal 处理程序中调用前一个 signal 处理程序将使用SIGSTKSZ字节以上的堆栈内存。

  • bpo-37798:添加用于统计的 C 快速路径。NormalDist.inv_cdf()由 Dong-hee Na 修补

  • bpo-37819:添加 Fraction.as_integer_ratio()以匹配 bool,int,float 和 decimal 中的相应方法。

  • bpo-37810:处理标签时,在差异输出中修复difflib ?提示。 Anthony Sottile 修补程序。

  • bpo-37772:在zipfile.Path中,添加隐式目录时,请确保添加了原始目录,并且排除了重复目录。

  • bpo-28292:将 calendar.py 帮助器标记为私有。遵循 PEP 8 指南以维护模块中的样式约定,它解决了用户混淆的已知情况。

  • bpo-18049:在 Python/thread_pthread.h 中为 AIX 添加 THREAD_STACK_SIZE 的定义。默认线程堆栈大小导致崩溃,默认递归限制由 M Felt 修补

  • bpo-37738:修复 curses 的实现addch(str, color_pair):将颜色对传递给setcchar(),而不是始终将 0 作为颜色对传递。

  • bpo-37723:修复了具有大量字符集的正则表达式解析的性能下降。 Yann Vaginay 修补程序。

  • bpo-32178:try解析以:开头的无效地址字段时,修复了email程序包中的 IndexError。

  • bpo-37685:固定比较datetime.timedeltadatetime.timezone

  • bpo-37695:更正curses.unget_wch()错误消息。 Anthony Sottile 修补程序。

  • bpo-37354:将 Activate.ps1 Powershell 脚本设为静态以允许对其进行签名。

  • bpo-37664:更新轮与 surepipBinding 在一起(pip 19.2.3 和 setuptools 41.2.0)

  • bpo-37642:允许datetime.timezone的纯 Python 实现表示接近最小和最大边界的亚分钟偏移,特别是在(23:59,24:00)和(-23:59,24:00)范围内。 Ngalim Siregar 修补程序

  • bpo-16970:将无效值传递给 Robert Leenders 的 nargs Patch 时添加值错误

  • bpo-37587:对于长字符串,使 json.loads 更快。 (Marco Paolini 修补程序)

  • bpo-18378:将“ UTF-8”识别为 locale._parse_localename 中 LC_CTYPE 的有效值。

  • bpo-37531:现在,如果“ python3 -m test -jN –timeout = TIMEOUT”运行的时间超过* TIMEOUT *秒,则会终止该工作进程。

  • bpo-37482:使用编码字和特殊字符修复原始发件人或目标地址字段中显示名称的序列化。

  • bpo-37372:修复了秒数> = 24 时从 Python 2 中解开 datetime.time 对象的错误。 Justin Blanchard 的补丁。

  • bpo-37085:在套接字模块中添加可选的 Linux SocketCAN Broadcast Manager 常数,用作配置 BCM 行为的标志。丁(Karl Ding)修补。

  • bpo-36871:在针对方法调用 assert 模拟对象时,确保使用方法签名代替类的构造函数签名。 Karthikeyan Singaravelan 修补程序。

  • bpo-36582:修复UserString.encode()以正确返回bytes而不是UserString实例。

  • bpo-34775:现在,当传递 str 或 PurePath 实例以外的内容时,PurePath 的除法处理将返回 NotImplemented 而不是引发 TypeError。 Roger Aiudi 修补程序。

Documentation

  • bpo-37979:在 datetime.fromisoformat 文档中添加了指向 dateutil.parser.isoparse 的链接。 Paul Ganssle 修补程序

  • bpo-37759:开始对 Whatsnew 3.8 进行编辑

  • bpo-37726:停止在本教程中推荐使用 getopt 进行命令行参数解析,并升级 argparse。

  • bpo-37256:修复urllib.requestRequest的参数写法

  • bpo-37004:在 difflib 文档中,添加了一条 Comments,明确警告警告 SequenceMatcher 的 ratio 方法的结果可能取决于 Importing 字符串的 Sequences。

  • bpo-36487:使 C-API 文档清楚“主要”解释器是什么。

Tests

  • bpo-37805:添加针对 json.dump(...,skipkeys = True)的测试。罗东熙的补丁。

Build

  • bpo-37707:标记一些单独的测试以在使用–pgo 时跳过。测试表明,PGO 的任务时间明显增加,并且可能无助于改进finally可执行文件的优化。

Windows

  • bpo-37549os.dup()不再对 Windows 7 上的标准流失败。

  • bpo-1311:Windows 上的nul文件现在从exists()返回 True,从os.stat()设置S_IFCHR返回有效结果。

  • bpo-9949:启用对os.realpath()中以下符号链接的支持。

  • bpo-37834:将os.lstat()中 Windows 上的所有名称代理重新解析点和os.stat()中的其他解析点视为常规文件。

  • bpo-36266:在_PyImport_FindSharedFuncptrWindows()中导入模块期间发生 DLL 加载失败时,在格式化的错误消息中添加模块名称。 Srinivas Nyayapati 修补程序。

  • bpo-25172:try在 Windows 上导入crypt模块将导致ImportError并显示一条消息,说明 Windows 不支持该模块。在其他平台上,如果基础_crypt模块不可用,则 ImportError 将包含一条说明问题的消息。

  • bpo-37778:修复用于文件关联到 Microsoft Store 程序包的图标。

  • bpo-37734:修复了使用注册表值从 Microsoft Store 应用启动 Python 的问题。

  • bpo-28269:将strcasecmp()替换为系统Function_stricmp()。龚敏敏的补丁。

macOS

  • bpo-18049:在 macOS 上将线程的默认堆栈大小从 5MB 增加到 16MB,以匹配主线程的堆栈大小。这样可以避免线程深度递归时崩溃。

IDLE

  • bpo-37824:正确处理 IDLE shell 中的用户 Importing 警告。停止将 SyntaxWarnings 转换为 SyntaxErrors。

  • bpo-37929:现在,当没有 Shell 窗口时,“ IDLE 设置”对话框将正确关闭。

  • bpo-37849:固定的完成列表显示在当前行上方时过高或过低。

  • bpo-36419:重构 IDLE 自动完成Function并改进测试。

  • bpo-37748:重新排列“运行”菜单。将最常见的选择“运行模块”放在顶部。

Tools/Demos

  • bpo-37942:改进 ArgumentClinic 浮点转换器。

  • bpo-37034:现在,对于仅具有关键字参数的错误(而不是其位置),“参数诊所”将使用参数名称。补丁由 RémiLapeyre 提供。

C API

  • bpo-36763:现在由PySys_AddXOption()添加的选项的处理方式与PyConfig.xoptions和命令行-X选项相同。

  • bpo-37926:修复PySys_SetArgvEx(0, NULL, 0)中的崩溃。

Python 3.8.0 beta 3

*发布日期:2019-07-29 *

Security

  • bpo-37461:解析特制电子邮件标题时修复无限循环。由 Abhilash Raj 修补。

核心和内建函数

  • bpo-37593:交换ast.parameters节点的构造函数中的* posonlyargs args *参数的位置。

  • bpo-36974:为内置函数和方法的每个调用约定实现了单独的 vectorcall 函数。这样可以提高通话性能。

Library

  • bpo-37697:将importlib.metadataimportlib_metadata 0.19同步,从而改进了 EGG-INFO 文件的处理并修复了入口点名称包含冒号时的崩溃。

  • bpo-37691:让 math.dist()将坐标接受为序列(或可迭代),而不仅仅是 Tuples。

  • bpo-37664:更新轮与 surepipBinding 在一起(pip 19.2.1 和 setuptools 41.0.1)

  • bpo-36324:将统计信息的内部属性设为 NormalDist()私有。

  • bpo-37491:在解析带有意外结束的带引号的字符串值的电子邮件标题时,修复IndexError。由 Abhilash Raj 修补。

  • bpo-37579:当要比较的另一个对象不是同一类型以匹配 C 实现时,在__eq____eq__的 Python 实现中返回NotImplemented。 Karthikeyan Singaravelan 修补程序。

  • bpo-21478:使用unittest.mock.attach_mock()将自动指定对象附加到模拟对象时,记录对父对象的呼叫。 Karthikeyan Singaravelan 修补程序。

  • bpo-37502:当 buffers 参数设置为 None 时,pickle.loads()不再引发 TypeError

  • bpo-37520:当路径对象标识子目录时,zipfile.Path.parent 的正确行为。

  • bpo-18374:修复在某些情况下嵌套ast.BinOp实例的值过大的.col_offset属性。

  • bpo-37421:修复multiprocessing.util.get_temp_dir()终结器:还要清除当前进程的'tempdir'配置,因此对get_temp_dir()的下一次调用将创建一个新的临时目录,而不是重用已删除的临时目录。

  • bpo-37481:python 3.8 中不推荐使用 distutils bdist_wininst命令,而应使用bdist_wheel(wheel 包)。

  • bpo-26967:带有allow_abbrev=FalseArgumentParser不再禁用短标记的分组,例如-vv,而仅禁用记录的长标记的缩写。 Zac Hatfield-Dodds 的补丁。

  • bpo-37347sqlite3.Connection.create_aggregate()sqlite3.Connection.create_function()sqlite3.Connection.set_authorizer()sqlite3.Connection.set_progress_handler() sqlite3.Connection.set_trace_callback()方法会导致段错误,如果其中某些方法被相等的对象调用两次却不相同。现在,回调存储起来更加谨慎。 Aleksandr Balezin 的补丁。

  • bpo-36564:修复了电子邮件 Headers 折叠逻辑中的无限循环,当电子邮件策略的 max_line_length 长度不足以在邮件中包含所需的标记和任何值时,该无限循环将触发。 Paul Ganssle 修补程序

Documentation

  • bpo-32910:删除 venv 的停用Function的实施特定行为。

  • bpo-37284:添加简短说明以指示任何新的sys.implementation必需属性都必须经过 PEP 流程。

  • bpo-30088:记录了mailbox.Maildir构造函数未try验证 maildir 文件夹布局的正确性。 Sviatoslav Sydorenko 修补程序。

  • bpo-37521:修复importlib示例,以pass importlib.util.module_from_spec()将所有新创建的模块立即插入 sys.modules 中,而不是在调用 loader.exec_module()之后。

感谢本杰明·明茨(Benjamin Mintz)发现错误。

  • bpo-37456:现在,斜杠('/')已成为语法的一部分。

  • bpo-37487:修复 PyList_GetItem 索引说明以使其包含 0.

  • bpo-37149:用指向 archive.org 副本的链接替换新墨西哥 State 理工学院 John Shipman 的 Tkinter 8.5 参考的无效链接。

  • bpo-37478:在 os.chdir()的描述中添加了可能的 exception。

Tests

Build

  • bpo-36044:减少为 PGO 生成任务运行的单元测试的数量。这样可以使任务加速约 15 倍。运行完整的单元测试套件很慢。由于执行的代码分支不多,因此此更改可能会导致优化构建效果稍差。如果您愿意 await 慢得多的构建,则可以使用'./configure [..] PROFILE_TASK =“-m test –pgo-extended”'恢复旧的行为。我们不保证哪个 PGO 任务集可以产生更快的构建。关心的用户应运行自己的相关基准,因为结果可能取决于环境,工作量和编译器工具链。

Windows

  • bpo-37672:将 Windows Store 软件包的 pip 切换为使用 Binding 的pip.ini而不是 PIP_USER变量。

IDLE

  • bpo-37692:pass示例 shell 交互和更好的 shell 元素标签来改进高亮配置示例。

  • bpo-37628:“设置”对话框不再随字体大小扩展。

  • bpo-37627:使用最近 Importing 的命令行参数初始化“自定义运行”对话框。用户可以选择在提交之前进行编辑。

  • bpo-33610:首次打开时,修复代码上下文未显示正确的上下文。

  • bpo-37530:优化代码上下文以减少不需要的后台活动。现在,字体和突出显示更改与文本更改一起发生,而不是在随机延迟之后发生。

  • bpo-27452:pass内联RemoveFile并简化CreateConfigHandlers中对file的处理来清理config.py

  • bpo-17535:为 IDLE 编辑器窗口添加可选的行号。除非在配置对话框的“常规”选项卡中另有设置,否则 Windows 将打开而没有行号。