python / 3.7.2rc1 / all / whatsnew-changelog.html

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 将打开而没有行号。

  • bpo-26806:要补偿 IDLE 添加的堆栈帧并避免递归限制较低的可能问题,请在用户代码执行过程中为限制增加 30.在报告递归限制时减去 30,以使此添加过程几乎透明。

  • bpo-36390:将“格式”菜单的Function转换为 format.py。组合来自 editor.py 的段落.py,rstrip.py 和格式化方法。

Tools/Demos

  • bpo-37675:从压缩的标准库中运行时,2to3 现在可以使用。

Python 3.8.0 beta 2

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

Security

核心和内建函数

  • bpo-37467:如果文件名是字节字符串,则修复sys.excepthook()PyErr_Display()。例如,对于 SyntaxError 异常,其中 filename 属性是字节字符串。

  • bpo-37417bytearray.extend()现在可以正确处理迭代期间出现的错误。 Brandt Bucher 的补丁。

  • bpo-24214:改进了对 UTF-8 和 UTF-16 增量解码器中的 surrogatepass 错误处理程序的支持。

  • bpo-35224:键的反向评估 Sequences:如 PEP 572 中所建议的 dict 理解值。在{k: v for ...}中,k将在v之前求值。

  • bpo-37316:修复mmap.mmap中的PySys_Audit()呼叫。

  • bpo-37269:修复了窥孔优化器中的一个错误,该错误未使用二进制运算符正确处理恒定条件。 Pablo Galindo 修补程序。

  • bpo-37213:正确处理窥孔优化器中的负线偏移。 Pablo Galindo 修补程序。

  • bpo-37219:删除空集差异的错误优化。

  • bpo-36922:插槽函数优化了Py_TPFLAGS_METHOD_DESCRIPTOR而不是function实例的可调用对象。

  • bpo-36974:当 Base Class 使用 vectorcall 时,插槽tp_vectorcall_offset被无条件继承以支持super().__call__()

  • bpo-37160threading.get_native_id()现在也支持 NetBSD。

  • bpo-37077:添加对 AIX 的threading.get_native_id()支持。 M. Felt 修补程序

Library

  • bpo-37440:http.client 现在为默认上下文或将 cert_file 传递到 HTTPSConnection 启用 TLS 1.3 握手认证。

  • bpo-37437:将供应商的 Export 商版本更新为 2.2.7.

  • bpo-37428:SSLContext.post_handshake_auth = True 不再为 Client 端连接设置 SSL_VERIFY_POST_HANDSHAKE 验证标志。尽管该选项记录为 Client 端已忽略,但在设置该标志时,OpenSSL 隐式启用证书链验证。

  • bpo-37420os.sched_setaffinity()现在可以正确处理其mask参数在迭代过程中出现的错误。 Brandt Bucher 的补丁。

  • bpo-37412os.getcwdb()函数现在在 Windows 上使用 UTF-8 编码,而不是 ANSI 代码页:基本原理请参见 PEP 529。 Windows 不再弃用该Function。

  • bpo-29412:修复了在解析 Headers 值意外结束时的 IndexError。由 Abhilash Raj 修补。

  • bpo-36546:statistics.quantiles()的* dist *参数现在仅处于位置。当前名称并不反映该参数可以是数据集或分布。将参数标记为位置可以避免混淆,并可以稍后更改名称。

  • bpo-37394:修复了一个错误,如果加速器模块不可用,该错误会导致queue模块失败。 Pablo Galindo 修补程序。

  • bpo-33972:具有单个部分但 Content Type 设置为multipart/*的电子邮件不再发出 AttributeError 了。

  • bpo-37280:使用线程池从文件读取以发送文件回退模式。

  • bpo-37279:修复了当 sendfile 在后备模式下发送额外数据时对 asyncio sendfile 的支持。

  • bpo-19865ctypes.create_unicode_buffer()现在在具有 16 位wchar_t的平台(例如 Windows 和 AIX)上也支持非 BMP 字符。

  • bpo-37210:即使 C _pickle模块不可用,也允许pickle的纯 Python 实现工作。

  • bpo-35922:当 robots.txt 文件中未定义相关规则时,修复RobotFileParser.crawl_delay()RobotFileParser.request_rate()返回None而不是引发AttributeError。 RémiLapeyre 的补丁。

  • bpo-35766:将 feature_version 的格式更改为(主要,次要)Tuples。

  • bpo-36607:如果内部任务弱集在迭代过程中被另一个线程更改,则消除asyncio.all_tasks()引发的RuntimeError

  • bpo-18748_pyio.IOBase如果获取closed属性无法更好地模仿_io.IOBase终结器,则析构函数将不执行任何操作。

  • bpo-36402:修复了在 await 线程时 Python 关闭时的竞争状况。await 直到所有非守护程序线程的 Python 线程状态被删除(加入所有非守护程序线程),而不是仅等到非守护程序 Python 线程完成。

  • bpo-34886:在显式提供inputstdincapture_outputstdoutstderr args 时检查它们之间是否有冲突,但在**kwargs dict 中传递了None值而不是直接pass名称传递时,修复了subprocess.run()意外的 ValueError。补丁由 RémiLapeyre 提供。

  • bpo-37173inspect.getfile()的异常消息现在可以正确报告传递的类,而不是内置模块。

  • bpo-37178:给 math.perm()一种参数形式,其含义与 math.factorial()相同。

  • bpo-37178:对于 math.perm(n,k),让 k 默认为 n,得到与阶乘相同的结果。

  • bpo-37163:不建议将dataclasses.replace()obj参数作为关键字参数传递。

  • bpo-37165:已转换_collections._count_elements 以使用 Argument 诊所。

  • bpo-34767:不要总是在asyncio.Lock中创建collections.deque

  • bpo-37158:pass从函数切换到生成器来加速 statistics.fmean()。

  • bpo-37150argparse._ActionsContainer.add_argument现在抛出错误,如果有人不小心将 FileType 类对象而不是 FileType 实例作为type参数传递

  • bpo-35621:当在 UNIX 上的线程中执行事件循环时,支持运行 asyncio 子进程。

  • bpo-36520:折叠时,带有 UTF-8 字符的冗长的电子邮件标题现在可以正确编码。 Jeffrey Kintscher 的补丁。

  • bpo-30835:修复了电子邮件解析中的错误,该错误导致 Multipart 邮件的内容传输编码中字节无效的邮件可能导致 AttributeError。 Andrew Donnellan 修补程序。

  • bpo-35805:添加用于 Message-IDHeaders 的解析器,并将其添加到默认的 HeaderRegistry。这应该防止使用 RFC 2048 编码的单词折叠 Message-ID。

  • bpo-35070:现在,当用户属于 NGROUPS_MAX 补充组时,posix.getgrouplist()可以正常工作。 Jeffrey Kintscher 的补丁。

  • bpo-32627:解决了包含_uuid个 Headers 冲突时的编译错误。

  • bpo-11122:Distutils 仅检查指定路径中的 rpmbuild。

  • bpo-4963:修复了与 mimetypes 扩展 Map 和模块重新初始化有关的不确定行为。

Documentation

Tests

  • bpo-37421:test_distutils.test_build_ext()现在可以在 Windows 上删除临时目录:不要在当前进程中导入新建的 Cextensions(“ xx”),而是在单独的进程中对其进行测试。

  • bpo-37421:现在,test_concurrent_futures 清理 multiprocessing 以立即删除由 multiprocessing.util.get_temp_dir()创建的临时目录。

  • bpo-37421:test_winconsoleio 不再泄漏临时文件:测试完成后,请使用 tempfile.TemporaryFile()将其删除。

  • bpo-37421:现在,multiprocessing 测试显式调用_run_finalizers()以立即删除由测试创建的临时目录。

  • bpo-37199:修复 IPv6 不可用或禁用时的测试失败。

  • bpo-37335:从 c 语言环境强制测试中删除不再需要的代码

  • bpo-37421:修复 test_shutil 以不再泄漏临时文件。

  • bpo-37411:将 test_wsgiref.testEnviron()修复为不再依赖于环境变量(如果设置了“ X”变量,则不要失败)。

  • bpo-37400:修复 test_os.test_chown():使用 os.getgroups()而不是 grp.getgrall()来获取组。还将测试重命名为 test_chown_gid()。

  • bpo-37359:在 python3 -m test 中添加–cleanup 选项以删除以前失败的作业的test_python_*目录。添加“ make cleantest”以运行python3 -m test --cleanup

  • bpo-37362:如果在 stderr 上收到“意外”消息,则 test_gdb 不再失败:它现在忽略 stderr。 test_gdb 的目的是测试 python-gdb.py 命令是否按预期工作,而不是测试 gdb。

  • bpo-35998:避免在 test_asyncio 中发生 TimeoutError:test_start_tls_server_1()

  • bpo-37278:修复 test_asyncio ProactorLoopCtrlC:加入线程以防止泄漏正在运行的线程和泄漏引用。

  • bpo-37261:修复test.support.catch_unraisable_exception():现在,其__exit __()方法将忽略清除其unraisable属性时引发的无法避免的异常。

  • bpo-37169:重写_PyObject_IsFreed()个单元测试。

  • bpo-37153test_venv.test_mutiprocessing()现在显式调用pool.terminate()来 await 池完成。

  • bpo-28009:修改 test_uuid 逻辑以测试程序何时可用,并可用于获取 MACADDR 作为 UUID 的基础。 M. Felt 修补程序

Build

  • bpo-37189:诸如PyRun_String()之类的许多PyRun_XXX()函数不再错误地在libpython38.dll中导出。再次导出它们以修复 ABI 兼容性。

Windows

  • bpo-10945:正式放弃在非 Windows 系统上创建 bdist_wininst 安装程序的支持。

  • bpo-37369:修复了从 Microsoft Store 运行时sys.executable的路径。

  • bpo-37351:从标准 Windows 发行版中删除 libpython38.a。

  • bpo-35360:更新 Windows 版本以使用 SQLite 3.28.0.

  • bpo-37267:在 Windows 上,os.dup()在处理字符文件时不再创建可继承的 fd。

  • bpo-36779:当活动代码页设置为 CP_UTF7 或 CP_UTF8 时,请确保time.tzname在 Windows 上正确。

macOS

  • bpo-34602:pass不再调用 resource.setrlimit 来增加运行时进程堆栈的大小限制,从而避免 macOS 上的测试套件失败。由于使用较大的默认堆栈大小来构建解释器,因此不再需要更改运行时。

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

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

IDLE

  • bpo-37325:修复帮助源和自定义运行对话框的选项卡焦点遍历 Sequences。

  • bpo-37321:这两个子流程连接错误消息现在都引用 IDLE 文档的“启动失败”部分。

  • bpo-37177:正确地将搜索对话框“附加”到其主窗口,以使它们的行为类似于其他对话框,并且不会隐藏在其主窗口后面。

  • bpo-37039:pass在首次使用特定屏幕时最大程度地增大窗口大小,来调整各个屏幕的“缩放高度”。更改屏幕设置可能会使保存的高度无效。当窗口最大化时,“缩放高度”无效。

  • bpo-35763:仅在第一行有空时,才添加“ /”(仅表示位置)的提示提示。

  • bpo-5680:在“运行”菜单中添加“运行…自定义”,以运行具有自定义设置的模块。Importing 的所有“命令行参数”都将添加到 sys.argv 中。一个可以抑制 Shell 主模块正常重启。

C API

  • bpo-36763:添加PyConfig_SetWideStringList()Function。

  • bpo-28805METH_FASTCALL调用约定已记录在案。

  • bpo-37221tp_print放回到PyTypeObject结构的末尾,以恢复对旧代码(特别是由 Cython 生成)设置tp_print = 0的支持。请注意,tp_print将在 Python 3.9 中完全删除。

  • bpo-37221:新FunctionPyCode_NewWithPosOnlyArgs()允许创建类似PyCode_New()的代码对象,但带有一个额外的* posonlyargcount *参数,用于指示纯正数参数。

  • bpo-37215:修复了bpo-36842引入的 dtrace 问题

  • bpo-37191:Python.h 不需要为混合语句(GCC -Wdeclaration-after-statement)提供编译器支持,该语句已在 3.8.0 Beta 1 中添加。请注意,在 Python 3.9 中,将再次需要混合语句。

  • bpo-37170:修复了PyLong_AsUnsignedLongLongMask()中的错误转换。

Python 3.8.0 beta 1

*发布日期:2019-06-04 *

Security

  • bpo-35907:CVE-2019-9948:pass禁止urllib.requestURLopener().open()URLopener().retrieve()中的local-file://local_file:// URL 方案来避免文件读取。

  • bpo-33529:当邮件头中的非 ASCII 字符过多时,可防止电子邮件邮件头编码中使用的折叠Function进入无限循环。

  • bpo-33164:更新了 blake2 实现,该实现使用平台提供的安全 memset 实现。

核心和内建函数

  • bpo-35814:允许在带 Comments 的作业的右侧打开包装。特别是,现在允许t: Tuple[int, ...] = x, y, *z

  • bpo-37126:现在,垃圾收集器将跟踪所有 structseq 对象。 Pablo Galindo 修补程序。

  • bpo-37122:使代码对象的* co_argcount *属性表示位置参数(包括仅位置参数)的总数。 * co_posonlyargcount 的值可用于区分哪些参数仅是位置参数,而差异( co_argcount - co_posonlyargcount *)是位置或关键字参数的数量。 Pablo Galindo 修补程序。

  • bpo-20092intfloatcomplex的构造函数现在将使用index()特殊方法(如果可用)而相应的方法int()float()complex()不可用。

  • bpo-37087:向 OpenBSD 添加本机线程 ID(TID)支持。

  • bpo-26219:按操作码缓存机制实现,并且LOAD_GLOBAL条指令使用该机制。 LOAD_GLOBAL现在快了 40%。由 Yury Selivanov 和 Inada Naoki 贡献。

  • bpo-37072:修复当标志为 NULL 时 PyAST_FromNodeObject()中的崩溃。

  • bpo-37029:释放大量小对象可能要花费大量时间,这是因为使用线性搜索使obmalloc.c的可用空间列表按可用内存池数量的 Sequences 进行排序所导致的,因此它们在竞技场数量上的时间可能是平方的。现在无需搜索即可完成此操作,最坏情况下的时间在竞技场数量上保持线性。对于显然很重要的程序(通常同时存在超过 10 万个小对象),这可以大大减少释放它们的内存所需的时间。

  • bpo-26423:修复sizeof(long) < sizeof(Py_ssize_t)wrap_lenfunc()中可能发生的溢出(例如 64 位 Windows)。

  • bpo-37050:改进“调试” f 字符串的 AST,这些 f 字符串使用'='打印出要评估的表达式的源。从 FormattedValue 节点中删除 expr_text,而是使用 Constant 字符串节点(可能与 f 字符串内的相邻常量表达式合并)。

  • bpo-22385bytes.hexbytearray.hexmemoryview.hex方法以及binascii.hexlifyb2a_hex函数现在可以在十六进制字节之间包括可选的分隔符。此Function的灵感来自 MicroPython 的 hexlify 实现。

  • bpo-26836:添加os.memfd_create()

  • bpo-37032:在代码类型(types.CodeType)中添加了新的replace()方法。

  • bpo-37007:在 Windows 上实现socket.if_nameindex()socket.if_nametoindex()socket.if_indextoname()

  • bpo-36829PyErr_WriteUnraisable()现在将在没有当前回溯的情况下创建回溯对象。此外,调用PyErr_NormalizeException()PyException_SetTraceback()以标准化异常值。忽略任何错误。

  • bpo-36878:如果第一个字符为 ASCII,则仅接受# type: ignore之后的文本。这是为了禁止# type: ignoreé之类的东西。

  • bpo-36878:存储 AST 中# type: ignoreComments 后出现的文本。例如,类型忽略(如# type: ignore[E1000])将在其 AST 节点中存储字符串"[E1000]"

  • bpo-2180:由 Anthony Sottile 将 EOF 处的行连续视为SyntaxError

  • bpo-36907:修复了使用关键字 dict(f(**kwargs))调用 C 函数并在该函数运行时更改 dict kwargs时崩溃的问题。

  • bpo-36946:修复了处理切片时可能的有符号整数溢出。

  • bpo-36826:向 ast_unparse.c 添加 NamedExpression 类支持

  • bpo-1875:如果要优化的代码块(例如,如果条件始终为假)现在包含语法错误,则引发SyntaxError。 Pablo Galindo 修补程序。

  • bpo-36027:允许pass三个参数pow计算模逆:现在,在第一个和第三个参数相对质数的情况下,第二个参数为负。

  • bpo-36861:将 Unicode 数据库更新到版本 12.1.0.

  • bpo-28866:避免对类型定义为 mro()的类的属性进行高速缓存,以避免硬高速缓存失效问题。

  • bpo-36851:如果执行以返回结尾且堆栈不为空,则现在已正确清理FrameType堆栈。

  • bpo-34616compile()内置函数现在支持ast.PyCF_ALLOW_TOP_LEVEL_AWAIT标志,该标志允许编译包含顶级awaitasync withasync for的源。这对于从已经具有异步Function的位置评估异步代码很有用;例如在自定义 REPL 中。

  • bpo-36842:实施 PEP 578,添加 sys.audit,io.open_code 和相关 API。

  • bpo-27639:正确的 UserList 切片操作返回类型。 Michael Blahay,Erick Cervantes 和 vaultah 的补丁

  • bpo-36737:将 PyRuntimeState.warnings 移至每个解释器状态(pass“模块状态”)。

  • bpo-36793:从内置类型boolintfloatcomplex中删除了__str__实现,并从标准库中删除了几个类。现在,他们从object继承__str__()

  • bpo-36817:添加=Function f 字符串进行调试。可以在!s!r!a之前。它生成表达式的文本,后跟一个等号,然后是表达式的值的 repr。因此f'{3*9+15=}'等于字符串'3*9+15=42'。如果指定=,则默认转换设置为!r,除非给出了格式说明,在这种情况下格式设置行为不变,将使用__format__。

  • bpo-24048:在 import.c 的remove_module()期间保存实时异常。

  • bpo-27987:pymalloc 返回在 64 位平台上按 16 字节而不是 8 字节对齐的内存块,以符合 x86-64 ABI。最近的编译器更经常采用这种对齐方式。 Inada Naoki 的补丁。

  • bpo-36601:从 Python 的内部 Csignal 处理程序中删除了对getpid() == main_pid的无意义的长期检查。

  • bpo-36594:纠正格式字符串中对%p的错误使用。 Zackery Spytz 修补程序。

  • bpo-36045:builtins.help()现在为异步Function添加了async前缀

  • bpo-36084:将本机线程 ID(TID)添加到线程中。线程对象(支持的平台:Windows,FreeBSD,Linux,macOS)

  • bpo-36035:与 pathlib 结合使用,修复了损坏的符号链接的问题

  • bpo-35983:添加了新的垃圾桶宏,以处理子类的tp_dealloc调用 Base Class 的tp_dealloc且该 Base Class 使用垃圾桶机制时可能发生的双重释放。 Jeroen Demeyer 的补丁。

  • bpo-20602:关闭期间请勿清除sys.flagssys.float_info。 Zackery Spytz 修补程序。

  • bpo-26826:将copy_file_range()作为低级 API 公开在os模块中。

  • bpo-32388:删除 tp_flags 中的跨版本二进制兼容性要求。

  • bpo-31862:将 binascii 端口连接到 PEP 489 多阶段初始化。 Marcel Plch 修补程序。

Library

  • bpo-37128:已添加math.perm()

  • bpo-37120:添加 SSLContext.num_tickets 以控制 TLSv1.3 会话票证的数量。

  • bpo-12202:修复msilib.SummaryInformation.GetProperty()中的错误处理。 Zackery Spytz 修补程序。

  • bpo-26835:现在,fcntl 模块包含用于密封 memfds 的文件密封常数。

  • bpo-29262:将get_origin()get_args()自省助手添加到typing模块。

  • bpo-12639msilib.Directory.start_component()如果* keyfile *不是None不再失败。

  • bpo-36999:添加asyncio.Task.get_coro()方法以公开显示任务的协程对象。

  • bpo-35246:让asyncio.create_subprocess_exec()接受类似路径的参数。

  • bpo-35279:将ThreadPoolExecutor的默认* max_workers *从cpu_count() * 5更改为min(32, cpu_count() + 4))。在许多核心机器上,先前的价值过大。

  • bpo-37076_thread.start_new_thread()现在使用sys.unraisablehook()而不是sys.excepthook()记录该函数引发的未捕获异常,因此该钩子可以访问引发该异常的函数。

  • bpo-33725:在 macOS 上,multiprocessing模块现在默认使用* spawn *启动方法。

  • bpo-37054:修复析构函数_pyio.BytesIO_pyio.TextIOWrapper:(在类主体中)尽快初始化其_buffer属性,因为__del__()使用它调用close()

  • bpo-37058:PEP 544:将Protocol@runtime_checkable添加到typing模块。

  • bpo-36933:3.8 中已弃用并标记为删除的Functionsys.set_coroutine_wrappersys.get_coroutine_wrapper已被删除。

  • bpo-37047:处理unittest.mock.AsyncMock设置中的后期绑定和属性访问以进行自动指定。在unittest.mock.MagicMock中记录新实现的异步方法。

  • bpo-37049:PEP 589:将TypedDict添加到typing模块。

  • bpo-37046:PEP 586:将Literal添加到typing模块。

  • bpo-37045:PEP 591:将Final限定符和@final装饰器添加到typing模块。

  • bpo-37035:如果异步传输中发生了致命错误,请不要记录基于 OSError 的异常。 Peer 几乎可以生成任何 OSError,用户无法pass修复自己的代码来避免这些异常。错误仍然会传播到用户代码,只是记录错误是没有意义的,并且会污染异步日志。

  • bpo-37001symtable.symtable()现在接受与内置compile()函数相同的源代码 Importing 类型。 Dino Viehland 修补程序。

  • bpo-37028:实施异步 REPL

  • bpo-37027:从 transport.get_extra_info('socket')返回安全使用的代理套接字对象

  • bpo-32528:将 asyncio.CancelledError 设为 BaseException。

这将解决许多异步用户所犯的常见错误:“异常除外”子句破坏了任务的取消。

除了此更改之外,我们还将停止从并发.futures.*对应项继承 asyncio.TimeoutError 和 asyncio.InvalidStateError。这些异常没有必要共享继承链。

Giampaolo Rodola 制作的原始补丁,由 Ying Ying 更新。

  • bpo-36888:Python 子进程现在可以使用 multiprocessing.process.parent_process 访问其父进程的状态

  • bpo-36921:为了async def弃用@coroutine

  • bpo-25652:修复了 Batuhan Taskaya 在UserString__rmod__中的错误。

  • bpo-36916:当在没有 await 的情况下使用 writer.write()并且 writer.drain()失败并出现异常时,删除有关任务中未处理的异常的消息。

  • bpo-36889:介绍合并了asyncio.StreamReaderasyncio.StreamWriterFunction的asyncio.Stream类。 asyncio.Stream可以在只读,只写和读写模式下工作。提供asyncio.connect()asyncio.connect_unix()asyncio.connect_read_pipe()asyncio.connect_write_pipe()工厂以打开asyncio.Stream连接。提供asyncio.StreamServerUnixStreamServer以使用 asyncio.Stream API 为服务器提供服务。修改asyncio.create_subprocess_shell()asyncio.create_subprocess_exec()以使用asyncio.Stream而不是已弃用的StreamReaderStreamWriter。弃用asyncio.StreamReaderasyncio.StreamWriter。弃用私有类,例如asyncio.FlowControlMixingasyncio.StreamReaderProtocol在 asyncio 软件包之外。

  • bpo-36845:在 ipaddress 模块中的 IP 网络和接口的构造中增加了对整数前缀的验证。

  • bpo-23378:向 argparser 添加扩展动作。

  • bpo-36867:修复使 SharedMemoryManager 实例及其父进程使用两个单独的 resource_tracker 进程的错误。

  • bpo-23896:向 lib2to3.pygram 添加一个语法,该语法包含 exec 作为函数而不是语句。

  • bpo-36895:3.3 版中不推荐使用time.clock(),而推荐使用time.perf_counter(),并在 3.8 版中将其标记为已删除,此Function已删除。

  • bpo-35545:修复了内部确保主机名解析时异步丢弃 IPv6 范围的问题

  • bpo-36887:添加新函数math.isqrt()以计算整数平方根。

  • bpo-34632:引入importlib.metadata模块(具有(临时)支持)从第三方程序包中读取元数据。

  • bpo-36878:在ast.parse中使用type_comments=True时,请将# type: ignore后跟非字母数字字符,然后将任意文本视为类型忽略,而不需要空格或其他 Comments。这是为了允许诸如# type: ignore[E1000]的编队。

  • bpo-36778cp65001编码(Windows 代码第 65001 页)成为utf_8编码的别名。

  • bpo-36867:multiprocessing.resource_tracker 替换了 multiprocessing.semaphore_tracker 模块。除了 signal 量之外,resource_tracker 还会跟踪 shared_memory 段。

  • bpo-30262sqlite3模块的CacheStatement对象不向用户公开。 Aviv Palivoda 修补程序。

  • bpo-24538:在shutil.copystat()中,首先复制扩展文件属性,然后再复制文件权限,因为扩展属性只能在仍可写的目标上设置。

  • bpo-36829:添加新的sys.unraisablehook()函数,该函数可以重写以控制如何处理“无法提出的异常”。当发生异常但 Python 无法处理它时调用它。例如,当析构函数引发异常时或在垃圾回收期间(gc.collect())。

  • bpo-36832:引入zipfile.Path,它是用于遍历 zip 文件的 pathlib 兼容包装器。

  • bpo-36814:解决了当 file_actions 为 None 时 os.posix_spawnp()会错误地引发 TypeError 的问题。

  • bpo-33110:当 Future 完成时,正确处理并发添加的Function引发的异常。futuresadd_done_callback。

  • bpo-26903:将ProcessPoolExecutor中的max_workers限制为 61,以解决 WaitForMultipleObjects 限制。

  • bpo-36813:修正QueueListener在停止时呼叫queue.task_done()。由 Bar Harel 修补。

  • bpo-36806:禁止在 asyncio 包之外创建异步流对象,例如 StreamReader,StreamWriter,Process 及其协议。

  • bpo-36802:为 StreamWriter.write()和 StreamWriter.close()提供同步和异步调用

  • bpo-36801:正确处理 asyncio StreamWriter.drain()调用中的 SSL 连接关闭。

  • bpo-36785:实施 PEP 574(带有带外缓冲区的棘手协议 5)。

  • bpo-36772:functools.lru_cache()现在除了可以用作返回装饰器的函数外,还可以用作直接装饰器。

  • bpo-6584:向gzip模块添加BadGzipFileexception。

  • bpo-36748:在TextIOWrapper的 C 实现中优化了写缓冲。使用 ascii,latin1 或 utf-8 编码将 ASCII 字符串写入TextIOWrapper大约快 20%。 Inada Naoki 的补丁。

  • bpo-8138:不要将wsgiref.simple_server.SimpleServer标记为多线程,因为wsgiref.simple_server.WSGIServer是单线程的。

  • bpo-22640py_compile.compile()现在支持静音模式。 Joannah Nanjekye 修补程序

  • bpo-29183:仅在未引发异常时才pass调用close()方法来修复wsgiref.handlers.BaseHandler中的双重异常。

  • bpo-36548:改进了正则表达式标志的表示。

  • bpo-36542:现在可以pass指定__text_signature__属性来覆盖 Python 函数的签名。

  • bpo-36533:重新初始化日志记录。处理程序将锁定分叉的子进程,而不是try在分叉仅在子进程中释放之前在父进程中全部获取它们。获取/释放模式导致代码中的死锁,该代码已实现了任何形式的相互依赖的链接日志记录处理程序,因为不能保证锁定获取 Sequences。

  • bpo-35252:将无效的类型 Comments 与 singledispatch 一起使用时,引发 TypeError 而不是 AssertionError。

  • bpo-35900:允许归约方法返回一个 6 项 Tuples,其中第 6 项指定一个被调用的自定义状态设置方法,而不是常规的__setstate__方法。

  • bpo-35900:使用新的 Pickler 的属性reducer_override启用_pickle.c 中的函数和类的自定义归约回调注册。

  • bpo-36368:修复了发送 ctrl-c(KeyboardInterrupt)后在交互式会话中崩溃 SharedMemoryManager 实例的错误

  • bpo-31904:修复 VapWorks 的 mmap 失败

  • bpo-27497csv.DictWriter.writeheader()现在返回基础csv.Writer.writerow()方法的返回值。补丁由 Ashish Nitin Patil 提供。

  • bpo-36239:现在,分析.mo 文件将忽略以#-#-#-#-#开头和结尾的 Comments。

  • bpo-26707:启用 plistlib 读取和写入作为 KeyedArchive 文件创建的二进制 plist 文件。具体来说,这允许 plistlib 将 0x80 令牌作为 UID 对象处理。

  • bpo-31904:添加对 VxWorks 的 posix 模块支持。

  • bpo-35125:Asyncio:在屏蔽中进行外部取消时删除内部回调

  • bpo-35721:如果Popen失败并用stdin=subprocess.PIPE调用,则修复asyncio.SelectorEventLoop.subprocess_exec()泄漏文件 Descriptors。 Niklas Fiekas 的补丁。

  • bpo-31855unittest.mock.mock_open()结果现在尊重 read([size])的参数。补丁由 RémiLapeyre 提供。

  • bpo-35431:实现math.comb(),该函数返回二项式系数,该系数计算从 n 个项目中选择 k 个项目(无重复且无 Sequences)的方式。 Yash Aggarwal 和 Keller Fuchs 的补丁。

  • bpo-26660:修复了TemporaryDirectory清理中的权限错误。在临时目录中创建不可写或不可搜索的文件或目录时,以前TemporaryDirectory.cleanup()失败。

  • bpo-34271:将调试助手添加到 ssl 模块。现在可以转储关键材料并跟踪 TLS 协议。默认和 stdlib 上下文还支持 SSLKEYLOGFILE env var。

  • bpo-26467:添加了 AsyncMock 以支持使用 unittest 模拟 asyncio 协程。丽莎·罗奇(Lisa Roach)的补丁。

  • bpo-33569:dataclasses.InitVar:公开用于创建 init var 的类型。

  • bpo-34424:当 policy.linesep 设置为多字符字符串时,修复包含编码字符串的消息的序列化。 Jens Troeger 的补丁。

  • bpo-34303functools.reduce()的性能略有提高。 Sergey Fedoseev 的补丁。

  • bpo-33361:修复了codecs.StreamRecoder中的错误,该错误可能会导致搜索中的旧数据保留在缓冲区中并break后续的读取调用。由 Ammar Askar 修补。

  • bpo-22454shlex模块现在公开shlex.join(),与shlex.split()相反。 Bo Bayles 修补程序。

  • bpo-31922asyncio.AbstractEventLoop.create_datagram_endpoint():允许 Broadcast 时,请勿连接 UDP 套接字。这样可以在 UDPBroadcast 之后接收答复。

  • bpo-24882:在拆分新线程之前,将 ThreadPoolExecutor 更改为使用现有的空闲线程。

  • bpo-31961:在 Windows 上的subprocess.Popen()中增加了对字节和 Classpath 对象的支持。现在,如果* shell False,则 args *参数接受path-like object,并且包含包含字节和类似路径的对象的序列。 * executable *参数现在接受一个字节和path-like object。 * cwd *参数现在接受一个字节对象。基于 Anders Lorentsen 的补丁。

  • bpo-33123pathlib.Path.unlink现在接受* missing_ok *参数,以避免引发FileNotFoundError。 Robert Buchholz 修补程序。

  • bpo-32941:允许mmap.mmap个对象(passmmap.mmap.madvise())访问 madvise()系统调用。

  • bpo-22102:添加了对磁盘设置为 0 的 ZIP 文件的支持。此类文件通常是 Windows 上使用 ZIP64extensions 的内置工具创建的。 Francisco Facioni 修补程序。

  • bpo-32515:trace.py 现在可以pass python3 -m trace -t –module module_name 运行模块

  • bpo-32299:更改为unittest.mock.patch.dict()以用作上下文 Management 器时返回修补的字典。 Vadim Tsander 修补程序。

  • bpo-27141:为collections.UserListcollections.UserDict添加了__copy__(),以正确实现对象的浅表复制。由 Bar Harel 修补。

  • bpo-31829\r\0\x1a(在 Windows 上为文件末尾)现在在 Unicode 字符串的协议 0 腌制中进行了转义。这样可以加载它们,而不会因在 Python 2 中以文本模式打开的文件而丢失。

  • bpo-23395_thread.interrupt_main()现在避免在SIGINTsignal 被 Python 忽略或未处理的情况下设置 Python 错误状态。

Documentation

  • bpo-36896:阐明某些类型在 Python 版本之间具有不稳定的构造函数签名。

  • bpo-36686:改进asyncio.subprocess_exec函数的 stdin,stdout 和 stderr 参数的文档,以指定支持哪些值。还应提及不支持解码为文本。

添加一些测试,以验证传递给 std *参数的各种值是否确实有效。

  • bpo-36984:改进版本typing模块中添加的引用-Anthony Sottile。

  • bpo-36868:现在有新内容提到 SSLContext.hostname_checks_common_name 而不是 SSLContext.host_flags。

  • bpo-35924:在curses.addstr()文档中添加 Comments,以警告由于 ncurses 错误,多行字符串可能导致段错误。

  • bpo-36783:根据 PEP 495 添加了 Time_FromTimeAndFold 和 PyDateTime_FromDateAndTimeAndFold 的 C API 文档。Edison Abahurire 进行了修补。

  • bpo-36797:修剪了更多旧版 distutils 文档,或者将其更清楚地标记为仅保留,直到 setuptools 文档独立涵盖为止。

  • bpo-22865:在pty.spawn函数的文档中添加详细信息。

  • bpo-35397:删除弃用文件,并记录 urllib.parse.unwrap()。补丁由 RémiLapeyre 提供。

  • bpo-32995:在词汇表中添加了上下文变量。

  • bpo-33519:澄清copy()不是MutableSequence ABC 的一部分。

  • bpo-33482:使codecs.StreamRecoder.writelines接受字节列表。

  • bpo-25735:添加了有关 func 阶乘的文档,以指示其返回整数值

  • bpo-20285:展开 object .__ doc __(文档字符串)以使其更清晰。修改 pydoc.py,以便 help(object)列出对象方法(对于其他类,help 忽略对象 Base Class 的方法.)

Tests

  • bpo-37069:修改 test_coroutines,test_cprofile,test_generators,test_raise,test_ssl 和 test_yield_from 以使用test.support.catch_unraisable_exception()而不是test.support.captured_stderr()

  • bpo-37098:在较旧的 Linux 内核上修复 test_memfd_create。

  • bpo-37081:使用 OpenSSL 1.1.1c 进行测试

  • bpo-36829:添加test.support.catch_unraisable_exception():上下文 Management 器使用sys.unraisablehook()捕获无法捕获的异常。

  • bpo-36915:现在,主要的 regrtest 进程始终会删除工作进程的所有临时目录,即使它们崩溃或在 KeyboardInterrupt(CTRL c)上被杀死也是如此。

  • bpo-36719:现在,当工作进程崩溃(CHILD_ERROR 状态)时,“ python3 -m test -jN…”将 continue 执行下一个测试。以前,测试套件立即停止。使用–failfast 可以在第一个错误处停止。

  • bpo-36816:更新 Lib/test/selfsigned_pythontestdotnet.pem 以匹配 self-signed.pythontest.net 的新 TLS 证书。

  • bpo-35925:如果由于现代 os 或发行版而采用默认的 OpenSSL 策略拒绝与弱证书服务器的连接而导致 httplib 和 nntplib 网络测试失败,否则将跳过它们。

  • bpo-36782:在datetime模块中添加对多个 C API 函数的测试。由 Edison Abahurire 修补。

  • bpo-36342:如果平台缺少Function正常的 sem_open,请在 test_venv 中修复 test_multiprocessing。

Build

  • bpo-36721:要将 Python 嵌入到应用程序中,必须将新的--embed选项传递给python3-config --libs --embed以获得-lpython3.8(将应用程序链接到 libpython)。要同时支持 3.8 和更早版本,请先trypython3-config --libs --embed,然后再try回退到python3-config --libs(不使用--embed),如果先前的命令失败。

添加 pkg-config python-3.8-embed模块以将 Python 嵌入到应用程序中:pkg-config python-3.8-embed --libs包括-lpython3.8。要同时支持 3.8 和更早版本,请先trypkg-config python-X.Y-embed --libs并try回退到pkg-config python-X.Y --libs(不使用--embed),如果先前的命令失败(将X.Y替换为 Python 版本)。

另一方面,pkg-config python3.8 --libs不再包含-lpython3.8。不得将 C 扩展链接到 libpython(在 Android 上除外,该大小写由脚本处理);此更改是有意向后不兼容的。

  • bpo-36786:“ make install”现在可以并行运行 compileall。

Windows

  • bpo-36965:包含 STATUS_CONTROL_C_EXIT,而无需依赖 MSC 编译器

  • bpo-35926:更新为 Windows 版 OpenSSL 1.1.1b。

  • bpo-29883:添加 Windows 对 Proactor 事件循环的 UDP 传输的支持。亚当·梅利(Adam Meily)修补的补丁。

  • bpo-33407:已为 MSVC 实现Py_DEPRECATED()宏。

macOS

  • bpo-36231:支持在未安装/ usr/include 的 macOS 上构建 Python。从 macOS 10.14 开始,系统头文件仅在命令行工具或 Xcode 应用程序提供的 SDK 中可用。

IDLE

  • bpo-35610:将现在多余的.context_use_ps1 替换为.prompt_last_line。完成从bpo-31858开始的更改。

  • bpo-37038:使 idlelib.run 可运行;添加测试子句。

  • bpo-36958:打印除传递给 SystemExit 或 sys.exit()的 None 或 int 以外的任何参数。

  • bpo-36807:保存文件时,请调用 os.fsync(),以便将位刷新到例如 USB 驱动器。

  • bpo-32411:在 browser.py 中,由于按行号 Sequences 创建了字典,因此删除了按行号进行的多余排序。

Tools/Demos

  • bpo-37053:在 Tools/parser/unparse.py 中正确处理诸如 u“ bar”之类的字符串。颜志轩的补丁。

C API

  • bpo-36763:实现 PEP 587“ Python 初始化配置”。

  • bpo-36379:在 C 中实现__ipow__时,try使用* modulo *参数时,修复崩溃。

  • bpo-37107:更新PyObject_CallMethodObjArgs()_PyObject_CallMethodIdObjArgs以使用_PyObject_GetMethod以避免在许多情况下创建绑定的方法对象。 Michael J. Sullivan 的补丁。

  • bpo-36974:实现PEP 590:Vectorcall:CPython 的快速调用协议。这是优化自定义可调用对象的调用的新协议。

  • bpo-36763Py_Main()现在如果当前异常类型为SystemExit,则在调用PyErr_Print()时返回退出代码,而不是调用Py_Exit(exitcode)

  • bpo-36922:为行为类似于未绑定方法的对象添加新的类型标记Py_TPFLAGS_METHOD_DESCRIPTOR。这些对象支持LOAD_METHOD/CALL_METHOD操作码给出的优化。参见 PEP 590.

  • bpo-36728PyEval_ReInitThreads()函数已从 C API 中删除。不应显式调用它:改为使用PyOS_AfterFork_Child()

Python 3.8.0 alpha 4

*发布日期:2019-05-06 *

Security

  • bpo-36742:修复了 urlsplit()中预规范化字符的错误处理。

  • bpo-30458:pass禁止带有嵌入式空格或控制字符的 URL 路径进入基础的 HTTPClient 端请求来解决 CVE-2019-9740.现在,此类潜在的恶意 Headers 注入 URL 导致引发 http.client.InvalidURL 异常。

  • bpo-35755shutil.which()现在使用os.confstr("CS_PATH")(如果可用)并且未设置 PATH环境变量。也从posixpath.defpath删除当前目录。在 Unix 上,如果未设置 PATH环境变量,则shutil.which()subprocess模块不再在当前目录中搜索可执行文件。

核心和内建函数

  • bpo-36722:在调试版本中,导入现在还将查找以发布模式编译的 Cextensions 和以稳定 ABI 编译的 Cextensions。

  • bpo-32849:修复了 FreeBSD 上的 Python 初始化代码,以便在 stdin 文件 Descriptors(fd 0)无效时正确检测。

  • bpo-36623:删除 pgen 之后,删除缺少实现的解析器 Headers 和相关函数语句。

  • bpo-20180dict.pop()现在有了 Argument Clinic,速度提高了 33%。 Inada Naoki 的补丁。

  • bpo-36611:调试内存分配器:默认情况下,从 Python 内存分配器上的调试钩子禁用 serialno 字段,以将内存占用量减少 5%。启用tracemalloc以获取 traceback 信息,该错误信息在记录致命内存错误以决定放置断点的位置时分配了内存块。使用定义的PYMEM_DEBUG_SERIALNO编译 Python 以返回该字段。

  • bpo-36588:在 AIX 上,sys.platform不再包含主版本。始终返回'aix'而不是'aix3' .. 'aix7'。由于旧的 Python 版本包含版本号,因此建议始终使用sys.platform.startswith('aix')。由 M. Felt 贡献。

  • bpo-36549:将 str.capitalize 更改为第一个字符使用大写字母,而不是大写字母。

  • bpo-36540:实现 PEP 570(仅适用于 Python 的位置参数)。 Pablo Galindo 修补程序。

  • bpo-36475PyEval_AcquireLock()PyEval_AcquireThread()现在在解释程序完成时调用时终止当前线程,使它们与PyEval_RestoreThread()Py_END_ALLOW_THREADS()PyGILState_Ensure()一致。

  • bpo-36504:修复_ctypes.c 的PyCArrayType_new()中的有符号整数溢出。

  • bpo-20844:修复正在运行的具有编码 Cookie 的脚本,并且 LF 行结尾在 Windows 上可能会失败。

  • bpo-24214:固定支持 UTF-8 增量解码器中的替代密码错误处理程序。

  • bpo-36452:现在将在某些特定情况下检测到 dict 本身keys()values()items()的迭代过程中更改dict键,在这些情况下,键被删除/添加,因此键数不会更改。 len(dict)次迭代后将引发RuntimeError。由 Thomas Perl 提供。

  • bpo-36459:由于 tokenizer.c 的tok_nextc(),可能修复了一个双PyMem_FREE()

  • bpo-36433:修复了 classmethoddescr_call 中的 TypeError 消息。

  • bpo-36430:修复itertools.count()中可能的参考泄漏。

  • bpo-36440:在ParserError条消息中包括节点名称,而不是数字 ID。 A. Skrobov 修补程序。

  • bpo-36143:使用 pgen 从语法和令牌文件重新生成keyword。 Pablo Galindo 修补程序。

  • bpo-18372:在pickle模块中添加丢失的PyObject_GC_Track()呼叫。 Zackery Spytz 修补程序。

Library

  • bpo-35952:缺少编译器时修复 pythoninfo。

  • bpo-28238:xml.etree.ElementTree 的.find*()方法现在可以搜索与任何名称空间中的标记或名称空间中的所有标记匹配的{*}tag{ns}*之类的通配符。 Stefan Behnel 的补丁。

  • bpo-26978pathlib.path.link_to()现在已实现。它创建指向路径的硬链接。

  • bpo-1613500fileinput.FileInput现在将inplace=True传递给其构造函数时,使用 Importing 文件模式正确设置了输出文件模式(以前已将其硬编码为'w')。

  • bpo-36734:在 HP-UX 上修复faulthandler.c的编译。使用memset()stack_t current_stack初始化为零。

  • bpo-13611:xml.etree.ElementTree 包获得了对 C14N 2.0 序列化的支持。 Stefan Behnel 的补丁。

  • bpo-36669:将缺少的矩阵乘法运算符支持添加到 weakref.proxy。

  • bpo-36676:如果 xml.etree.ElementTree 中的 XMLParser()定义了回调方法“ start_ns()”和/或“ end_ns()”,则它为解析器目标提供名称空间前缀上下文。 Stefan Behnel 的补丁。

  • bpo-36673:xml.etree.ElementTree 中的 TreeBuilder 和 XMLPullParser 获得了对解析 Comments 和处理指令的支持。 Stefan Behnel 的补丁。

  • bpo-36650:C 版本的 functools.lru_cache()将带有空**kwargs词典的调用与完全没有关键字的调用区别开来。这不会导致错误的答案,但是会触发意外的缓存未命中。

  • bpo-28552:如果sys.executableNone或空字符串,请修复distutils.sysconfig:使用os.getcwd()初始化project_base。还要修复 distutils build 命令:如果是None或空字符串,请不要使用sys.executable

  • 如果未设置PATH环境变量,则bpo-35755shutil.which()distutils.spawn.find_executable()如果可用,则使用os.confstr("CS_PATH")而不是os.defpath。此外,如果PATH环境变量设置为空字符串,则不要使用os.confstr("CS_PATH")os.defpath

  • bpo-25430:提高IPNetwork.__contains__()的效果

  • bpo-30485:xml.etree.ElementTree 中的路径表达式现在可以pass传递带有空字符串前缀的默认名称空间来避免使用标记的显式名称空间前缀(或“{} tag”符号)。

  • bpo-36613:修复asyncio wait()不会在出现异常时删除回调

  • bpo-36598:修复isinstance在跟踪下执行代码时,检查是否具有 spec 的 Mock 对象。 Karthikeyan Singaravelan 修补程序。

  • bpo-18748:在开发模式(-X dev)和调试版本中,io.IOBase析构函数现在记录close()异常。这些异常在发布模式下默认为静默。

  • bpo-36575_lsprof模块现在默认使用与time.perf_counter()相同的内部计时器。 gettimeofday(2)在 Unix 上使用。新计时器在大多数 Unix 平台上具有更好的分辨率,并且perf_counter()是单调的,因此计时不再受系统时钟更新的影响。 Inada Naoki 的补丁。

  • bpo-33461json.loads现在在指定encoding选项时发出DeprecationWarning。 Matthias Bussonnier 的补丁。

  • bpo-36559:与种子库(version = 2)相比,随机模块现在更倾向于使用内部内部_sha512 模块而不是 hashlib 来优化导入时间。

  • bpo-17561:将 backlog = None 设置为 socket.create_server 的默认值。

  • bpo-34373:修复 1970 年前 AIX 上的time.mktime()错误处理。

  • bpo-36232:改进try打开实际上不存在的现有 DBM 数据库时的错误消息。 Marco Rougeth 修补程序。

  • bpo-36546:添加 statistics.quantiles()

  • bpo-36050:针对大响应已优化http.client.HTTPResponse.read()。 Inada Naoki 的补丁。

  • bpo-36522:如果在http.client中将* debuglevel *设置为> 0,则打印具有相同标题名称的多个值的标题的所有值。 Matt Houglum 修补程序。

  • bpo-36492:已弃用将必需的参数(例如* func *)作为关键字参数传递给函数,该函数应接受任意关键字参数并将其传递给其他函数。现在,如果将必需的参数作为位置参数传递,则可以将任意关键字参数(即使名称为“ self”和“ func”)也可以传递给这些函数。

  • bpo-27181:添加 statistics.geometric_mean()。

  • bpo-30427os.path.normcase()依靠os.fspath()来检查其参数的类型。冗余检查已从其posixpath.normcase()ntpath.normcase()实现中删除。 Wolfgang Maier 修补程序。

  • bpo-36385:停止拒绝 IPv8 八进制为八进制模数。前导零将被忽略,并且不再假定它指定八进制八位字节。八位字节始终是十进制数字。八位字节仍不得超过三位数,包括前导零。

  • bpo-36434:写入 ZIP 文件期间的错误不再阻止正确关闭它。

  • bpo-36407:修复了在 xml.dom.minidom 中为 CDATA 部分写入错误的缩进的情况。 Vladimir Surjaninov 的补丁。

  • bpo-36326:现在,当__slots_是字典时,inspect.getdoc()可以找到成员对象的文档字符串。

  • bpo-36366:在未启动或停止的unittest.mock.patch()对象上调用stop()现在将返回None而不是提高RuntimeError,从而使该方法成为幂等。 Karthikeyan Singaravelan 修补程序。

  • bpo-36348imap.IMAP4.logout()方法不再忽略静默的任意异常。

  • bpo-31904:添加时间模块支持并修复 VxWorks 的 test_time Function。

  • bpo-36227:在函数 ElementTree.tostring()和 ElementTree.tostringlist()中增加了对关键字参数default_namespacexml_declaration的支持。

  • bpo-36004:添加了新的备用构造函数datetime.date.fromisocalendar()datetime.datetime.fromisocalendar(),它们根据 ISO 年,周号和工作日构造日期对象;这些是每个类的isocalendar方法的逆函数。 Paul Ganssle 修补程序。

  • bpo-35936modulefinder不再依赖已弃用的imp模块,并且modulefinder.ModuleFinder的初始化程序现在具有不可变的默认参数。 Brandt Bucher 的补丁。

  • bpo-35376modulefinder正确处理与错误程序包同名的模块。 Brandt Bucher 的补丁。

  • bpo-17396modulefinder在后续导入中遇到语法错误时不再崩溃。 Brandt Bucher 的补丁。

  • bpo-35934:添加了create_server()has_dualstack_ipv6()便利Function,以自动化创建服务器套接字时通常涉及的必要任务,包括在同一套接字上同时接受 IPv4 和 IPv6 连接。 (由 Giampaolo Rodola 在bpo-17561中贡献。)

  • bpo-23078:将对classmethod()staticmethod()的支持添加到unittest.mock.create_autospec()。 Felipe Ochoa 的最初补丁。

  • bpo-35416:修复了 distutils 中潜在的资源警告。 MickaëlSchoentgen 的补丁。

  • bpo-25451:向tkinter.PhotoImage添加透明度方法。 Zackery Spytz 修补程序。

  • bpo-35082:在unittest.mock.Mock上调用 dir 时,不要返回已删除的属性。

  • bpo-34547wsgiref.handlers.BaseHandler现在可以正常处理突然的 Client 端连接终止。由 Petter Strandmark 修补。

  • bpo-31658xml.sax.parse()现在支持path-like。 MickaëlSchoentgen 的补丁。

  • bpo-34139:绑定前先删除过时的 unix 数据报套接字

  • bpo-33530:在asyncio.create_connection()中实施了“快乐的眼球”。添加了两个新参数* happy_eyeballs_delay interleave *,以指定 Happy Eyeballs 行为。

  • bpo-33291:在从任意可调用对象创建的方法上调用检查函数 isgeneratorfunction,iscoroutinefunction,isasyncgenfunction 时,不要引发 AttributeError。相反,返回 False。

  • bpo-31310:修复 multiprocessing.semaphore_tracker,以便子进程可以重用它

  • bpo-31292:对于包含include指令的文件,修复setup.py check --restructuredtext

Documentation

  • bpo-36625:从分数中的文档字符串中删除过时的 Comments。

  • bpo-30840:记录相对 import

  • bpo-36523:为 io.IOBase.writelines()添加文档字符串。

  • bpo-36425:新文档翻译:Simplified Chinese

  • bpo-36345:在wsgiref的文档中,针对基于 wsgiref 的基本 Web 服务器使用literalinclude指令,避免Tools/scripts/serve.py中的代码重复。由 StéphaneWirtel 提供。

  • bpo-36345:以wsgiref文档中的Tools/scripts/serve.py脚本代码为例。由 StéphaneWirtel 提供。

  • bpo-36157:为 PyInterpreterState_Main()添加了文档。

  • bpo-33043:更新 docs.python.org 页面,在页面末尾(“报告错误”和“关于文档”之间)添加了“向文档贡献”链接。使用“文档错误”部分中的其他链接和信息更新“发现错误”页面。

  • bpo-35581:@ typing.type_check_only 现在允许类型存根标记运行时不可用的函数和类。

  • bpo-33832:为“魔术方法”添加词汇表条目。

  • bpo-32913:在 regex HOWTO 中添加了 re.Match.groupdict 示例。

Tests

  • bpo-36719:regrtest 现在始终可以检测到无法收集的对象。以前,该检查仅由--findleaks启用。该检查现在也适用于-jN/--multiprocess N--findleaks成为--fail-env-changed的已弃用别名。

  • bpo-36725:使用 multiprocessing 模式(-jN)时,如果工作进程失败,则 regrtest 现在可以更好地报告错误,并且在工作线程失败或被break时,它立即退出。

  • bpo-36454:更改 test_time.test_monotonic()以仅测试睡眠命令之后经过时间的下限,而不是上限。这样可以防止在缓慢的 buildbot 上不必要的测试失败。 Victor Stinner 修补程序。

  • bpo-32424:提高 xml.etree.ElementTree 的测试覆盖率。 Gordon P. Hemsley 的补丁。

  • bpo-32424:在 test_cyclic_gc()测试中修复 xml.etree.ElementTree 的错字。 Gordon P. Hemsley 的补丁。

  • bpo-36635:添加一个新的_testinternalcapi模块以测试内部 C API。

  • bpo-36629:修复了test_imaplibtest_imap4_host_default_value():也捕获了errno.ENETUNREACH错误。

  • bpo-36611:启用tracemalloc时修复test_sys.test_getallocatedblocks()

  • bpo-36560:修复了 regrtest 中的参考泄漏搜寻:在预热期间还要计算增量(包括参考计数,已分配的内存块,文件 Descriptors 计数),以确保在开始搜寻参考泄漏之前初始化所有内容。

  • bpo-36565:当 Python 没有内置 abc 模块时,修复引用搜寻(python3 -m test -R 3:3)。

  • bpo-31904:将 test_resource 移植到 VxWorks:跳过设置 RLIMIT_FSIZE 和 RLIMIT_CPU 的测试案例。

  • bpo-31904:修复 VxWorks 上的 test_tabnanny:调整 ENOENT 错误消息。

  • bpo-36436:修复_testcapi.pymem_buffer_overflow():处理内存分配失败。

  • bpo-31904:在 VxWorks 上修复 test_utf8_mode:Python 在 VxWorks 上始终使用 UTF-8.

  • bpo-36341:修复在 AF_UNIX 套接字上调用 bind()时可能因 PermissionError 失败的测试。

Build

  • bpo-36747:删除陈旧的脚本安装 Makefile 目标。

  • bpo-21536:在 Unix 上,Cextensions 不再链接到 libpython,除了在 Android 和 Cygwin 上。

现在,静态链接的 Python 可以加载使用共享库 Python 构建的 C 扩展。

嵌入 Python 时,不得将RTLD_LOCAL加载libpython,而应加载RTLD_GLOBAL。以前,使用RTLD_LOCAL不可能加载未链接到libpython的 C 扩展,例如Modules/Setup*shared*部分构建的标准库的 C 扩展。

distutils,python-config 和 python-config.py 已被修改。

  • bpo-36707./configure --with-pymalloc不再将m标志添加到 SOABI(sys.implementation.cache_tag)。启用或禁用 pymalloc 对 ABI 没有影响。

  • bpo-36635:定义Py_BUILD_CORE_MODULE时,更改pyport.hPyAPI_FUNC(type)PyAPI_DATA(type)PyMODINIT_FUNC宏。现在必须使用Py_BUILD_CORE_MODULE定义来构建 C 扩展,作为访问 Python 内部的动态库:在 Windows 的 DLL 导出中导出 PyInit_xxx()函数。

  • bpo-31904:不要在 VxWorks 上构建_cryptextensions。

  • bpo-36618:当检测到 clang 编译器时,将-fmax-type-align=8添加到 CFLAGS 中。 pymalloc 内存分配器将内存按 8 个字节对齐。在 x86-64 上,clang 默认情况下期望对齐 16 个字节,因此使用 MOVAPS 指令可能会导致分段错误。告诉 clang Python 仅限于对齐 8 个字节以改用 MOVUPS 指令:速度较慢,但如果内存未对齐 16 个字节则不要触发 SIGSEGV。可悲的是,必须将标志添加到CFLAGS而不是CFLAGS_NODIST,因为第三方 Cextensions 可能存在相同的问题。

  • bpo-36605make tagsmake TAGS现在也解析Modules/_io/*.cModules/_io/*.h

  • bpo-36465:发行版本和调试版本现在与 ABI 兼容:定义Py_DEBUG宏不再意味着Py_TRACE_REFS宏,这引入了唯一的 ABI 不兼容性。可以使用新的./configure --with-trace-refs构建选项来设置Py_TRACE_REFS宏,该宏添加了sys.getobjects()函数和 PYTHONDUMPREFS环境变量。

  • bpo-36577:setup.py 现在可以正确地再次报告丢失的 OpenSSLHeaders 和库。

  • bpo-36544:修复了bpo-36146重构 setup.py 中引入的回归

  • bpo-36508python-config --ldflags不再包含LINKFORSHARED变量的标志。 LINKFORSHARED变量只能用于生成可执行文件。

  • bpo-36503:删除对“ aix3”和“ aix4”的引用。 M. Felt 修补。

Windows

  • bpo-35920:添加了 platform.win32_edition()和 platform.win32_is_iot()。添加了对 Windows AR