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 ARM32 交叉编译软件包的支持。跳过不应在 Windows IoT 核心版 ARM32 上运行的测试。

  • bpo-36649:pass Store 安装时,请删除注册表项的尾部空格。

  • bpo-34144:修复了 chcp.com 在输出中返回点时,activate.bat 可以正确更新代码页的问题。 Lorenz Mende 修补程序。

  • bpo-36509:为 Windows IoT ARM 容器添加了预设 iot 布局。该布局不包含 tkinter 或 IDLE 之类的 UI 组件。它还不包含支持目标构建的文件,因为使用 MSVC 时必须交叉编译 Windows ARM32 构建。

  • bpo-35941:ssl 模块的 enum_certificates 函数现在从查询中的 Windows 内部所有可用证书存储中返回证书,而不是仅从系统范围的证书存储中返回证书。这包括来自以下证书存储的证书:本地计算机,本地计算机企业,本地计算机组策略,当前用户,当前用户组策略,服务,用户。 ssl.enum_crls()函数以相同的方式更改,以返回 Windows 证书吊销列表存储内的所有证书吊销列表。

  • bpo-36441:修复了安装调试二进制文件时创建 venv 的问题。

  • bpo-36085:pass使用安全的 DLL 搜索路径并添加os.add_dll_directory(),在 Windows 上实现更好的 DLL 分辨率。

  • bpo-36010:将 venv 标准库模块添加到 Windows 的 nuget 分发中。

  • bpo-29515:添加下面的 socket 模块常量在 Windows 上:IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP IPPROTO_ST

  • bpo-35947:在 cpython-source-deps 中添加了 libffi 的当前版本。更改_ctypes 以在 Windows 上使用 libffi 的当前版本。

  • bpo-34060:在 Windows 上运行测试套件时报告系统负载。由 Ammar Askar 修补。基于 Jeremy Kloth 的先前工作。

  • bpo-31512:pass Windows 10 Creators Update,只要计算机未启用开发人员模式,非高权限用户现在就可以创建符号链接。

macOS

  • bpo-34602:避免pass resource.setrlimit 设置 macOS 堆栈资源限制的失败。这将还原对bpo-18075的早期修复,该修复在 macOS 上构建解释器可执行文件时强制使用非默认堆栈大小。

IDLE

  • bpo-36429:使用 pyshell 修复 IDLE 开头。在顶部添加 idlelib.pyshell 别名;删除底部的 pyshell 别名。删除过时的__name __ =='__ main__'命令。

Tools/Demos

  • bpo-14546:修复了 Tools/scripts/lll.py 中的参数处理。

C API

  • bpo-36763:修复Py_SetStandardStreamEncoding():如果两次调用该函数,则释放内存。

  • bpo-36641PyDoc_VAR(name)PyDoc_STRVAR(name,str)现在创建static const char name[]而不是static char name[]。 Inada Naoki 的补丁。

  • bpo-36389:更改 Python 内存分配器上的调试钩子使用的CLEANBYTEDEADDYTEFORBIDDENBYTE内部常量的值(PyMem_SetupDebugHooks()函数)。字节模式0xCB0xDB0xFB已被替换为0xCD0xDD0xFD以使用与 Windows CRT 调试malloc()free()相同的值。

  • bpo-36443:从 Python 3.7.0 开始,如果LC_CTYPE语言环境被强制和/或用户配置启用了 UTF-8 模式,则在Py_Initialize()之前调用Py_DecodeLocale()会产生 mojibake。现在默认情况下已禁用 LC_CTYPE 强制和 UTF-8 模式,以解决 mojibake 问题。现在必须使用新的_Py_PreInitialize() API 和_PyPreConfig显式启用(启用)。

  • bpo-36025:修复了对 datetime C API 的意外更改,该更改中将PyDate_FromTimestamp()函数的参数错误地解释为单个时间戳而不是参数 Tuples,这会导致现有代码开始引发TypeError。向后不兼容的更改仅在 Python 3.8 的 alpha 发行版中存在。 Paul Ganssle 修补程序。

  • bpo-35810:修改PyObject_Init以正确增加堆分配的 Type 对象的引用计数。还要修复手动执行的堆分配类型的引用计数,或者不减少 tp_dealloc 中该类型的引用计数

Python 3.8.0 alpha 3

*发布日期:2019-03-25 *

Security

  • bpo-36216:当 URL 包含以 IDNA 编码(NFKC 规范化)分解为影响 URL 解析方式的字符时,更改 urlsplit()以引发 ValueError。

  • bpo-35121:当使用具有http.cookiejar.DefaultCookiePolicy策略的 cookiejar 时,如果域 A 是域 B 的后缀匹配项,则不要将没有域属性的域 A 的 cookie 发送到域 B。 Karthikeyan Singaravelan 修补程序。

核心和内建函数

  • bpo-36421:修复_ctypes.c 的PyCArrayType_new()中可能的双引号。

  • bpo-36412:修复了在创建新词典时可能发生的崩溃。

  • bpo-36398:修复structseq_repr()中可能发生的崩溃。

  • bpo-36256:修复了在具有两个或多个带有相同类型标签的弧的 DFA 中解析状态时解析器模块中的错误。 Pablo Galindo 修补程序。

  • bpo-36365:repr(structseq)不再限制为 512 个字节。

  • bpo-36374:修复merge_consts_recursive()中可能的空指针取消引用。 Zackery Spytz 修补程序。

  • bpo-36236:在 Python 初始化时,如果当前目录已被删除,则该目录不再位于sys.path之前。

  • bpo-36352:如果路径太长,Python 初始化现在会因错误而失败,而不是无声地截断路径。

  • bpo-36301:如果启动时解码pybuilddir.txt配置文件失败,则 Python 初始化现在将失败。

  • bpo-36333:修复_PyRuntimeState_Fini 中的泄漏。由 StéphaneWirtel 提供。

  • bpo-36332:内置compile()现在可以处理包含赋值表达式的 AST 对象。 Pablo Galindo 修补程序。

  • bpo-36282:改进了一些内置函数中过多的位置参数错误消息。

  • bpo-30040:新的空字典现在使用较少的内存。它比dict.clear()创建的空字典使用更多的内存。空字典的创建和删除速度大约快 2 倍。 Inada Naoki 的补丁。

  • bpo-36262:修复了float(str)complex(str)pickle.load()marshal.load()等使用的函数_Py_dg_strtod()中从字符串转换为 float 时发生不太可能的内存泄漏。

  • bpo-36252:将 Unicode 数据库更新到版本 12.0.0.

  • bpo-36218:修复了对异构值列表进行排序时发生的段错误。补丁由 RémiLapeyre 和 Elliot Gorokhovsky 提供。

  • bpo-36188:清除了方法对象和文档中 Python 2 未绑定方法处理的剩余痕迹。 Martijn Pieters 修补程序

  • bpo-36124:添加一个新的特定于解释程序的字典,并pass PyInterpreterState_GetDict()在 C-API 中公开它。这与 PyThreadState_GetDict()相似。但是,扩展模块应 continue 将 PyModule_GetState()用于其自身的内部解释器状态。

  • bpo-35975:在ast.parse()(已记录)和compile()(隐藏)中添加feature_version标志,从而可以调整解析器以支持较早版本的语法。特别地,如果feature_version是 5 或 6,则将恢复来自 PEP 492 的asyncawait关键字的 hack。 (对于 7 或更高版本,它们无条件地视为关键字,但是它们仍然是特殊标记,而不是解析器驱动程序识别的NAME标记.)

  • bpo-31904:将 UTF-8 用作 VxWorks 上的系统编码。

  • bpo-36048:将使用index()特殊方法代替int(),以将 Python 数字隐式转换为 C 整数。不建议在隐式转换中使用__int__()方法。

  • bpo-35808:退出 pgen 并使用 pgen2 的修改版本来生成解析器。 Pablo Galindo 修补程序。

Library

  • bpo-36401:pydoc 创建的类文档现在有一个用于只读属性的单独部分。

  • bpo-36320:typeing.NamedTuple()类已弃用_field_types 属性,而赞成__annotations_属性,该属性携带相同的信息。同样,两个属性都从 OrderedDict 转换为常规 dict。

  • bpo-34745:修复asyncio循环引用导致的 ssl 内存问题

  • bpo-36324:向 statistics.NormalDist 添加方法,用于计算逆累积正态分布。

  • bpo-36321:collections.namedtuple()拼写错误的属性名称。为了与 type.NamedTuple 保持一致,属性名称应为“ _field_defaults”而不是“ _fields_defaults”。为了向后兼容,现在创建了两个拼写。拼写错误的版本将来可能会删除。

  • bpo-36297:“ unicode_internal”编解码器已删除。自 Python 3.3 起不推荐使用。 Inada Naoki 的补丁。

  • bpo-36298:当找不到模块时,在 pyclbr 中引发 ModuleNotFoundError。感谢'mental'提供的错误报告。

  • bpo-36268:从特定于供应商的 GNU 中,将用于编写 mod:tarfile的 tar 的默认格式切换为现代 POSIX.1-2001 pax 标准。由 C.A.M.贡献杰拉赫

  • bpo-36285:修复数组模块中的整数溢出。 Stephan Hohe 修补程序。

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

  • bpo-36272logging不再静默忽略 RecursionError。补丁由 RémiLapeyre 提供。

  • bpo-36280:向 ast.Constant 添加一个种类字段。如果 Literals 具有'u'前缀(即 Python 2 样式的 unicodeLiterals),则为'u',否则为 None。

  • bpo-35931pdb debug命令现在可以正常处理所有异常。

  • bpo-36251:修复用于 stderrprinter 的格式字符串并重新匹配 reprs。 Stephan Hohe 修补程序。

  • bpo-36235:修复distutils.sysconfigcustomize_compiler()中的CFLAGS:定义CFLAGS环境变量时,请勿再用OPT变量覆盖CFLAGS变量。 David Malcolm 编写的初始补丁。

  • bpo-35807:更新 surepip 以安装 pip 19.0.3 和 setuptools 40.8.0.

  • bpo-36139:关闭mmap个对象时释放 GIL。

  • bpo-36179:修复_hashopenssl 中两个不太可能的参考泄漏。泄漏仅发生在内存不足的情况下。

  • bpo-36169:向 statistics.NormalDist 中添加 overlay()方法。计算两个正态分布的重叠系数。

  • bpo-36103shutil.copyfileobj()使用的默认缓冲区大小在非 Windows 平台上从 16 KiB 更改为 64 KiB,以减少系统调用开销。由稻田直树贡献。

  • bpo-36130:进入没有__name__全局框架时,用skip=...修复pdb。 Anthony Sottile 修补程序。

  • bpo-35652:shutil.copytree(copy_function =…)错误地传递了 DirEntry 而不是路径字符串。

  • bpo-35178:确保自定义warnings.formatwarning()函数可以接收line作为位置参数。基于 Tashrif Billah 的补丁。

  • bpo-36106:解决与 libm 的 sinpi()潜在的名称冲突。 Dmitrii Pasechnik 修补程序。

  • bpo-36091:清除库/类型中对异步生成器的引用。亨利·陈的补丁。

  • bpo-36043FileCookieJar支持path-like object。由 StéphaneWirtel 贡献

  • bpo-35899:枚举已得到修复,可以正确处理空字符串和具有非拉丁字符(即'α','א')的字符串而不会崩溃。麦克斯韦(Maxwell)提供的原始补丁。在斯特凡·维尔特尔的协助下。

  • bpo-21269:添加argskwargs属性以模拟调用对象。由 Kumar Akshay 贡献。

  • bpo-30670pprint.pp已添加到漂亮打印对象中,默认情况下按字典键的插入 Sequences 对字典键进行排序。参数* sort_dicts *已添加到pprint.pprintpprint.pformatpprint.PrettyPrinter。由 RémiLapeyre 提供。

  • bpo-35843:为_NamespacePath实现__getitem__。 Anthony Sottile 修补程序。

  • bpo-35802:清理检查始终存在的os.stat/os.lstat/os.chmod的代码。 Anthony Sottile 修补程序。

  • bpo-35715:在不再需要释放内存时,处理 ProcessPoolExecutor _process_worker 的返回值

  • bpo-35493:使用multiprocessing.connection.wait()而不是每 0.2 秒轮询一次multiprocessing.Pool中的工作人员更新。 Pablo Galindo 修补程序。

  • bpo-35661:将 venv 提示符存储在 pyvenv.cfg 中。

  • bpo-35121:当请求路径与 cookie 的 path 属性的前缀匹配但不以“ /”结尾时,请不要为请求设置 cookie。 Karthikeyan Singaravelan 修补程序。

  • bpo-21478:使用unittest.mock.create_autospec()创建的子函数的调用应传播到父函数。 Karthikeyan Singaravelan 修补程序。

  • bpo-35198:在 AIX 上修复 C 扩展编译

Documentation

  • bpo-36329:语句在执行make -C Doc/ serve时使用Tools/scripts/serve.py的 Python 二进制文件的路径。由 StéphaneWirtel 贡献

  • bpo-36138:改进有关将 datetime.timedelta 转换为标量的文档。

  • bpo-21314:在编程常见问题解答的“核心语言”部分添加了一个新条目,该条目解释了函数签名中斜杠(/)的用法。 Lysandros Nikolaou 的补丁

Tests

  • bpo-36234:test_posix.PosixUidGidTests:添加针对无效 uid/gid 类型(str)的测试。 David Malcolm 编写的初始补丁。

  • bpo-29571:修复test_re.test_locale_flag():使用locale.getpreferredencoding()而不是locale.getlocale()来获取语言环境编码。在某些语言环境中,locale.getlocale()返回错误的编码。

  • bpo-36123:修复 test_socket 中的竞争条件。

Build

  • bpo-36356:修复了使用地址清理器配置后导致构建失败的泄漏。

  • bpo-36146:在setup.py上添加TEST_EXTENSIONS常量,以免构建_testcapi之类的测试扩展。

  • bpo-36146:在 macOS 上修复 setup.py:仅添加/usr/include/ffi以包含_ctypes 目录,而不是所有 extensions。

  • bpo-31904:使构建系统能够针对 VxWorks RTOS 进行交叉构建。

Windows

  • bpo-36312:以下代码页的固定解码器:50220、50221、50222、50225、50227、50229、57002 至 57011、65000 和 42.

  • bpo-36264:不要在 Windows 的os.path.expanduser中使用 POSIX HOME。 Anthony Sottile 修补程序。

  • bpo-24643:修复由于 PC/pyconfig.h 中的#define timezone _timezone而导致的名称冲突。

IDLE

  • bpo-36405:在 idlelib 中使用 dict 拆包。

  • bpo-36396:删除 idlelib.config.GetHighlight()的 fgBg 参数。该参数仅使用了两次,并更改了返回类型。

  • bpo-36176:修复 IDLE 自动填充和 calltip 弹出颜色。防止与 Linux 深色主题发生冲突(并使 calltip 背景稍微变暗)。

  • bpo-23205:对于 grep 模块,添加针对 findfile 的测试,将 findfile 重构为模块级Function,并重构 findfile 以使用 os.walk。

  • bpo-23216:将文档字符串添加到 IDLE 搜索模块。

  • bpo-36152:删除 colorizer.ColorDelegator.close_when_done 和.close()的相应参数。自 2007 年以来,在 IDLE 中,两者始终为 None 或 False。

  • bpo-32129:避免在带有 Tk 8.6 的 macOS 上使用模糊的 IDLE 应用程序图标。 Kevin Walzer 修补程序。

  • bpo-36096:将类变量重构为着色器中的实例变量。

  • bpo-30348:将 idlelib.autocomplete 的测试覆盖率增加 30%。路易·卢的补丁

Tools/Demos

  • bpo-35132:在 gdb7 上修复 python-gdb.py 的 py-list 和 py-bt 命令。

  • bpo-32217:修复 Windows 上的冻结脚本。

C API

  • bpo-36381:当使用'#'格式来构建或解析不带PY_SSIZE_T_CLEAN的值时,引发DeprecationWarning

  • bpo-36142:现在,整个 coreconfig.hHeaders 已从 Py_LIMITED_API 中排除。将函数定义移动到新的内部 pycore_coreconfig.hHeaders 中。

Python 3.8.0 alpha 2

*发布日期:2019-02-25 *

核心和内建函数

  • bpo-36052:使用赋值运算符将值分配给debug时,引发SyntaxError。由 StéphaneWirtel 和 Pablo Galindo 贡献。

  • bpo-36012:类变量的写入速度提高了一倍。更新 non-dunder 属性时,不需要进行更新插槽的调用。

  • bpo-35942:改进了在允许传递PathLike对象的接口中从__fspath__返回无效类型时发出的错误消息,现在它可以解释错误的来源。

  • bpo-36016gc.get_objects现在可以接收一个可选参数,指示从中获取对象的年代。 Pablo Galindo 修补程序。

  • bpo-1054041:当主解释器由于未捕获的 KeyboardInterrupt 而退出时,该进程现在以适当的方式退出,以使其父进程检测到 SIGINT 或^ C 终止了该进程。这使 Shell 和批处理脚本可以了解用户已要求它们停止。

  • bpo-35992:修复__class_getitem__()不能在具有自定义不可下标元类的类上调用。

  • bpo-35993:修复了使用子解释器时 fork 崩溃的问题。由 StéphaneWirtel 贡献

  • bpo-35991:在 Modules/_randommodule.c 中修复潜在的双重释放。

  • bpo-35961:修复 slice_richcompare()中的崩溃:对两个临时内部 Tuples 使用强引用而不是被盗引用。

  • bpo-35911:pass添加cell.__new__方法来启用单元对象的创建,并在Lib/types.py中的 CellType 名称下公开cell类型。 Pierre Glaser 修补程序。

  • bpo-12822:当pthread_condattr_setclockCLOCK_MONOTONIC可用时,对pthread_cond_timedwait使用单调时钟。

  • bpo-15248:在 Tuples 或列表前可能缺少逗号的情况下,编译器将立即发出语法警告。

  • bpo-35886:PyInterpreterState 的实现已移入内部头文件(由 Py_BUILD_CORE 保护)。

  • bpo-31506:澄清当object.__new__object.__init__收到多个自变量时报告的错误。由 Sanyam Khurana 贡献。

  • bpo-35724:现在可以保证相对于主解释器进行 signal 处理。

  • bpo-33608:我们添加了一个新的内部_Py_AddPendingCall(),它相对于提供的解释器进行操作。这使我们能够使用现有的实现,要求另一个解释器执行当前解释器中无法完成的工作,例如将另一个解释器拥有的对象解密。现有的 Py_AddPendingCall()仅相对于主解释器运行。

  • bpo-33989:修复了使用ob_type->tp_richcompare == NULL对对象进行排序时list.sort()中可能发生的崩溃。 Zackery Spytz 修补程序。

Library

  • 用作字符串目标的装饰器的bpo-35512unittest.mock.patch.dict()在函数调用期间而不是在装饰器构造期间解析目标。 Karthikeyan Singaravelan 修补程序。

  • bpo-36018:添加 statistics.NormalDist,用于创建和处理随机变量的正态分布的工具。具有一个复合类,该类将测量数据的平均值和标准偏差视为单个实体。

  • bpo-35904:添加了 statistics.fmean()作为现有的 mean()函数的一个更快的浮点变量。

  • bpo-35918:从 multiprocessing.managers.SyncManager.dict 中删除了损坏的has_key方法。由 RémiLapeyre 提供。

  • bpo-18283:将对字节的支持添加到shutil.which()

  • bpo-35960:修复dataclasses.field()丢弃作为元数据传递的空 Map 对象。

  • bpo-35500:在unittest.mock.Mock.assert_called_with()个 assert 错误中的不同行上写入预期和实际的调用参数。由 Susan Su 贡献。

  • bpo-35931pdb debug命令现在可以正常处理语法错误。

  • bpo-24209:在 http.server 脚本中,依赖于 getaddrinfo 根据 bind 参数绑定到首选地址。现在,默认绑定或绑定到名称可能会绑定到 IPv6 或双协议栈,具体取决于环境。

  • bpo-35321:将_frozen_importlib__spec__.origin设置为冻结,以便与_frozen_importlib_external的行为匹配。 Nina Zakharenko 的补丁。

  • bpo-35378:修复了multiprocessing.Pool内的一个参考问题,如果删除了该池却未将其关闭或显式终止,则该池仍保持活动状态。向池迭代器添加了新的强引用,以将池的生存期与其迭代器的生存期链接在一起,因此,如果池迭代器仍然存在,则池不会被破坏。

  • bpo-34294:重新模块,在极少数情况下修复错误的捕获组。 re.search()re.findall()re.sub()和其他pass字符串进行扫描以寻找匹配项的函数应重置两次匹配try之间的捕获组。马琳的补丁。

  • bpo-35615weakref:在复制 WeakKeyDictionary 或 WeakValueDictionary 时,由于在迭代过程中某些键或值消失了,因此修复了 RuntimeError。

  • bpo-35606:将math.prod()实现为类似于sum()的函数,该函数返回“起始”值(默认值:1)乘以数字可迭代数的乘积。 Pablo Galindo 修补程序。

  • bpo-32417:现在在datetime.datetime子类和datetime.timedelta之间执行算术运算将返回与datetime.datetime子类相同类型的对象。结果,现在datetime.datetime.astimezone()以及passtz参数调用的datetime.datetime.now()datetime.fromtimestamp()之类的替代构造函数仍保留其子类。

  • bpo-35153:向xmlrpc.client.ServerProxyxmlrpc.client.Transportxmlrpc.client.SafeTransport添加* headers *可选的仅关键字参数。 CédricKrier 的补丁。

  • bpo-34572:修复 pickle.loads 的 C 实现以使用 importlib 的锁定机制,从而避免使用部分加载的模块。 Tim Burgess 的补丁。

Documentation

  • bpo-36083:修复了手册摘要中的–check-hash-based-pycs 选项的格式。

  • bpo-36007:将最低狮身人面像版本提高到 1.8. Anthony Sottile 修补程序。

  • bpo-22062:更新 pathlib 的文档和文档字符串。 Mike Short 的原始补丁。

Tests

  • bpo-27313:避免使用 macOS Cocoa Tk 的 test_ttk_guionly ComboboxTest 失败。

  • bpo-36019:添加 test.support.TEST_HTTP_URL 并用此新常量替换http://www.example.com的引用。由 StéphaneWirtel 提供。

  • bpo-36037:修复 test_ssl 以进行严格的 OpenSSL 配置,例如 RHEL8 严格的加密策略。如果需要,请使用较早的 TLS 版本作为服务器 SSL 上下文的最低 TLS 版本,以测试比默认的最低 TLS 版本更早的 TLS 版本。

  • bpo-35798:已添加test.support.check_syntax_warning()

  • bpo-35505:使 test_imap4_host_default_value 独立于本地 IMAP 服务器是否正在运行。

  • bpo-35917:多重处理:为 SyncManager 和 SharedMemoryManager 类提供应该由它们支持的所有可共享类型的单元测试。 (Giampaolo Rodola 修补程序)

  • bpo-35704:如果 MAXDATA 设置小于 0x20000000,请跳过test_shutil.test_unpack_archive_xztar以防止在 32 位 AIX 上出现 MemoryError。

Michael Felt 的补丁(aixtools)

  • bpo-34720:assertm_state!= NULL 以模拟未创建模块状态时不能正确处理模块创建的 GC 遍历函数。

Windows

  • bpo-35976:在 PCBuild 中为 Windows 构建文件添加了 ARM 构建支持。

  • bpo-35692pathlib在尚未准备就绪的驱动器上检查文件和目录是否存在时不再升高

  • bpo-35872:在虚拟环境中调用 venv 时使用基本的 Python 可执行文件

  • bpo-35873:防止 venv 路径被子进程继承

  • bpo-35299:修复了 PGO 分析过程中源目录的 sysconfig 检测和 pyconfig.h 的 distutils 处理

IDLE

  • bpo-24310:IDLE –文档设置对话框的字体选项卡示例。

  • bpo-35833:修改 IDLE 文档以获取发送给 Shell 的控制代码。添加一个代码示例块。

  • bpo-35689:为 colorizer.py 添加文档字符串和单元测试。

Python 3.8.0 alpha 1

*发布日期:2019-02-03 *

Security

  • bpo-35746:[CVE-2019-5010]修复了 ssl 模块中的 NULL 指针取消引用。证书解析器无法正确处理带有空 DP 或 URI 的 CRL 分发点。恶意或错误的证书可能导致段错误。思科的 Colin Read 和 Nicolas Edet 报告了漏洞(TALOS-2018-0758)。

  • bpo-34812:生成子进程时,multiprocessingdistutils模块现在也复制了-I命令行选项(以隔离模式运行 Python)。以前,仅复制了-E-s选项(由-I启用)。

  • bpo-34791:当pass-E 或-I 参数设置 sys.flags.ignore_environment 时,xml.sax 和 xml.dom.domreg 不再使用环境变量来覆盖解析器实现。

  • bpo-17239:默认情况下,xml.sax 和 xml.dom.minidom 解析器不再处理外部实体。外部 DTD 和 ENTITY 语句不再加载文件或创建网络连接。

  • bpo-34623:CVE-2018-14647:C 加速_elementtree 模块现在从_Py_HashSecret 代替 libexpat 的默认 CSPRNG 初始化哈希随机化盐。

  • bpo-34405:已更新为 Windows 构建的 OpenSSL 1.1.0i。

  • bpo-33871:修复了在 macOS 上的os.sendfile()中发送文件的一部分。使用* trailers *参数可能导致从 Importing 文件发送的字节数超过指定的字节数。

  • bpo-32533:修复了_ssl 中错误处理的线程安全性。

  • bpo-33136:针对 LibreSSL CVE-2018-8970 强化 ssl 模块。 X509_VERIFY_PARAM_set1_host()用显式的 namelen 调用。一项新的测试可确保不允许使用 NULL 字节。

  • bpo-33001:用于防止 Windows 上 os.symlink 中的缓冲区溢出的最小修复

  • bpo-32981:difflib 和 poplib 中的正则表达式容易遭受灾难性的回溯。这些正则表达式形成了潜在的 DOS 向量(REDOS)。它们已被重构。这解决了 CVE-2018-1060 和 CVE-2018-1061. Jamie Davis 的补丁。

  • bpo-28414:现在,ssl 模块允许用户在使用 SNI 时执行自己的 IDN 编码/解码。

核心和内建函数

  • bpo-35877:在 while 语句中,括号对于命名表达式是可选的。 Karthikeyan Singaravelan 修补程序。

  • bpo-35814:在带 Comments 的作业中允许使用与常规表达式相同的右侧表达式。特别是,现在允许x: Tuple[int, int] = 1, 2(在右侧没有括号)。

  • bpo-35766:在 ast 模块中添加了用于解析 PEP 484 类型 Comments 的选项。 (默认情况下处于禁用状态.)这是其第三方分叉typed_ast的关键Function的合并。

  • bpo-35713:重新组织 Python 初始化以获得较早的工作异常和 sys.stderr。

  • bpo-33416:将结束行和结束列的位置信息添加到 Python AST 节点。这是 C 级向后不兼容的更改。

  • bpo-35720:修复了 Modules/main.c 中 pymain_parse_cmdline_impl 函数中的少量内存泄漏

  • bpo-35634func(**kwargs)现在将在kwargs是包含多个具有相同键的条目的 Map 时引发错误。自 Python 3.6 起,在**kwargs之前传递其他关键字参数时,已经引发了错误。

  • bpo-35623:修复了对很长的列表进行排序时发生的崩溃。 Stephan Hohe 修补程序。

  • bpo-35214:添加了 clang Memory Sanitizer 构建工具,以解决来自 posix,套接字,时间,test_io 和 test_faulthandler 的误报。

  • bpo-35560:在调试版本中修复format()中的 assert 错误,以使用“ n”格式,零填充和小宽度的浮点格式。发布版本不受影响。 Karthikeyan Singaravelan 修补程序。

  • bpo-35552:如果指定了* precision *,则PyUnicode_FromFormat()中的格式字符%s%VPyBytes_FromFormat()中的%s不再读取超出限制的内存。

  • bpo-35504:删除某些属性时修复段错误和SystemError。 Zackery Spytz 修补程序。

  • bpo-35504:修复了删除 OSError 的 character_writer 属性时出现的 SystemError。

  • bpo-35494:改进了 f 字符串中不平衡括号的语法错误消息。

  • bpo-35444:修复了无法查找内置“ getattr”时在 Pickling 方法中的错误处理。加快 Pickling 迭代器的速度。

  • bpo-35436:解决了有关内存分配错误处理的各种问题。 Zackery Spytz 修补程序。

  • bpo-35423:将 eval 循环中的 signal 处理触发器与“未决呼叫”机制分开。没有语义上的变化,并且性能上的差异不明显。

  • bpo-35357:现在,内部属性的 unittest.mock._Call 和 unittest.mock.MagicProxy 名称(名称,父级和 from_kall)以_mock 开头,以防止与广泛使用的对象属性发生冲突。修复了测试Function名称中的小错字。

  • bpo-35372:修复了代码页解码器,其 Importing 大于 2 GiB,其中包含不可解码的字节。

  • bpo-35336:修复 PYTHONCOERCECLOCALE = 1 环境变量:仅当 LC_CTYPE 语言环境为“ C”时,才强制 C 语言环境。

  • bpo-31241:用于列表理解,生成器表达式和 Tuples 的 AST 节点的* lineno col_offset *属性现在指向左括号或方括号。对于不带括号的 Tuples,它们指向第一项的位置。

  • bpo-33954:对于使用_n 格式器的非 ASCII 小数点的str.format()float.__format__()complex.__format__()方法。

  • bpo-35269:修复涉及新创建的协程的可能的段错误。 Zackery Spytz 修补程序。

  • bpo-35224:实现 PEP 572(赋值表达式)。 Emily Morehouse 修补程序。

  • bpo-32492:使用 C 快速路径的名称 Descriptors 将namedtuple属性访问速度提高 1.6 倍。 Pablo Galindo 修补程序。

  • bpo-35214:修复了在诸如'\N'之类的字符串末尾解析截断的 unicode 转义序列时的越界内存访问。它会在内存分配结束后读取一个字节。

  • bpo-35214:解释器和扩展模块已添加 Comments,以便它们在 clang 的 Memory Sanitizer 下正常运行。添加了新的 configure 标志–with-memory-sanitizer,以使这种性质的测试构建更容易执行。

  • bpo-35193:修复了字节码窥孔优化器中的一个错误,当删除无法访问的代码时,该错误可能读取超出数组范围末尾的字节。到目前为止,此错误在每个 Python 3.6 和 3.7 版本中都存在。

  • bpo-35169:改进了禁止分配的错误消息。

  • bpo-34022:修复了zipimport中基于哈希的字节码文件的处理。 Elvis Pranskevichus 的补丁。

  • bpo-28401:调试版本将不再try导入为 ABI 构建的扩展模块,因为它们从一开始就不兼容。 Stefano Rivera 修补程序。

  • bpo-29341:在os方法的文档字符串中阐明,类似路径的对象也被接受为 Importing 参数。

  • bpo-35050socket:修复了AF_ALG名称和类型的长度检查中的一个错误。

  • bpo-29743:如果ctypes.Array子类中的_length_为负数,则提高ValueError而不是OverflowError。对于非整数_length_,还要加TypeError而不是AttributeError。 Oren Milman 的原始补丁。

  • bpo-16806:修复linenocol_offset以获得多行字符串标记。

  • 现在,将在代码生成时作为异常引发的bpo-35029SyntaxWarning替换为SyntaxError,以更好地报告错误。

  • bpo-34983:在 symtable 模块中公开symtable.Symbol.is_nonlocal()。 Pablo Galindo 修补程序。

  • bpo-34974bytesbytearray构造函数不再将意外的异常(例如MemoryErrorKeyboardInterrupt)转换为TypeError

  • bpo-34939:允许在模块名称空间中被 Comments 的名称在 Comments 发生之前语句为全局名称。 Pablo Galindo 修补程序。

  • bpo-34973:修复了list参数在迭代时发生突变时bytes()崩溃的问题。

  • bpo-34876:用于修饰函数和类的 AST 的* lineno col_offset *属性现在引用相应的defasync defclass的位置,而不是第一个装饰器的位置。这样可以在跟踪中获得更正确的行报告。这是子 AST 节点的位置可以位于父 AST 节点的位置之前的唯一情况。

  • bpo-34879:修复 bytesobject.c 中可能的空指针取消引用。 Zackery Spytz 修补程序。

  • bpo-34784:修复 PyStructSequence_NewType 的实现,以创建分配给堆的 StructSequences。

  • bpo-32912:对于字符串和字节 Literals 中的无效转义序列,现在将发出SyntaxWarning而不是DeprecationWarning

  • bpo-34854:修复了在编译包含 Lambda 的字符串 Comments 时崩溃的问题,该 Lambda 具有仅关键字参数且没有默认值。

  • bpo-34850:现在将身份检查(isis not)与某些类型的 Literals(例如字符串,整数)一起使用时,编译器会产生SyntaxWarning。这些通常在 CPython 中偶然地起作用,但是语言规范无法保证。该警告建议用户改用相等性测试(==!=)。

  • bpo-34824:在 Modules/_ssl.c 中修复了可能的空指针取消引用。 Zackery Spytz 修补程序。

  • bpo-30156:C 函数property_descr_get()使用“缓存”Tuples 来优化函数调用。但是可以在调试模式下使用sys.getobjects()找到该 Tuples。取消优化,这并不是很值得,它在去年导致了 3 次不同的崩溃。

  • bpo-34762:修复 contextvars C API 以使用 PyObject *指针类型。

  • bpo-34751:Tuples 的哈希函数现在基于 xxHash,它在(以前)病理情况下可提供更好的碰撞结果。此外,在 64 位系统上,它通常可以改善 Tuples 哈希。 Jeroen Demeyer 的补丁,Tim Peters 做出了巨大贡献。

  • bpo-34735:修复 Modules/timemodule.c 中的内存泄漏。 Zackery Spytz 修补程序。

  • bpo-34683:修复了一个错误,该错误有些 SyntaxError 错误指向不一Pair应的位置。

  • bpo-34651:仅允许主解释器派生。避免影响主解释器的可能性,这对运行时的操作至关重要。

  • bpo-34653:删除未使用的函数 PyParser_SimpleParseStringFilename。

  • bpo-32236:如果以二进制模式和buffering=1调用open(),则警告不支持行缓冲。

  • bpo-34641:进一步限制函数调用中关键字参数左侧的语法。特别是现在禁止f((keyword)=arg)

  • bpo-34637:使* sum() start *参数作为关键字参数可见。

  • bpo-1621:在执行设置哈希表大小调整时,不要假设有符号整数溢出行为(C 未定义行为)。

  • bpo-34588:修正了回溯格式的递归调用修剪Function中的“Pair一”问题。

  • bpo-34485:在 Windows 上,现在在启动时将 LC_CTYPE 设置为用户首选的语言环境。以前,LC_CTYPE 语言环境在启动时为“ C”,但在调用 setlocale(LC_CTYPE,“”)或 setlocale(LC_ALL,“”)时更改。

  • bpo-34485:像 sys.stdout 这样的标准流现在在 POSIX 区域设置中使用“ surrogateescape”错误处理程序,而不是“ strict”(当不强制使用 C 区域设置并且禁用 UTF-8 模式时)。

  • bpo-34485:修复了标准流(例如 sys.stdout)的错误处理程序:PYTHONIOENCODING =“:”现在被忽略,而不是将错误处理程序设置为“ strict”。

  • bpo-34485:Python 现在使用 C 代码获取语言环境编码,以初始化 sys.stdout 等标准流的编码。而且,现在将编码初始化为 Python 编解码器名称,以获取规范化的编码名称并确保已加载编解码器。更改默认情况下避免在启动时导入_bootlocale 和_locale 模块。

  • bpo-34527:在 FreeBSD 上,如果 LC_CTYPE 语言环境为“ POSIX”,则不仅 Py_DecodeLocale()和 Py_EncodeLocale()还将强制 ASCII 编码,不仅 LC_CTYPE 语言环境为“ C”。

  • bpo-34527:现在,不仅pass“ C”语言环境,还pass“ POSIX”语言环境启用了 UTF-8 模式。

  • bpo-34403:在具有 C 或 POSIX 语言环境的 HP-UX 上,sys.getfilesystemencoding()现在返回“ ascii”而不是“ roman8”(禁用 UTF-8 模式且不强制使用 C 语言环境时)。

  • bpo-34523:现在可以在 Python 初始化期间更早地读取 Python 文件系统编码。

  • bpo-12458:现在,回溯可以为多行表达式中的子表达式显示正确的行号。traceback 现在显示多行表达式的第一行的行号,而不是最后一个子表达式的行号。

  • bpo-34408:防止PyInterpreterState_New()中的空指针取消引用和资源泄漏。

  • bpo-34400:修复 parsetok.c 中未定义的行为。 Zackery Spytz 修补程序。

  • bpo-33073:为 int 添加了 as_integer_ratio,以使其更易于与浮点数互操作。

  • bpo-34377:将 valgrind 抑制列表更新为使用_PyObject_Free/_PyObject_Realloc而不是PyObject_Free/PyObject_Realloc

  • bpo-34353:在stat.filemode() Python 实现中添加了“ socket”选项以匹配 C 实现。

  • bpo-34320:修复dict(od)没有复制 OrderedDict 的迭代 Sequences。

  • bpo-34113:修复了将操作码堆栈调整为负数时调试版本崩溃的问题。康斯坦丁·皮特里瑟(Constantin Petrisor)的补丁。

  • bpo-34100:编译器现在以递归方式合并 Tuples 和冻结集中的常量。诸如co_names之类的代码属性也被合并。

  • bpo-34151:列表串联,重复和切片操作的性能略有提高。 Sergey Fedoseev 的补丁。

  • bpo-34170:-X dev:现在即使启用了开发人员模式,也可以使用 PYTHONMALLOC 覆盖内存分配器。

  • bpo-33237:对于部分初始化的模块,改进了AttributeError消息。

  • bpo-34149:修复最小和最大Function,以在键为 None 时获得默认行为。

  • bpo-34125:现在,当给定**kwargs时,可以分析未绑定的内置方法。

  • bpo-34141:优化的 Pickling 原子类型(None,bool,int,float,bytes,str)。

  • bpo-34126:概要分析未绑定方法的某些无效调用时崩溃。 Jeroen Demeyer 的补丁。

  • bpo-24618:修复了在创建具有较小的 varnamesTuples 或过多的参数计数的代码对象时读取无效内存的问题。

  • bpo-34068:在io.IOBase.close()中,确保未将closed属性设置为实时异常。 Zackery Spytz 和 Serhiy Storchaka 的补丁。

  • bpo-34087:修复了将 Unicode 转换为数值时的缓冲区溢出。

  • bpo-34080:修复了在标记化期间引发一些罕见错误的情况下,编译器中的内存泄漏。

  • bpo-34066:在调用open()和在with open()中 Importing with 块之间,pass Ctrl-C 禁止break。

  • bpo-34042:修复 dict.copy()以维护正确的总引用计数(由 sys.gettotalrefcount()报告)。

  • bpo-33418:修复函数对象创建参考周期时可能发生的内存泄漏。

  • bpo-33985:实现 contextvars.ContextVar.name 属性。

  • bpo-33956:将供应商的 Expat 库副本更新为版本 2.2.5.

  • bpo-24596:在调用PyErr_Print()之前,先在PyRun_SimpleFileExFlags()中解密模块对象。 Zackery Spytz 修补程序。

  • bpo-33451:在调用PyEval_EvalCode()之前,关闭直接执行的 pyc 文件。

  • bpo-1617161:现在,BuiltinMethodType个实例(内置类方法)的哈希取决于* __ self __ 身份的哈希而不是其值。 ModuleTypeMethodWrapperType实例(用户定义类的方法以及诸如str.__add__的内置类的某些方法)的哈希和相等性现在取决于 __ self __ *身份的哈希和相等性,而不是其值。 MethodWrapperType实例不再支持排序。

  • bpo-33824:修复“ LC_ALL = C python3.7 -V”:在读取 Python 配置后,当编码发生更改时,请正确重置命令行解析器。

  • bpo-33803:修复了由于未将其所有字段都设置为 NULL 的对象启用 GC 跟踪而导致的 hamt.c 崩溃。

  • bpo-33738:修复了与受限 API 的七个宏不兼容问题,并添加了宏PyIter_Check()PyIndex_Check()PyExceptionClass_Name()作为函数。一个脚本自动宏检查增加了。

  • bpo-33786:修复异步生成器以正确处理 athrow()中的 GeneratorExit

  • bpo-30167PyRun_SimpleFileExFlags除了__file__之外还将__cached__从模块中删除。

  • bpo-33706:修复了解析命令行选项时 Python 初始化崩溃的问题。感谢 Christoph Gohlke 提供的错误报告和修复!

  • bpo-33597:将PyGC_Head的大小从 3 个字减少到 2 个字。

  • bpo-30654:修复了即使在之前设置了自定义处理程序的情况下,在解释器关闭时将 SIGINT 处理程序重置为 SIG_DFL 的问题。 Philipp Kerling 修补程序。

  • bpo-33622:修复了垃圾收集器无法使用__del__方法添加对象或将其引用到gc.garbage列表中时泄漏的问题。现在可以在设置了异常并保留该异常时调用PyGC_Collect()

  • bpo-33462:使字典和字典视图可逆。 RémiLapeyre 的补丁。

  • bpo-23722:现在,当自定义元类在传递给type.__new__的名称空间中不提供__classcell__条目时,将引发RuntimeError。在 Python 3.6–3.7 中发出了DeprecationWarning

  • bpo-33499:添加 PYTHONPYCACHEPREFIX环境变量和-X pycache_prefix命令行选项以设置用于写入模块字节码缓存文件的备用根目录。

  • bpo-25711zipimport模块已用纯 Python 重写。

  • bpo-33509:修复 warnings.warn_explicit()的 module_globals 参数:如果 module_globals 不是字典,则不会崩溃。

  • bpo-31849:修复了 pyhash.c 中的有符号/无符号比较警告。

  • bpo-33475:修复了将 Comments 转换为字符串并在字符串表示形式中优化括号的各种错误。

  • bpo-20104:添加了对posix_spawnsetpgroupresetidssetsigmasksetsigdefscheduler参数的支持。 Pablo Galindo 修补程序。

  • bpo-33391:修复 set_symmetric_difference()中的泄漏。

  • bpo-33363:在异步函数外部引发async withasync for语句的 SyntaxError。

  • bpo-28055:修复 siphash24()中未对齐的访问。 Rolf Eike Beer 的补丁。

  • bpo-33128:修复了导致 PathFinder 在 sys.meta_path 上出现两次的错误。 Pablo Galindo Salgado 修补程序。

  • bpo-33331:现在,在解释器关闭时首先清除最后导入的模块。

  • bpo-33312:pass调整内部结构_dictkeysobject 共享密钥结构的语句方式,修复了 dictobject.c 中的 clang ubsan(未定义的行为清除程序)警告。

  • bpo-33305:针对无效数字 Literals 的改进的语法错误消息。

  • bpo-33306:改进了不平衡括号的语法错误消息。

  • bpo-33234:当 Importing 长度已知时,列表构造函数将预先调整大小,并且不会过度分配。

  • bpo-33270:实习所有匿名代码对象的名称。 Zackery Spytz 修补程序。

  • bpo-30455:现在,从单个源文件Grammar/Tokens生成 C 和 Python 代码以及与令牌相关的文档。

  • bpo-33176:将toreadonly()方法添加到 memoryviews。

  • bpo-33231:修复normalizestring()中潜在的内存泄漏。

  • bpo-33205:将 dict 增长Function从round_up_to_power_2(used*2+hashtable_size/2)更改为round_up_to_power_2(used*3)。以前,仅在used == 0时才收缩 dict。现在,dict 有更多的机会被缩减。

  • bpo-29922:当__aenter__()__aexit__()返回不可 await 的对象时,改进了“与...异步”中的错误消息。

  • bpo-33199:从密钥共享字典复制时,字典实现中的ma_version_tag未初始化。

  • bpo-33053:使用-m 开关时,现在可以将 sys.path [0]显式扩展为* starting *工作目录,而不是保留为空路径(允许在导入时从当前工作目录进行导入) )

  • bpo-33138:更改了不可修复和不可复制类型的标准错误消息。现在它说“不能腌”而不是“不能腌”或“不能序列化”。

  • bpo-33018:分别调用非类和抽象 Base Class 作为第一个参数和第二个参数时,提高issubclass()引发的错误的一致性。 Josh Bronson 修补程序。

  • bpo-33083math.factorial不再接受非整数类型的参数。 Pablo Galindo 修补程序。

  • bpo-33041:添加了新的操作码END_ASYNC_FOR并解决了以下问题:

  • 设置全局StopAsyncIteration不再breakasync for循环。

    • 现在已禁止进入async for循环。

    • 跳出async for循环不再破坏堆栈。

  • bpo-25750:如果 Descriptors 从类中删除自身,则修复了由于type_getattro()中错误的引用导致的罕见 Python 崩溃。 Jeroen Demeyer 的补丁。

  • bpo-33041:修复了针对具有复杂目标的“异步”的字节码生成的问题。现在将传播在分配或拆包时引发的 StopAsyncIteration 而不是停止迭代。

  • bpo-33026:pass设置 f_lineno 固定跳出“ with”块。

  • bpo-33005:修复了使用自定义内存分配器(例如:使用 PYTHONMALLOC env var)时 fork 崩溃的问题。 _PyGILState_Reinit()和_PyInterpreterState_Enable()现在使用默认的 RAW 内存分配器在 fork 上分配新的解释器互斥量。

  • bpo-32911:由于在下游 Beta 测试期间发现了意外的兼容性问题,已还原为bpo-29463docstring字段已从 3.7a1 中添加的 Module,ClassDef,FunctionDef 和 AsyncFunctionDef ast 节点中删除。 Docstring 表达式作为其体内的第一条语句被恢复。基于 Inada Naoki 的补丁。

  • bpo-17288:防止从“返回”和“异常”跟踪事件跳转。

  • bpo-32946:如果模块不是软件包,则使用“从...导入...”从已经导入的模块中导入名称的速度现在提高了 30%。

  • bpo-32932:当__all__中存在非 str 对象时,使错误消息更加显眼。

  • bpo-32925:针对包含非常量x in [a, b]for x in [a, b]的 Literals 列表优化了迭代并包含测试。所有常量元素的大小写均已优化。

  • bpo-32889:更新 Valgrind 禁止列表以将Py_ADDRESS_IN_RANG重命名为address_in_range

  • bpo-32836:在列表/字典/集合理解的情况下不要使用临时变量

  • bpo-31356:删除bpo-31356中添加的新 API(gc.ensure_disabled()上下文 Management 器)。

  • bpo-32305:对于名称空间包,请确保__file____spec__.origin都设置为 None。

  • bpo-32303:确保名称空间包的__spec__.loader__loader__匹配。

  • bpo-32711:修复了针对 Python/ast_unparse.c 的警告消息。 StéphaneWirtel 修补程序

  • bpo-32583:修复了使用自定义解码错误处理程序时,由于写越界错误而导致内置 Unicode 解码器崩溃的可能性。

  • bpo-32489finally子句中现在允许使用continue语句。

  • bpo-17611:pass移动将块堆栈展开到编译器中的逻辑,简化了解释器循环。现在,编译器发出显式指令,用于调整值的堆栈并调用breakcontinuereturn的清理代码。

已删除操作码BREAK_LOOPCONTINUE_LOOPSETUP_LOOPSETUP_EXCEPT。添加了新的操作码ROT_FOURBEGIN_FINALLYCALL_FINALLYPOP_FINALLY。更改了END_FINALLYWITH_CLEANUP_START的行为。

  • bpo-32285:新函数 unicodedata.is_normalized,可以检查字符串是否为特定的标准格式。

  • bpo-10544:现在,除了最外层可迭代的表达式之外,在理解和生成器表达式中均不允许使用 yield 表达式。

  • bpo-32117:现在允许在 yield 和 return 语句中不带括号的情况下进行可迭代的拆包,例如yield 1, 2, 3, *rest。感谢 David Cuthbert 所做的更改,并感谢 Jordan Chapman 进行了更多测试。

  • bpo-31902:修复 ast 节点ast.AsyncForast.AsyncFunctionDefast.AsyncWithcol_offset属性。以前,col_offset指向async之后的关键字。

  • bpo-25862:修复io.TextIOWrappertell()方法中的 assert 失败。 Zackery Spytz 修补程序。

  • bpo-21983:如果 type 参数是 ctypes 结构化数据类型,则修复ctypes.cast()中的崩溃。 Eryk Sun 和 Oren Milman 的补丁。

  • bpo-31577:修复 ns 参数错误的情况下os.utime()的崩溃。 Oren Milman 修补程序。

  • bpo-29832:从各种套接字错误消息中删除对“ getsockaddrarg”的引用。 Oren Milman 修补程序。

Library

  • bpo-35845:将“ order”参数添加到 memoryview.tobytes()。

  • bpo-35864:用于 collections.namedtuple 的_asdict()方法现在返回常规 dict 而不是 OrderedDict。

  • bpo-35537:现在,在 subprocess.POpen 内部内部使用 ExitStack 来清理管道文件句柄。正常操作中没有行为变化。但是,如果关闭一个句柄曾经引起异常,则其他句柄现在将被关闭而不是泄漏。 (Giampaolo Rodola 修补程序)

  • bpo-35847:RISC-V 需要 CTYPES_PASS_BY_REF_HACK。修复 ctypes 结构 test_pass_by_value。

  • bpo-35813:将共享内存子模块添加到 multiprocessing 中,以避免在进程之间进行序列化

  • bpo-35780:修复递归,可重入或多线程代码中出现的 lru_cache()错误。这些错误可能导致孤立的链接,并使高速缓存陷入少于指定的最大链接数的状态。修复负的 maxsize 的处理,该处理应视为零。修复了切换“完整”状态标志时的错误。修复遇到错误时链接的 Sequences 错误。使用单个位置参数将 C 代码和纯 Python 代码同步以节省函数中的空间。在这种常见情况下,IRU 缓存条目的空间开销几乎减少了一半。修复缓存未命中计数。在错误情况下,未命中计数与调用基础用户Function的实际次数不同步。

  • bpo-35537os.posix_spawn()os.posix_spawnp()现在有了一个* setsid *参数。

  • bpo-23846asyncio.ProactorEventLoop现在在自管道已满时捕获并发送日志错误。

  • bpo-34323asyncio:增强IocpProactor.close()日志:在第一个日志之前 await1 秒钟,然后每秒记录一次。还记录自调用close()以来的秒数。

  • bpo-35674:添加一个新的os.posix_spawnp()Function。 Joannah Nanjekye 修补程序。

  • bpo-35733ast.Constant(boolean)不再是ast.Num的实例。 Anthony Sottile 修补程序。

  • bpo-35726:QueueHandler.prepare()现在在修改记录和使其排队之前先对其进行复制,以避免影响链中的其他处理程序。

  • bpo-35719:将多参数math函数 atan2(),copysign(),remainder()和 hypot()加快 1.3–2.5 倍。

  • bpo-35717:修复使用枚举和编译时引发的 KeyError 异常。补丁由 RémiLapeyre 提供。

  • bpo-35699:修复了在 distutils 中检测到 Visual Studio Build Tools 2017 的问题

  • bpo-32710:修复重叠操作失败时 asyncio ProactorEventLoop 中的内存泄漏。

  • bpo-35702time.CLOCK_UPTIME_RAW常量现在可用于 macOS 10.12.

  • bpo-32710:当ReadFile()WSASend()重叠操作立即失败时,修复 ProactorEventLoop 中 asyncio 中的内存泄漏:释放内部缓冲区。

  • bpo-35682:修复asyncio.ProactorEventLoop.sendfile():如果已经完成,请勿try设置内部 Future 的结果。

  • bpo-35283:为threading.Thread.isAlive()方法添加了不建议使用的警告。罗东熙的补丁。

  • bpo-35664:pass优化参数处理并为将单个非负整数索引的常见情况添加到 Tuples 中的常见情况(这是标准库中的典型使用情况)添加快速路径,可将 operator.itemgetter()性能提高 33%。

  • bpo-35643:修复了“语法警告”:Modules/_sha3/cleanup.py 中无效的转义序列。 MickaëlSchoentgen 的补丁。

  • bpo-35619:改进了对help()pydoc中的自定义数据 Descriptors 的支持。

  • bpo-28503crypt模块现在在内部使用crypt_r()库函数而不是crypt()(如果可用)。

  • bpo-35614:修复了元类的 help()。 Sanyam Khurana 修补程序。

  • bpo-35568:将raise(signum)公开为raise_signal

  • bpo-35588:地板除数和取模运算以及fractions.Fraction类型上的divmod()Function要快 2-4 倍。 Stefan Behnel 的补丁。

  • bpo-35585:按值(例如, http.HTTPStatus(200)。

  • bpo-30561:random.gammavariate(1.0,beta)现在计算出与 random.expovariate(1.0/beta)相同的结果。这使两种算法同步,并消除了旧实现中的某些特质。但是,它确实会产生与以前不同的随机变量流。

  • bpo-35537subprocess模块现在可以在某些情况下使用os.posix_spawn()函数以获得更好的性能。

  • bpo-35526:将 barry_as_FLUFL.mandatory 的“笑话”延迟到 Python 4.0 版

  • bpo-35523:删除ctypes回调方法:不再在启动时创建回调。避免对import ctypesimport uuid发出 SELinux 警报。

  • bpo-31784uuid.uuid1()现在调用time.time_ns()而不是int(time.time() * 1e9)

  • bpo-35513unittest.runner中的TextTestRunner现在使用time.perf_counter()而不是time.time()来衡量测试的执行时间:time.time()可以倒退,而time.perf_counter()是单调的。

  • bpo-35502:修复了未完成树的构建的情况下xml.etree.ElementTree.TreeBuilder中的引用泄漏(尤其是在解析 XML 期间引发错误时)。

  • bpo-35348:使file命令输出的platform.architecture()解析更可靠:在file命令中添加-b选项以Ellipsis文件名,强制使用 C 语言环境,并搜索“共享对象”模式。

  • bpo-35491multiprocessing:添加Pool.__repr__()并增强BaseProcess.__repr__()(添加 pid 和父 pid)以简化调试。池状态常量值现在是字符串而不是整数,例如RUN的值变为'RUN'而不是0

  • bpo-35477multiprocessing.Pool.__enter__()现在如果池未在运行将失败:with pool:如果使用了不止一次将失败。

  • bpo-31446:复制传递给 CreateProcessW 的命令行,因为此函数可以更改 Importing 缓冲区的内容。

  • bpo-35471:Python 2.4 放弃了对 MacOS 9 的支持。在 Python 3.7 中不推荐使用 macpath 模块。现在已删除该模块。

  • bpo-23057:在 Windows 上收到键盘break时,取消阻止 Proactor 事件循环

  • bpo-35052:使用实体修复 xml.dom.minidom cloneNode():将正确的参数传递给实体的用户数据处理程序。

  • bpo-20239:允许重复删除unittest.mock.Mock个属性。 Pablo Galindo 修补程序。

  • bpo-17185:将__signature__设置为模拟inspect以获得签名。 Karthikeyan Singaravelan 修补程序。

  • bpo-35445:不再忽略创建 posix.environ 期间的内存错误。

  • bpo-35415:验证 socket.socket()的 fileno =参数。

  • bpo-35424multiprocessing.Pool如果池仍在运行,则析构函数现在发出ResourceWarning

  • bpo-35330:使用Mock实例包装对象时,如果在 it 的其中一种方法中使用side_effect,则不要调用原始实现并返回使用副作用的结果与使用该方法相同 return_value。

  • bpo-35346:从platform模块中删除 Mac OS 9 和 Rhapsody 支持。 Rhapsody 的最新版本是 2000 年。Mac OS 9 的最新版本是 2001 年。

  • bpo-10496distutils.utils中的check_environ()现在在调用pwd.getpwuid()时捕获KeyError:在这种情况下,请勿创建HOME环境变量。

  • bpo-10496posixpath.expanduser()现在如果未设置HOME环境变量并且当前用户没有主目录(如果密码数据库中不存在当前用户标识符),则返回 Importing* path *不变。如果当前用户不在密码数据库中(如果该用户没有主目录),则此更改将修复site模块。

  • bpo-35389platform.libc_ver()现在使用os.confstr('CS_GNU_LIBC_VERSION')(如果可用)并且未设置* executable *参数。

  • bpo-35394:向异步抽象协议添加空插槽。

  • bpo-35310:修复了select.select()中的错误,在某些情况下,即使文件 Descriptors 可能尚未准备好,在某些情况下,文件 Descriptors 序列在 signal break后仍未得到修改。现在,如果发生超时,select.select()将始终返回空列表。 Oran Avraham 的补丁。

  • bpo-35380:在 Windows 上为 proactor 异步事件循环启用 TCP_NODELAY。

  • bpo-35341:将通用版本collections.OrderedDict添加到typing模块。 Ismo Toijala 的补丁。

  • bpo-35371:修复了传递错误参数时 Windows 上os.utime()可能崩溃的问题。

  • bpo-35346platform.uname()现在在运行cmd /c ver之类的外部程序时将stderr重定向到os.devnull

  • bpo-35066:以前,在日期时间对象上使用格式字符串结尾为'%'的 strftime()方法将导致异常。但是,这仅在使用 datetime C 模块时发生。 python 实现与此行为不匹配。 Datetime 现在符合 PEP-399,不会在尾随的'%'上引发异常。

  • bpo-35345:函数platform.popen已被删除,自 Python 3.3 起不推荐使用:改用os.popen()

  • bpo-35344:在 macOS 上,platform.platform()现在使用platform.mac_ver(),如果它返回非空的发布字符串,则获取 macOS 版本而不是 darwin 版本。

  • bpo-35312:使lib2to3.pgen2.parse.ParseError来回腌制成为可能。 Anthony Sottile 修补程序。

  • bpo-35308:修复webbrowser中的回归,在该回归中,默认浏览器可能优于BROWSER环境变量中的浏览器。

  • bpo-24746:避免在 doctest 花式差异中剥离尾随空格。 R. David Murray 和 Jairo Trad 的原始补丁。由 Sanyam Khurana 增强。

  • bpo-28604locale.localeconv()现在如果两个语言环境不同并且货币字符串为非 ASCII,则暂时将LC_CTYPE语言环境设置为LC_MONETARY语言环境。此临时更改会影响其他线程。

  • bpo-35277:更新 surepip 以安装 pip 18.1 和 setuptools 40.6.2.

  • bpo-24209:直接调用 http.server 时添加 IPv6 支持。

  • bpo-35226:在测试unittest.mock.call个对象的相等性时递归检查参数,并请注意,无法跟踪用于在mock_calls中创建模拟祖先的参数。

  • bpo-29564:警告模块现在建议如果指定了源,则 tracemalloc 模块可用,但 tracemalloc 不跟踪内存分配,则启用 tracemalloc。

  • bpo-35189:修改以下 fnctl 函数,使其在 signal(EINTR)break时重试:flock,lockf,fnctl

  • bpo-30064:在 sock_ * asyncio API 中使用 add_done_callback()提前取消订阅读写程序。

  • bpo-35186:删除了将setup.py uploadbdist_rpmbdist_dumb一起使用时添加的“内置于”Comments。

  • bpo-35152:允许在非 Windows 系统上的 multiprocessing 连接上一次发送超过 2 GB 的数据。

  • bpo-35062:修复了_io.IncrementalNewlineDecoder的* translate *参数的错误解析。

  • bpo-35065:删除StreamReaderProtocol._untrack_reader。当前对_untrack_reader的调用执行得太早,导致connection_lost可以运行并将 EOF 馈送到读取器之前,协议忘记了读取器。

  • bpo-34160:现在,ElementTree 和 minidom 保留用户指定的属性 Sequences。

  • bpo-35079:pass添加“非重叠”并将“!=”更改为“ <”来改进 difflib.SequenceManager.get_matching_blocks 文档。

  • bpo-33710gettext模块中已弃用的l*gettext()函数和方法。它们返回编码的字节而不是 Unicode 字符串,并且是 Python 的 2 倍结果。不建议使用的函数和方法,与为l*gettext()函数和方法设置字符集有关。

  • bpo-35017socketserver.BaseServer.serve_forever()现在在轮询新事件时调用shutdown()方法会立即退出。

  • bpo-35024importlib在已记录(created|could not create)之后不再重复记录wrote。 Quentin Agren 的补丁。

  • bpo-35047unittest.mock现在如果assert_not_calledassert_called_onceassert_called_once_with失败,则在异常消息中包括模拟调用。由 Petter Strandmark 修补。

  • bpo-31047:修复ntpath.abspath回归,该回归未删除 Windows 上的尾随分隔符。 Tim Graham 的补丁。

  • bpo-35053:现在,当从“空闲列表”中重用对象时,tracemalloc 会try更新回溯(例如,为更快地创建对象而进行的优化,例如由内置列表类型使用)。

  • bpo-31553:将–json-lines 选项添加到 json.tool。 hongweipeng 修补程序。

  • bpo-34794:修复了将围绕 Tcl_Obj 的 Python 包装返回 Tcl/Tk 时 Tkinter 中的漏洞。

  • bpo-34909:枚举:修复父级与具体数据类型混合时的子级子类化。

  • bpo-35022unittest.mock.MagicMock现在支持__fspath__方法(来自os.PathLike)。

  • bpo-35008:在 C 实现中为已初始化的元素调用xml.etree.ElementTree.Element__setstate__()方法时,固定引用泄漏。

  • bpo-23420:验证 cProfile CLI 的参数“ -s”的值。 Robert Kuska 修补程序

  • bpo-33947:数据类现在可以处理递归 reprs,而不会引发 RecursionError。

  • bpo-34890:使inspect.iscoroutinefunction()inspect.isgeneratorfunction()inspect.isasyncgenfunction()functools.partial()一起使用。 Pablo Galindo 修补程序。

  • bpo-34521:使用socket.CMSG_SPACE()而不是multiprocessing.reduction.recvfds()中的socket.CMSG_LEN()来计算辅助数据大小,因为 RFC 3542需要在便携式应用程序中使用前者。

  • bpo-31522mailbox.mbox.get_string函数* from_ *参数现在可以成功设置为非默认值。

  • bpo-34970:保护任务在asyncio.all_tasks()中的弱集操作

  • bpo-34969:gzip:在 gzip CLI 上添加–fast,–best,这些参数将用于快速压缩方法(快速)或最佳方法压缩(速度较慢,但文件较小)。另外,将默认压缩级别更改为 6(折衷)。

  • bpo-169652to3 execfile修复程序现在以'rb'模式打开文件。 Zackery Spytz 修补程序。

  • bpo-34966pydoc现在不仅支持在finally类中定义的方法的别名,而且还支持继承的方法的别名。别名的文档字符串不重复。

  • bpo-34926mimetypes.MimeTypes.guess_type()现在除 URL 字符串外还接受path-like object。 Mayank Asthana 修补程序。

  • bpo-23831:将moveto()方法添加到tkinter.Canvas小部件。 Juliette Monsel 修补程序。

  • bpo-34941xml.etree.ElementTree模块中Element类的方法find()findtext()findall()现在能够找到作为Element子类实例的子级。

  • bpo-32680smtplib.SMTP个对象现在始终具有sock个属性

  • bpo-34769:修复了事件循环处于调试模式且垃圾回收器在另一个线程中运行时异步生成器未完成的问题。

  • bpo-34936:在tkinter.Spinbox.selection_element()中修复TclError。 Juliette Monsel 修补程序。

  • bpo-34829:将方法selection_fromselection_rangeselection_presentselection_to添加到tkinter.Spinbox中,以与tkinter.Entry小部件保持一致。 Juliette Monsel 修补程序。

  • bpo-34911:在* http.cookiejar.DefaultCookiePolicy 中添加了 secure_protocols 参数,以允许对协议进行调整,并且默认情况下还为安全网络套接字协议 wss *添加支持。

  • bpo-34922:修复了hashlib模块中的 SHAKE 算法的digest()hexdigest()方法中的整数溢出。

  • bpo-34925:bisect 模块中的函数的参数解析速度提高了 25%。

  • bpo-34900:固定unittest.TestCase.debug()用于调用带有子测试的测试方法。 Bruno Oliveira 修补程序。

  • bpo-34844:logging.Formatter 增强-确保 logging.Formatter 中的样式和 fmt 匹配-在每个格式样式类中添加了 validate 方法:StrFormatStyle,PercentStyle,StringTemplateStyle。 -在 logging.Formatter 类的构造函数中调用此方法-在每个样式类的 format 方法中也重新引发 KeyError,因此可以很清楚地看出这是无效格式字段的错误。

  • bpo-34897:调整 test.support.missing_compiler_executable 检查,以使名义命令名称“”被忽略。 Michael Felt 修补程序。

  • bpo-34871:解析__text_signature__的 callable 时,检查模块被污染sys.modules

  • bpo-34898:将mtime参数添加到gzip.compress以获得可重复的输出。郭慈 Te 的补丁。

  • bpo-28441:在 Cygwin 和 MinGW 上,确保sys.executable始终在路径中包括完整文件名,包括.exe后缀(除非它是符号链接)。

  • bpo-34866:pass限制FieldStorage创建的MiniFieldStorage对象的数量,向cgi.FieldStorage添加max_num_fields以使 DOS 攻击更加困难。

  • bpo-34711:即使基础 os(例如 AIX)接受此 Classpath 作为有效的文件引用,http.server 也确保在本地路径以“ /”结尾而不是目录时报告 HTTPStatus.NOT_FOUND。 Michael Felt 修补程序。

  • bpo-34872:修复 asyncio.Task 的 C 实现中的自取消

  • bpo-34849:不要记录异步循环迭代中 awaitselector.select的时间。await 对于任何 asyncio 程序来说都是很正常的,记录其时间只会给日志增加噪音,而没有提供任何有用的信息。

  • bpo-34022 SOURCE_DATE_EPOCH环境变量不再覆盖py_compile.compile()的* invalidation_mode *参数的值,而是确定其默认值。

  • bpo-34819:使用单调时钟来计算Executor.map()as_completed()中的超时,以防止在调整系统时钟时超时偏离。

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

  • bpo-34789xml.sax.make_parser()现在接受任何可迭代的参数作为其* parser_list *参数。 AndrésDelfino 修补程序。

  • bpo-34334:在QueueHandler中,从LogRecord中清除exc_text,以防止回溯被写入两次。

  • bpo-34687:在 Windows 上,默认情况下,asyncio 现在使用 ProactorEventLoop 而不是 SelectorEventLoop。

  • bpo-5950:支持读取zipimport中带有存档 Comments 的 zip 文件。

  • bpo-32892:解析器现在将所有常量表示为ast.Constant,而不是使用特定的常量 AST 类型(NumStrBytesNameConstantEllipsis)。这些类被认为已弃用,并将在以后的 Python 版本中删除。

  • bpo-34728:在方法asyncio.sleepasyncio.waitasyncio.wait_for中使用loop时,添加弃用警告。

  • bpo-34738:由distutils创建的 ZIP 文件现在将包含目录条目。

  • bpo-34659:向 itertools.accumulate()添加一个可选的* initial *参数。

  • bpo-29577:创建枚举时支持多个 mixin 类。

  • bpo-34670:添加 SSLContext.post_handshake_auth 和 SSLSocket.verify_client_post_handshake 用于 TLS 1.3 的后握手身份验证Function。

  • bpo-32718:venv 的 Activate.ps1 脚本可与 PowerShell Core 6.1 一起使用,现在可在所有 os 下使用。

  • bpo-31177:修复了阻止在具有已删除属性的模拟实例上使用reset_mock的错误

  • bpo-34672:添加解决方法,以便在某些情况下 musl C 库中的'Z' time.strftime()说明符可以工作。

  • bpo-34666:实施asyncio.StreamWriter.awriteasyncio.StreamWriter.aclose()协程。需要用于提供一致的流 API 的方法,默认情况下控制流已打开。

  • bpo-6721:在 fork()时获取日志记录模块常用的内部锁,以避免子进程死锁。

  • bpo-34658:修复了罕见的解释器未处理异常状态 SystemError,仅在将 after_parent 处理函数注册到 os.register_at_fork 且 fork 系统调用失败时,将子进程与 preexec_fn 一起使用时才看到。

  • bpo-34652:确保os.lchmod()从未在 Linux 上定义。

  • bpo-34638:将弱引用存储到流读取器,以 break 读取器和协议之间的强引用循环。如果没有close()调用就删除了流(收集了垃圾),它允许检测并关闭套接字。

  • bpo-34536Enum._missing_:如果未返回任何值,则提高ValueError;如果返回非成员,则提高TypeError

  • bpo-34636:加快重新扫描字节对象内 s w 和 d 的许多不匹配字符的速度。 (微优化)

  • bpo-24412:添加addModuleCleanup()addClassCleanup()进行单元测试,以支持setUpModule()setUpClass()的清理。丽莎·罗奇(Lisa Roach)的补丁。

  • bpo-34630:不要在异步代码中记录 SSL 证书错误(连接错误记录已被跳过)。

  • bpo-32490:防止在subprocess个异常消息中重复文件名。 Zackery Spytz 修补程序。

  • bpo-34363:dataclasses.asdict()和.astuple()现在可以正确处理 namedtuple。

  • bpo-34625:将供应商化的外国人库版本更新为 2.2.6.

  • bpo-32270:子进程模块不再错误地关闭重定向的 fds,即使它们位于默认\ {0, 1, 2}设置之外的 pass_fds 中。

  • bpo-34622:创建专用的asyncio.CancelledErrorasyncio.InvalidStateErrorasyncio.TimeoutError异常类。从concurrent.futures包的相应异常继承它们。将asyncio异常提取到单独的文件中。

  • bpo-34610:固定迭代器multiprocessing.managers.DictProxy

  • bpo-34421:修复了 distutils 记录的非 ASCII 字符串。这导致 Windows 上的安装问题。

  • bpo-34604:由于字符不可见或尾随空格,使用字符串表示法修复了pwd.getpwnamgrp.getgrnam错误消息中的可能的 mojibake。 William Grzybowski 修补程序。

  • bpo-30977:使 uuid.UUID 使用__slots__来减少其内存占用量。基于 Wouter Bolsterlee 的原始补丁。

  • bpo-34574:在腌制过程中,OrderedDict 迭代器不再耗尽。 Sergey Fedoseev 的补丁。

  • bpo-8110:重构subprocess以检查 Windows 特定模块,而不是sys.platform == 'win32'

  • bpo-34530:现在,如果未设置PATH环境变量,则distutils.spawn.find_executable()回退到os.defpath

  • bpo-34563:在 Windows 上,修复 multiprocessing.Connection 以进行非常大的读取:修复_winapi.PeekNamedPipe()和_winapi.ReadFile()来读取大于 INT_MAX(通常为 2 ^ 31-1)的内容。

  • bpo-34558:更正 Lib/ctypes/_aix.py 中的错字

  • bpo-34282:将Enum._convert移至EnumMeta._convert_并修复枚举成员被父属性遮盖的问题。

  • bpo-22872:关闭队列后,ValueError现在分别由multiprocessing.Queue.put()multiprocessing.Queue.get()而不是AssertionErrorOSError引发。 Zackery Spytz 修补程序。

  • bpo-34515:修复了解析lib2to3.pgen2.tokenize中的非 ASCII 标识符(PEP 3131)。

  • bpo-13312:在传递非常低的负年份值时,避免时间模块的年份处理代码中可能出现整数下溢(未定义行为)。

  • bpo-34472:改进了对zipfile中的流文件的兼容性。以前,没有编写可选签名,并且不支持某些 ZIP 应用程序。 Silas Sewell 的补丁。

  • bpo-34454:修复了具有非 UTF-8 可编码代码点的 unicode 时,日期时间类型的.fromisoformat()方法崩溃的问题。具体来说,datetime.fromisoformat()现在接受用作分隔符的替代 unicode 代码点。由 Pauley Ganssle 修补的 Alexey Izbyshev 的报告和测试。

  • bpo-6700:修复了 inspect.getsourcelines 以获得模块级框架/回溯。 Vladimir Matveev 修补程序。

  • bpo-34171:运行trace模块不再创建trace.cover文件。

  • bpo-34441:修复了将ABC派生的类具有__subclasses__无效的类作为第二个参数传递给issubclass()的崩溃。阿列克谢·伊兹比雪夫(Alexey Izbyshev)的补丁。

  • bpo-34427:修复MutableSequence子类在a.extend(a)中的无限循环。

  • bpo-34412:使signal.strsignal()在 HP-UX 上工作。迈克尔·奥西波夫(Michael Osipov)的补丁。

  • bpo-20849:shutil.copytree 现在接受一个新的dirs_exist_ok关键字参数。 Josh Bronson 修补程序。

  • bpo-31715:将.mjs文件 extensions 与application/javascript MIME 类型相关联。

  • bpo-34384os.readlink()现在在 Windows 上接受path-likebytes对象。

  • bpo-22602:UTF-7 解码器现在针对以“”开头的格式不正确的序列引发UnicodeDecodeError(如 RFC 2152 中所指定)。 Zackery Spytz 修补程序。

  • bpo-2122mmap.flush()方法现在成功返回None,在所有平台上都会引发错误异常。

  • bpo-34341:追加到具有 ZIP64extensions 的 ZIP 存档中不再增加现有条目的额外字段的大小。

  • bpo-34333:格式化错误消息时,请修复pathlib.PurePath.with_suffix()中的%格式。

  • bpo-18540:使用* host *参数的默认值('')时,imaplib.IMAP4imaplib.IMAP4_SSL类现在可以正确解析为 localhostIP。

  • bpo-26502:实现traceback.FrameSummary.__len__()方法以保持与旧 TuplesAPI 的兼容性。

  • bpo-34318assertRaises()assertRaisesRegex()assertWarns()assertWarnsRegex()如果传递的可调用项为 None,则不再成功。他们不再在上下文 Management 器模式下忽略未知的关键字参数。从 Python 3.5 开始,在这些情况下提出了 DeprecationWarning。

  • bpo-9372:弃用xml.dom.pulldom.DOMEventStreamwsgiref.util.FileWrapperfileinput.FileInputgetitem()个方法。

  • bpo-33613:在跟踪器接收到 SIGINT 之前,可以在multiprocessing.semaphore_tracker中解决竞争条件,然后才能注册 signal 处理程序以忽略它。

  • bpo-34248:报告文件名,但由于 os 相关的错误而导致dbm.gnu.open()dbm.ndbm.open()无法打开数据库文件时引发异常。 Zsolt Cserna 修补程序。

  • bpo-33089:添加 math.dist()来计算两点之间的欧几里得距离。

  • bpo-34246smtplib.SMTP.send_message()不再修改* mail_options *参数的内容。 Pablo S. Blum de Aguiar 的补丁。

  • bpo-31047:修复ntpath.abspath以获得 Windows 上的无效路径。 Franz Woellert 的补丁。

  • bpo-32321:为 functools.reduce 添加纯 Python 后备。 Robert Wright 修补程序。

  • bpo-34270:默认情况下,默认的 asyncio 任务类现在始终具有可以使用两个新方法(get_name()set_name())获取或设置的名称,并且在repr()输出中可见。也可以使用asyncio.create_task()的新name关键字参数或事件循环的create_task()方法来设置初始名称。如果未设置初始名称,则默认的 Task 实现将使用单调计数器生成类似Task-1的名称。

  • bpo-34263:asyncio 的事件循环不会将超时时间超过一天来传递给 epoll/select 等。

  • bpo-34035:修复了 zipfile seek()方法中的几个 AttributeError。 MickaëlSchoentgen 的补丁。

  • bpo-32215:当 DML 语句出现在与 SQL 查询其余部分不同的行中时,修复了sqlite3中的性能下降。

  • bpo-34075:将传递的非 ThreadPoolExecutor 实例弃用到AbstractEventLoop.set_default_executor()

  • bpo-34251:还原msilib.Win64以保留向后兼容性,因为distutils'bdist_msi命令已使用它。

  • bpo-19891:在交互式会话退出期间写入历史记录时,忽略由于缺少/不可写 homedir 导致的错误。 Anthony Sottile 修补程序。

  • bpo-33089:增强了 math.hypot()以支持两个以上的维度。

  • bpo-34228:tracemalloc:现在允许 PYTHONTRACEMALLOC = 0 环境变量和-X tracemalloc = 0 命令行选项在启动时显式禁用 tracemalloc。

  • bpo-13041:使用shutil.get_terminal_size()argparse.HelpFormatter类中正确计算端子宽度。 ZbyszekJędrzejewski-Szmek 的最初补丁。

  • bpo-34213:允许冻结的数据类具有一个名为“ object”的字段。以前,这与内部使用“对象”相冲突。

  • bpo-34052sqlite3.Connection.create_aggregate()sqlite3.Connection.create_function()sqlite3.Connection.set_authorizer()sqlite3.Connection.set_progress_handler()方法在将不可哈希对象作为可调用对象传递时引发 TypeError。这些方法现在不会将此类对象传递给 SQLite API。先前的行为可能导致段错误。 Sergey Fedoseev 的补丁。

  • bpo-34197csv阅读器的* dialect 属性的 skipinitialspace doublequote strict *现在是bool实例,而不是整数 0 或 1.

  • bpo-32788sqlite3模块中的方法__adapt__()__conform__()中引发的TypeError以外的错误现在传播给用户。

  • bpo-21446reload修复程序现在使用importlib.reload()而不是已弃用的imp.reload()

  • bpo-940286:pydoc 的Helper.showtopic()方法现在可以正确打印主题的交叉引用。

  • bpo-34164base64.b32decode()可能会因填充错误而引发 UnboundLocalError 或 OverflowError。现在,在这些情况下,它总是加base64.Error

  • bpo-33729:解决了在hashlib中解析参数的问题。

  • bpo-34097:ZipFile 可以使用新的strict_timestamps参数压缩早于 1980-01-01 且晚于 2107-12-31 的文件,其代价是将时间戳设置为限制。

  • bpo-34108:在 2to3 重构中删除无关的 CR。

  • bpo-34070:使用buffering=-1打开文件时,请确保仅检查句柄是否为 tty。

  • bpo-27494:已还原bpo-27494。 2to3 现在拒绝生成器表达式中的尾随逗号。

  • bpo-33967:现在,当不传递任何位置参数时,functools.singledispatch 会引发 TypeError 而不是 IndexError。

  • bpo-34041:将参数确定性添加到sqlite3.Connection.create_function()方法。 Sergey Fedoseev 的补丁。

  • bpo-34056:确保imp.load_module创建的加载程序填充程序始终返回其get_data()函数的字节。此修复了将imp.load_module PEP 552基于哈希的 pycs 一起使用。

  • bpo-34054:multiprocessing 模块现在使用单调时钟time.monotonic()而不是系统时钟time.time()来实现超时。

  • bpo-34043:使用 gzip 时,优化 tarfile 的解压缩性能约为 15%。

  • bpo-34044subprocess.Popen现在复制* startupinfo *参数以使其保持不变:它将修改副本,以便同一STARTUPINFO对象可以多次使用。

  • bpo-34010:修复了使用 tarfile 读取流的性能下降。缓冲的读取应使用列表,而不是附加到 bytes 对象。

  • bpo-34019:Webbrowser:使用webbrowser模块打开新 URL 时,更正传递给 Opera Browser 的参数。 Bumsik Kim 的补丁。

  • bpo-34003:csv.DictReader 现在创建字典而不是 OrderedDicts。 Michael Selik 修补程序。

  • bpo-33978:在pass fileConfig 和 dictConfig 重新配置之前,关闭了现有的日志处理程序。 Karthikeyan Singaravelan 修补程序。

  • bpo-14117:对 turtledemo 进行细微调整。 “维基百科”示例现在是“玫瑰花”,描述了它绘制的内容。 'penrose'打印输出减少。消除了“树”的“ 1024”输出。

  • bpo-33974:修复了包含特殊字符"\{}\n的字符串的传递列表和 Tuples,作为ttk小部件的选项。

  • bpo-27500:修复 getaddrinfo 以正确解析 IPv6 地址。

  • bpo-24567:改进 random.choices()以处理可能偶尔触发 IndexError 的次标准 Importing 权重。

  • bpo-33871:修复了os.readv()os.writev()os.preadv()os.pwritev()以及os.sendfile()中带有* headers trailers *参数的整数溢出(在基于 BSD 的 OS 和 macOS 上)。

  • bpo-25007:为 zlib 压缩器和解压缩器添加copy.copy()copy.deepcopy()支持。 Zackery Spytz 修补程序。

  • bpo-33929:multiprocessing:修复 multiprocessing.popen_spawn_win32 的 Popen 中的竞争条件。现在,子进程将复制管道的读取端,而不是“窃取”它。以前,管道的读取端是由子进程“窃取”的,但是如果子进程在可以从父进程窃取句柄之前被终止,则会泄漏句柄。

  • bpo-33899:当提供不带尾随新行的 Importing 时,令牌化模块现在隐式发出 NEWLINE。现在,此行为与 C 标记程序内部执行的操作匹配。由 Ammar Askar 贡献。

  • bpo-33897:向 logging.basicConfig()添加了一个'force'关键字参数。

  • bpo-33695shutil.copytree()使用os.scandir()函数,并且取决于它的所有复制Function都使用缓存的os.stat()值。在 Linux 上,复制包含 8000 个文件的目录的速度约为 9%,在 Windows 上约为 20%,在 Windows SMB 共享上约为 30%。 os.stat()系统调用的数量也减少了 38%,从而使shutil.copytree()在网络文件系统上特别快。 (由 Giampaolo Rodola 在bpo-33695中贡献。)

  • bpo-33916:bz2 和 lzma:两次调用 Decompressor .__ init __()时,释放旧锁以不泄漏内存。

  • bpo-32568:使 select.epoll()及其文档与* sizehint flags *保持一致。

  • bpo-33833:修复了 asyncio 中的错误,如果在写入过程中强制关闭,则 ProactorSocketTransport 会记录 AssertionError。

  • bpo-33663:在放入 Headers 之前,将内容长度转换为字符串。

  • bpo-33721os.path个返回布尔结果的函数,例如exists()lexists()isdir()isfile()islink()ismount(),以及pathlib.Path方法返回布尔结果的象exists()is_dir()is_file()is_mount()is_symlink()is_block_device()is_socket()is_char_device()对于包含在 os 级别无法表示的字符或字节的路径,返回False而不是提高ValueError或其子类UnicodeEncodeErrorUnicodeDecodeError

  • bpo-26544:固定实现platform.libc_ver()。它几乎总是为 glibc 返回版本“ 2.9”。

  • bpo-33843:删除不推荐使用的cgi.escapecgi.parse_qscgi.parse_qsl

  • bpo-33842:删除自 Python 3.3 后不推荐使用的tarfile.filemode

  • bpo-30167:如果设置了 PYTHONSTARTUP,则防止 site.main()异常。史蒂夫·韦伯(Steve Weber)的补丁。

  • bpo-33805:改进未指定 InitVar 时 dataclasses.replace()的错误消息

  • bpo-33687:如果给出或解码了模式,则将对uu.decode()的呼叫固定为os.chmod()。 Timo Furrer 修补程序。

  • bpo-33812:日期时间实例 d 具有非 None tzinfo,但 d.tzinfo.utcoffset(d)返回 None 的 astimezone()方法现在将其视为天真。

  • bpo-32108:在 configparser 中,将其分配给自己时不要清除该部分。

  • bpo-27397:使电子邮件模块正确处理无效长度的 base64 字符串。

  • bpo-33578:实现多字节编码器/解码器状态方法

  • bpo-30805:pass调试日志记录避免竞争情况

  • bpo-33476:当地址组缺少最后的';'时,修复_header_value_parser.py。由 Enrique Perez-Terron 贡献

  • bpo-33694:异步:修复了在使用 ProactorEventLoop 时导致在 pause_reading()/ resume_reading()上丢失数据的竞争状况。

  • bpo-32493:正确测试configure.ac中的uuid_enc_be可用性。 Michael Felt 修补程序。

  • bpo-33792:添加 asyncio.WindowsSelectorEventLoopPolicy 和 asyncio.WindowsProactorEventLoopPolicy。

  • bpo-33274:W3C DOM 级别 1 将 Element.removeAttributeNode()的返回值指定为“已删除的 Attr 节点”。 xml.dom.minidom 现在符合此要求。

  • bpo-33778:将unicodedata的数据库更新为 Unicode 版本 11.0.0.

  • bpo-33165:在日志记录调用中添加了堆栈级别参数,以允许使用包装器/帮助器函数来记录 API。

  • bpo-33770:针对无效长度的编码 Importing,改进了 base64 异常消息

  • bpo-33769:asyncio/start_tls:修复错误消息;发生未处理的错误时取消回调;如果 SSLTransport 被中止,则将其标记为已关闭。

  • bpo-33767:现在,对mmap.mmap个对象执行串联(+)和重复(*)序列操作会引发TypeError而不是SystemError。 Zackery Spytz 修补程序。

  • bpo-33734:asyncio/ssl:修复 AttributeError,增加默认的握手超时

  • bpo-31014:修复了当用户在 BROWSER 环境变量中指定条目路径时为webbrowser创建控制器的问题。基于 John Still 的补丁。

  • bpo-2504:添加 gettext.pgettext()和变体。

  • bpo-33197:为_ParameterKind 添加描述属性

  • bpo-32751:由于超时取消任务时,asyncio.wait_for()现在将 await 直到取消完成。

  • bpo-32684:修复聚集以传播自身的取消,即使使用 return_exceptions 也是如此。

  • bpo-33654:支持 SSLTransport.set_protocol()中的协议类型切换。

  • bpo-33674:尽早暂停传输,以进一步降低在 connection_made()之前调用 data_received()的风险。

  • bpo-33671shutil.copyfile()shutil.copy()shutil.copy2()shutil.copytree()shutil.move()在 Linux 和 macOS 上使用特定于平台的快速复制 syscall,以便更有效地复制文件。在 Windows 上,shutil.copyfile()使用更大的默认缓冲区大小(1 MiB 而不是 16 KiB),并使用基于memoryview()shutil.copyfileobj()变体。在 Linux 上,复制 512MiB 文件的速度约为 26%,在 macOS 上约为 50%,在 Windows 上约为 40%。而且,消耗的 CPU 周期要少得多。 (由 Giampaolo Rodola 在bpo-25427中贡献。)

  • bpo-33674:修复 asyncio.sslproto 的 SSLProtocol.connection_made()中的竞争条件:立即开始握手,而不要使用 call_soon()。以前,可以在握手开始之前调用 data_received(),从而导致握手挂起或失败。

  • bpo-31647:修复了已关闭_SelectorSocketTransport 后调用 write_eof()引发 AttributeError 的错误。

  • bpo-32610:使 asyncio.all_tasks()仅返回待处理的任务。

  • bpo-32410:避免在 sendfile 后备代码中阻止文件 IO

  • bpo-33469:在关闭使用 run_in_executor 的循环后修复 RuntimeError

  • bpo-33672:使用 Cython 的虚假协程修复 Task .__ repr_崩溃

  • bpo-33654:修复 transport.set_protocol()以支持在 asyncio.Protocol 和 asyncio.BufferedProtocol 之间切换。修复 loop.start_tls()以使用 asyncio.BufferedProtocols。

  • bpo-33652:类型变量和带下标的泛型的腌菜现在已经过时,并且可以与旧版本的 Python 兼容。

  • bpo-32493:在 FreeBSD 上固定为uuid.uuid1()

  • bpo-33238:将InvalidStateError添加到concurrent.futures。如果期货未挂单或未在运行,则Future.set_resultFuture.set_exception现在加价InvalidStateError。 Jason Haydaman 的补丁。

  • bpo-33618:使用 OpenSSL 1.1.1 finally确定并记录对 TLS 1.3 的初步和实验性支持

  • bpo-33625:如果这些Function的可重入变体可用,则在grp.getgrnamgrp.getgrgidpwd.getpwnampwd.getpwuid上释放 GIL。 William Grzybowski 修补程序。

  • bpo-33623:在__del_中创建 asyncio.Future 时,修复可能的 SIGSGV

  • bpo-11874:将用法分成可包装的部分时,请使用更好的正则表达式。避免来自自定义 metavar 字符串的虚假 assert 错误。

  • bpo-30877:修复了 JSON 解码器的 Python 实现中的一个错误,该错误阻止在完成解码后清除已解析字符串的缓存。基于 c-fos 的补丁。

  • bpo-33604:删除默认为 3.8 中标记为要删除的 md5 的 HMAC(最初计划在 3.6 中删除,在 gh-7062 中达到 3.8)。

  • bpo-33582:对 inspect.formatargspec 发出弃用警告

  • bpo-21145:添加functools.cached_property装饰器,用于在实例生命期内缓存的计算属性。

  • bpo-33570:更改 TLS 1.3 密码套件设置,以与 OpenSSL 1.1.1-pre6 和更高版本兼容。默认情况下,OpenSSL 1.1.1 将启用 TLS 1.3 密码。

  • bpo-28556:不要将参数简化为typing.Union。现在,Union[Manager, Employee]在运行时并未简化为Employee。以前,这种简化导致了一些错误,并且引起了自省的可能性。

  • bpo-12486tokenize.generate_tokens()现在已记录为公开 API,用于标记 unicode 字符串。它以前存在但未记录。

  • bpo-33540:向socketserverForkingMixInThreadingMixIn类添加新的block_on_close类属性。

  • bpo-33548:tempfile._candidate_tempdir_list 应该考虑常见的 TEMP 位置

  • bpo-33109:默认情况下再次不需要 argparse 子解析器,还原了 3.7.0a2 中bpo-26510引入的行为更改。

  • bpo-33541:删除未使用的私有方法_strptime.LocaleTime.__pad(也称为_LocaleTime__pad)。

  • bpo-33536:dataclasses.make_dataclass 现在检查无效的字段名称和重复的字段。另外,添加了对无效字段规范的检查。

  • bpo-33542:阻止uuid.get_node在 Windows 上使用 DUID 而不是 MAC。 Zvi Effron 的补丁

  • bpo-26819:在 Windows proactor 事件循环中使用ReadTransport.resume_reading修复了竞争条件。

  • 当提供 ClassVar 作为字符串正向引用时,修复了typing.get_type_hints()中的失败。

  • bpo-33516unittest.mock.MagicMock现在支持__round__魔术方法。

  • bpo-28612:将对站点 Map 的支持添加为RobotFileParser.site_maps()到 urllib 的RobotFileParser。 Lady Red 的补丁程序,基于 Peter Wirtz 的补丁程序。

  • bpo-28167:删除从 3.5 开始不推荐使用的 platform.linux_distribution。

  • bpo-33504:将configparser的默认字典实现从collections.OrderedDict切换到标准dict类型。

  • bpo-33505:pass重新排序是否检查来优化 asyncio.ensure_future():快 1.17 倍。

  • bpo-33497:将错误参数添加到 cgi.parse_multipart,并在 FieldStorage 中使用给定的错误(Twisted 所需)进行编码。琥珀色补丁。

  • bpo-29235:现在可以将cProfile.Profile类用作上下文 Management 器。 Scott Sanderson 修补程序。

  • bpo-33495:更改 dataclasses.Fields repr 以使用其每个成员的 repr,而不是 str。这使每个字段实际代表的内容更加清楚。对于“类型”成员尤其如此。

  • bpo-26103:更正inspect.isdatadescriptor以查找__set____delete__。亚伦·霍尔(Aaron Hall)修补。

  • bpo-29209:删除了doctype()方法和XMLParser的构造函数的* html *参数。子类中定义的doctype()方法将不再被调用。 ElementTree模块中已弃用的方法getchildren()getiterator()现在发出DeprecationWarning而不是PendingDeprecationWarning

  • bpo-33453:如果使用 Literals 字符串类型 Comments 或使用 PEP 563“Comments 的延迟评估”,则修复数据类以使其工作。对于 ClassVar(“ ClassVar”和“ typing.ClassVar”)和 InitVar(“ InitVar”和“ dataclasses.InitVar”),仅检测到特定的字符串前缀。

  • bpo-28556:键入模块中的次要问题:向NamedTuple.__new__添加 Comments,在Generic.__new__中传递*args**kwds。 PauliusŠarka 和 Chad Dombrova 的原始 PR。

  • bpo-33365:如果在http.client中将* debuglevel *设置为> 0,则在标题键旁边打印标题值,而不是标题键。 Marco Strigl 修补程序。

  • bpo-20087:使用 glibc 2.27 支持的语言环境更新了别名 Map。

  • bpo-33422:修复了在 pydoc 上查找字节/字符串 Literals 时尾随引号引起来的问题。 AndrésDelfino 修补程序。

  • bpo-28167:函数platform.linux_distributionplatform.dist现在触发DeprecationWarning,并已在 Python 3.8 中标记为要删除

  • bpo-33281:在 macOS 上修复 ctypes.util.find_library 回归。

  • bpo-33311:如果当前调用直接在模块中完成,则 cgitb 生成的文本和 html 输出不会显示括号。 StéphaneBlondon 的补丁。

  • bpo-27300:* tempfile 中的文件类现在接受一个 errors 参数,该参数补充了已经存在的 encoding *。 Stephan Hohe 修补程序。

  • bpo-32933unittest.mock.mock_open()现在支持文件内容的迭代。 Tony Flury 的补丁。

  • bpo-33217:在 Enum 类和 Enum 成员中查找非 Enum 对象时,引发TypeError

  • bpo-33197:在构造无效的检查时更新错误消息。参数 Dong-hee Na 修补。

  • bpo-33383:修复了使用单个参数调用dbm.ndbm数据库对象的 get()方法时发生的崩溃。

  • bpo-33375:警告模块现在从代码对象而不是框架的全局名称空间中找到与警告关联的 Python 文件。这与回溯和 pdb 查找文件名的方式一致,并且对于动态执行的代码应该更好地工作。

  • bpo-33336imaplib现在允许IMAP4.uid()中的MOVE命令(RFC 6851:IMAP MOVEextensions),并有可能作为IMAP4对象支持的方法的名称。

  • bpo-32455:向dis.stack_effect()添加了* jump *参数。

  • bpo-27485:重命名并弃用urllib.parse()中未记录的Function。

  • bpo-33332:添加signal.valid_signals()以公开 POSIX sigfillset()Function。

  • bpo-33251ConfigParser.items()是固定的,因此passvars传递的键值对不包含在结果输出中。

  • bpo-33329:在较新的 glibcs 上修复 multiprocessing 回归

  • bpo-33334dis.stack_effect()现在支持所有已定义的操作码,包括 NOP 和 EXTENDED_ARG。

  • bpo-991266:固定引用http.cookies.SimpleCookieComment属性。

  • bpo-33131:将 Binding 点的 Binding 版本升级到 10.0.1.

  • bpo-33308:修复了将 ST 对象转换为具有line_info=Falsecol_info=True的 Tuples 树或列表树时在parser模块中发生的崩溃。

  • bpo-23403:lib2to3 现在将 pickle 协议 4 用于预先计算的语法。

  • bpo-33266:lib2to3 现在可以识别rf'...'个字符串。

  • bpo-11594:确保在使用 lib2to3 时遵守行尾。

  • bpo-33254:让importlib.resources.contents()importlib.abc.ResourceReader.contents()返回iterable而不是iterator

  • bpo-33265contextlib.ExitStackcontextlib.AsyncExitStack现在使用方法而不是包装函数来进行 Export 回调。

  • bpo-33263:修复 Vlad Starostin 在_SelectorSocketTransport补丁中的 FD 泄漏。

  • bpo-33256:修复了cgitb.html()产生的 html 中<module>调用的显示。 StéphaneBlondon 的补丁。

  • bpo-33144random.Random()及其子类化机制经过优化,可以仅在类/子类实例化时间检查一次getrandbits()方法是否可以被其他方法(包括randrange())依赖,以生成任意大的随机整数。 Wolfgang Maier 修补程序。

  • bpo-33185:使用-m开关运行 pydoc 时,修复了回归问题。 (passbpo-33053的分辨率在 3.7.0b3 中引入了回归)

此修复程序还更改了 pydoc,以在必要时将os.getcwd()添加到sys.path,而不是添加"."

  • bpo-29613:在http.cookies模块中添加了对SameSite cookie 标志的支持。

  • bpo-33169:调用importlib.machinery.invalidate_caches()时,删除sys.path_importer_cache中的None条目。

  • bpo-33203random.Random.choice()现在即使在没有getrandbits()实现的子类中调用时,也会连续为空序列提高IndexError

  • bpo-33224:更新 PEP 479的 difflib.mdiff()。将生成器中未捕获的 StopIteration 转换为返回语句。

  • bpo-33209:在pickle.Pickler.dump()的 C 实现结束时结束帧。

  • bpo-32861:urllib.robotparser 的__str__表示现在包括通配符条目以及“爬网延迟”和“请求速率”字段。还删除附加到字符串末尾的多余换行符。 Michael Lazar 修补程序。

  • bpo-23403pickle中的DEFAULT_PROTOCOL升至 4.协议 4 在 PEP 3154中描述,自 Python 3.4 起可用。与 Python 3.0 中引入的协议 3 相比,它提供了更好的性能和更小的尺寸。

  • bpo-20104:改进了错误处理,并修复了os.posix_spawn()中的参考泄漏。

  • bpo-33106:从只读 dbm 数据库中删除密钥会引发模块特定的错误,而不是 KeyError。

  • bpo-33175:在数据类中,Field .__ set_name_现在在类(而不是实例)上查找默认值的__set_name_特殊方法。

  • bpo-32380:创建 functools.singledispatch 方法以支持对 Descriptors 和方法的通用单调度。

  • bpo-33141:如果 Field 对象具有自己的__set_name__,则让它们pass__set_name_传递为其默认值。

  • bpo-33096:允许 ttk.Treeview.insert 插入具有错误布尔值的 iid。注意,iid = 0 和 iid = False 相同。 Garvit Khatri 修补程序。

  • bpo-32873:将类型变量和特殊的键入形式视为复制和腌制不可变。这解决了一些小问题和不一致之处,并改善了与 Python 3.6 的向后兼容性。

  • bpo-33134:在计算数据类的__hash_时,请使用查找表包含返回__hash_值的函数。这是对查找字符串,然后测试该字符串以查看要做什么的一种改进。

  • bpo-33127:ssl 模块现在可以使用 LibreSSL 2.7.1 进行编译。

  • bpo-32505:如果数据类的成员变量的类型为 Field,但没有类型 Comments,则引发 TypeError。

  • bpo-33078:修复了由于依赖 sem_getvalue 的测试导致的 OSX 失败

  • bpo-33116:将“字段”添加到数据类。all

  • bpo-32896:解决了一个错误,在该错误中,使用 default_factory 的字段对数据类进行子类化将生成错误的类。

  • bpo-33100:数据类:如果某个字段的默认值是 MemberDescriptorType,则它来自该字段位于__slots_中,而不是实际的默认值。

  • bpo-32953:如果非数据类从冻结的数据类继承,则允许将属性添加到派生类。无法仅将冻结数据类中的属性分配给该属性。要求层次结构中的所有数据类要么全部冻结,要么全部冻结。

  • bpo-33097:在解释器关闭期间调用executor.submit时引发 RuntimeError。

  • bpo-32968:涉及分数和浮点数的模数和楼层划分应返回浮点数。

  • bpo-33061:在 typing 时将缺少的NoReturn添加到__all__

  • bpo-33078:修复发生 Pickling 错误时在 multiprocessing.Queue 中处理尺寸。

  • bpo-33064:lib2to3 现在可以正确支持函数签名中*args**kwargs后的尾部逗号。

  • bpo-33056:FIX 正确地关闭了并发.futures.ProcessPoolExecutor 中泄漏的 fds。

  • bpo-33021:在 fstat()调用期间释放 GIL,避免在调用 mmap.mmap(),os.urandom()和 random.seed()时所有线程挂起。 Nir Soffer 的补丁。

  • bpo-31804:避免多重处理失败。如果标准流关闭或退出时为 None,则进行处理。

  • bpo-33034:使用urlparse()urlsplit()将端口属性强制转换为非整数值时,提供显式错误消息。 Matt Eaton 修补程序。

  • bpo-30249:改进 struct.unpack_from()异常消息,以解决缓冲区大小和偏移量的问题。

  • bpo-33037:关闭 SSL 传输后,跳过发送/接收数据。

  • bpo-27683:修复ipaddress中的回归,当网络由包含整数掩码且仅剩 1 位地址的 Tuples 构造时,hosts()的结果为空。

  • bpo-22674:在 signal 模块中添加 strsignal()函数,该函数返回由 strsignal(3)返回的给定 signal 的系统描述。

  • bpo-32999subclass不是类型对象时,修复了ABC.__subclasscheck__(cls, subclass)的 C 实现失败。

  • bpo-33009:针对单个参数的部分方法修复了 inspect.signature()。

  • bpo-32969:在 zlib 中公开几个缺少的常量,并修复相应的文档。

  • bpo-32056:改进了针对读取模块aifcwavesunau中的音频文件时无效的通道数和 samples 宽度的异常。

  • bpo-32970:改进了 MAKE_FUNCTION 指令的反汇编。

  • bpo-32844:如果关闭了另一个低 Descriptors,则在子进程中将低 Descriptors(0 或 1)错误地重定向到 stderr。

  • bpo-32960:对于数据类,禁止从非冻结类继承冻结,也不允许从冻结类继承非冻结。此限制将在将来的日期放宽。

  • bpo-32713:修复了 tarfile.itn 对越界浮点值的处理。 Joffrey Fuhrer 修补程序。

  • bpo-32257:ssl 模块现在包含 OP_NO_RENEGOTIATION 常量,可用于 OpenSSL 1.1.0h 或 1.1.1.

  • bpo-32951:现在禁止直接实例化 SSLSocket 和 SSLObject 对象。从未对构造函数进行文档记录,测试或将其设计为公共构造函数。用户应该使用 ssl.wrap_socket()或 SSLContext。

  • bpo-32929:删除三态参数“哈希”,然后添加布尔值“ unsafe_hash”。如果 unsafe_hash 为 True,则添加__hash_函数,但如果存在__hash__,则引发 TypeError。如果 unsafe_hash 为 False,则基于 eq =和 Frozen =的值添加__hash__。 unsafe_hash = False 行为与旧的 hash = None 行为相同。默认为 unsafe_hash = False,就像 hash = None 一样。

  • bpo-32947:添加 OP_ENABLE_MIDDLEBOX_COMPAT 并测试 TLSv1.3 的变通办法,以便将来与 OpenSSL 1.1.1 兼容。

  • bpo-32146:记录多进程中冻结的可执行文件与 spawn 和 forkserver 启动方法之间的交互。

  • bpo-30622:ssl 模块现在可以检测到 LibreSSL 中缺少 NPN 支持。

  • bpo-32922:dbm.open()现在使用文件系统编码而不是缺省编码来编码文件名。

  • bpo-32759:释放 multiprocessing.heap 中未使用的竞技场。

  • bpo-32859:在os.dup2中,不要检查每个调用dup3 syscall 是否存在。

  • bpo-32556:nt._getfinalpathname,nt._getvolumepathname 和 nt._getdiskusage 现在可以正确地从字节转换。

  • bpo-21060:将 setup.py 上传的混乱消息从“在先前命令中没有创建 dist 文件”重写为更有用的“必须在一个命令中创建和上传文件”。

  • bpo-32857:在tkinter中,after_cancel(None)现在提高ValueError而不是取消第一个计划的Function。 Cheryl Sabella 修补程序。

  • bpo-32852:确保在运行跟踪时 sys.argv 保留为列表。

  • bpo-31333_abc模块已添加。它是一个加速模块,具有abc中的各种Function和方法的 C 实现。创建 ABC 子类并使用 ABC 子类调用isinstanceissubclass的速度提高了 1.5 倍。此外,这使 Python 的启动速度提高了 10%。

注意,新的实现隐藏了内部注册表和缓存,以前可以pass私有属性_abc_registry_abc_cache_abc_negative_cache访问。可以使用三种调试助手方法来代替_dump_registry_abc_registry_clear_abc_caches_clear

  • bpo-32841:修复了asyncio.Condition问题,该问题在通知和取消条件锁定后默默地忽略了取消。由 Bar Harel 修补。

  • bpo-32819:ssl.match_hostname()已简化,不再依赖 re 和 ipaddress 模块获取通配符和 IP 地址。无效通配符的错误报告已得到改进。

  • bpo-19675multiprocessing.Pool如果初始化失败,将不再泄漏进程。

  • bpo-32394:套接字:在运行时删除旧版本 Windows 上的 TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL 标志。

  • bpo-31787:修正了各种模块中__init__()方法的刷新。 (由 Oren Milman 提供)

  • bpo-30157:修复了仅引用最后一个字段时 csv.Sniffer.sniff()中的猜测引号和定界符。杰克·戴维斯(Jake Davis)的补丁。

  • bpo-30688:在正则表达式中增加了对\N{name}转义的支持。基于 Jonathan Eunice 的补丁。

  • bpo-32792:collections.ChainMap()保留基础 Map 的 Sequences。

  • bpo-32775fnmatch.translate()不再产生包含设置操作的模式。以'['开头或包含'–','&&','~~'或'||'的集合在以后的版本中,正则表达式中的解释将有所不同。目前,他们发出警告。 fnmatch.translate()现在避免意外生成包含此类集合的模式。

  • bpo-32622:为 Windows proactor 事件循环实现本机快速发送文件。

  • bpo-32777:在标记子进程中的 exec 上可继承的文件 Descriptors 时,修复了 POSIX 系统上子进程中罕见但潜在的 pre-exec 子进程死锁。此错误似乎已在 3.4 中引入。

  • bpo-32647:ctypes 模块过去依赖于 dlopen 的间接链接。现在,在带有 dl 的平台上,共享扩展已明确链接到 libdl。

  • bpo-32749:现在打开带有标志“ r”的dbm.dumb数据库为只读。如果标记dbm.dumb.open()不存在,则不再创建该数据库。

  • bpo-32741:实施asyncio.TimerHandle.when()方法。

  • bpo-32691:使用 pdb 运行模块时,请使用 mod_spec.parent

  • bpo-32734:修复了asyncio.Lock()安全问题,该问题允许多次获取和锁定同一把锁,而无需释放它。由 Bar Harel 修补。

  • bpo-32727:不要在地址中的 SMTP 信封中包含名称字段。 StéphaneWirtel 修补程序

  • bpo-31453:添加 TLSVersion 常量和 SSLContext.maximum_version/minimum_version 属性。新的 API 包装了 OpenSSL 1.1 https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.htmlFunction。

  • bpo-24334:清除了 ssl 模块的内部实现细节。 SSLSocket 的间接层少一层。现在,所有者和会话信息由 SSLSocket 和 SSLObject 构造函数处理。通道绑定的实现已得到简化。

  • bpo-31848:当找不到 SSND 块时,修复 Aifc_read.initfp()中的错误处理。 Zackery Spytz 修补程序。

  • bpo-32585:将 Ttk Spinbox 小部件添加到tkinter.ttk。 Alan D Moore 修补程序。

  • bpo-32512profile CLI 接受-m module_name作为脚本路径的替代方法。

  • bpo-8525:现在,类型上的 help()将显示内置子类。这主要是为了帮助通知更具体的异常子类。

Sanyam Khurana 修补程序。

  • bpo-31639:http.server 现在公开了 ThreadingHTTPServer 类,并在使用-m运行模块以应对 Web 浏览器预打开套接字时使用它。

  • bpo-29877:compileall:仅在需要时才导入 ProcessPoolExecutor,以防止在资源不足的平台上挂起

  • bpo-32221:返回包含 IPv6 地址的 Tuples 的各种函数现在Ellipsis了%scope部分,因为相同的信息已经在* scopeid *Tuples 项中进行了编码。特别是它在接收多播数据包时加快了socket.recvfrom()的速度,因为Ellipsis了对网络接口名称的无用解析。

  • bpo-32147binascii.unhexlify()现在快了 2 倍。 Sergey Fedoseev 的补丁。

  • bpo-30693:现在,TarFile 类以可重现的方式递归目录。

  • bpo-30693:ZipFile 类现在以可重复的方式递归目录。

  • bpo-31680:已添加curses.ncurses_version

  • bpo-31908:修复trace模块命令行工具的封面文件输出。仅当使用--missing选项时,以前发出的封面文件。 Michael Selik 修补程序。

  • bpo-31608:如果collections.deque子类从__new__返回非 deque,则引发TypeError而不是崩溃。 Oren Milman 修补程序。

  • bpo-31425:添加对 Linux 内核支持的 AF_QIPCRTR 地址族的套接字的支持。这用于与在 Qualcomm 设备上运行的服务(例如 GPS 或无线电)进行通信。 Bjorn Andersson 的补丁。

  • bpo-22005:已实现的由 Python 2 腌制的datetimedatetime的解开实例。encoding='latin1'应该用于成功解码。

  • 如果基础 SQLite 库的版本为 3.6.11 或更高版本,则bpo-27645sqlite3.Connection现在公开backup方法。 Lele Gaifax 修补程序。

  • bpo-16865:在ctypes中支持> = 2GiB 的数组。 Segev Finer 修补程序。

  • bpo-31508:不再支持tkinter.ttk.Treeview.selection中的参数。在 3.6 中已弃用。使用selection_set之类的专用方法来更改选择。

  • bpo-29456:修复 hangul 规范化中的错误:u1176,u11a7 和 u11c3

Documentation

  • bpo-21257:文档http.client.parse_headers()

  • bpo-34764:使用第二个哨兵参数改进 iter()的示例。

  • bpo-35564:在 conf.py 中明确设置 master_doc 变量以符合 Sphinx 2.0

  • bpo-35511:指定 profile.Profile 类不支持启用或禁用方法。此外,详细说明了 Profile 对象仅作为 cContext 模块支持的上下文 Management 器。

  • bpo-10536:增强 gettext 文档。 ÉricAraujo 的补丁

  • bpo-35089:删除提及typing.iotyping.re的内容。它们的类型应直接从typing导入。

  • bpo-35038:修复有关框架对象中不存在的f_restricted属性的文档。 StéphaneWirtel 修补程序

  • bpo-35042:将 PEP XYZ 替换为 pep 角色,并允许使用到 PEP 的直接链接。

  • bpo-35044:针对相应的异常,以角色exc修复文档。 StéphaneWirtel 修补程序

  • bpo-35035:将email.utils的文档重命名为email.utils.rst

  • bpo-34967:使用 app.add_object_type()代替不推荐使用的 Sphinx 函数 app.description_unit()

  • bpo-34913:添加有关 gzip 模块新命令行界面的文档。

  • bpo-32174:chm 文档在某些 MBCS Windows 系统上正确显示非 ASCII 字符。

  • bpo-11233:创建文档的可用性指令。 Georg Brandl 的原始补丁。

  • bpo-34790:记录将协程传递给 asyncio.wait()会造成什么混乱。

  • bpo-34552:请明确指出==运算符有时等效于is<<=>>=运算符仅在有意义的地方定义。

  • bpo-28617:修复了 stdtypes 文档中有关支持成员资格测试的类型的信息。

  • bpo-20177:将 datetime.date.fromtimestamp 迁移到 Argument Clinic。 Tim Hoffmann 的补丁。

  • bpo-34065:修正错误编写的 basicConfig 文档标记语法

  • bpo-33460:在教程第 3 章中用正确的错误代码替换了Ellipsis号。

  • bpo-33847:将“ @”运算符条目添加到索引。

  • bpo-33409:澄清了 PEP 538的 PYTHONCOERCECLOCALE 和 PEP 540 的 PYTHONUTF8 模式之间的关系。

  • bpo-33197:将版本添加的标记添加到 ParameterKind.description 的文档中

  • bpo-17045:改进 PyTypeObject 的 C-API 文档。这包括添加几个快速参考表和许多缺少的 slot/typedef 条目。现有条目也以稍微一致的格式进行了清理。

  • bpo-33736:改进asyncio.open_connection()asyncio.start_server()及其对应的 UNIX 套接字的文档。

  • bpo-23859:证明asyncio.wait()不会在超时时取消其期货。

  • bpo-32436:文档 PEP 567更改为 asyncio。

  • bpo-33604:将 HMAC md5 默认更新为 DeprecationWarning,将凸块移除为 3.8.

  • bpo-33594:文档getargspecfrom_functionfrom_builtin在其各自的文档字符串中已弃用,并且在 DeprecationWarning 消息中包括自弃用以来的版本。

  • bpo-33503:修复损坏的 pypi 链接

  • bpo-33421:为typing.AsyncContextManager添加缺少的文档。

  • bpo-33487:现在,当不使用 buffering = None 时,BZ2 文件将发出 DeprecationWarning 信息,该弃用消息和文档现在也明确语句自 3.0 版起已弃用。

  • bpo-33378:为https://docs.python.org/3/添加韩语切换器

  • bpo-33276:说明模块上的__path__属性不能只是任何值。

  • bpo-33201:更新用于编写 C 扩展类型的文档。

  • bpo-33195:弃用c-api/arg文档中的Py_UNICODE用法。自 Python 3.3 起,不推荐使用Py_UNICODE相关的 API,但在文档中将其遗漏。

  • bpo-33126:文档 PyBuffer_ToContiguous()。

  • bpo-27212:修改islice()配方的文档以使用直到起始索引为止的初始值。

  • bpo-28247:更新zipapp文档,以描述如何制作独立应用程序。

  • bpo-18802:ipaddress 的文档更改。 Jon Foster 和 Berker Peksag 的补丁。

  • bpo-27428:更新文档以阐明WindowsRegistryFinder实现了MetaPathFinder。 (Himanshu Lakhara 的补丁)

  • bpo-28124:不再强调和弃用 ssl 模块函数 ssl.wrap_socket(),以便使用更安全有效的 SSLContext.wrap_socket()方法。

  • bpo-17232:澄清-O 和-OO 的文档。特里·里迪(Terry Reedy)的补丁。

  • bpo-32436:添加有关 contextvars 模块的文档(PEP 567)。

  • bpo-32800:更新到 w3c doc 的 xml 默认名称空间的链接。

  • bpo-11015:更新test.support文档。

  • bpo-32613:更新 faq/windows.html 以使用 PEP 397 中的 py 命令而不是 python。

  • bpo-8722:当属性get()方法引发AttributeError时,文档getattr()的行为。

  • bpo-32614:修改文档中的 RE 示例以使用原始字符串来防止DeprecationWarning并将文本添加到 REGEX HOWTO 中以突出显示不赞成使用的内容。

  • bpo-20709:删除我们解释 os.utime()在 Windows 下不支持目录作为路径的段落。 Jan-Philip Gehrcke 修补程序

  • bpo-32722:删除“生成器表达式”教程中的错误示例。 StéphaneWirtel 修补程序

  • bpo-31972:改进pathlib.PurePath个子类的文档字符串。

  • bpo-30607:构建文档时,请使用外部化的python-docs-theme软件包。

  • bpo-8243:添加有关 curses.addch 和 curses.addstr 在窗口或垫外书写时的异常行为的 Comments。

  • bpo-32337:更新与dict订单有关的文档。

  • bpo-25041socket模块中的文档AF_PACKET

  • bpo-31432:澄清 ssl.SSLContext.verify_mode 的 CERT_NONE,CERT_OPTIONAL 和 CERT_REQUIRED 标志的含义。

Tests

  • bpo-35772:使用 tmpfs 文件系统修复 ppc64 上 test_tarfile 的稀疏文件测试。如果文件系统支持稀疏文件,请修复Function测试:创建一个包含数据和“空洞”的文件,而不是创建一个不包含数据的文件。 tmpfs 有效块大小是页面大小(tmpfs 位于页面缓存中)。 RHEL 在 aarch64,ppc64,ppc64le 上使用 64 个 KiB 页面,仅 s390x 和 x86_64 使用 4 个 KiB 页面,而测试打孔为 4 KiB。

  • bpo-35045:降低 ssl 测试的严格性,并接受 TLSv1 作为系统默认值。所做的更改将在 Fedora 29 上 breaktest_min_max_version。

  • bpo-32710test_asyncio/test_sendfile.py现在像其他测试一样使用tearDownModule()重置事件循环策略,以防止在 Windows 上运行测试时出现警告。

  • bpo-33717:test.pythoninfo 现在记录所有时钟的信息,不仅是 time.time()和 time.perf_counter()。

  • bpo-35488:向 pathlib 的 Path.match()添加一个测试,以验证它不支持 glob 样式的**递归模式匹配。

  • bpo-31731:修复 test_io 的check_interrupted_write()中的竞争条件:直接创建具有 SIGALRMsignal 被阻止的线程,而不是稍后再阻止该线程的 signal。以前,线程有可能在 signal 被阻止之前获取 signal。

  • bpo-35424:修复 test_multiprocessing_main_handling:将multiprocessing.Pool与上下文 Management 器一起使用,然后显式加入池。

  • bpo-35519:将test.bisect模块重命名为test.bisect_cmd以避免直接运行./python Lib/test/test_xmlrpc.py之类的测试时与bisect模块冲突。

  • bpo-35513:在测试中将time.time()替换为time.monotonic()以测量时间增量。

  • 如果测试结果包含跳过的测试,则bpo-34279test.support.run_unittest()不再提高TestDidNotRun。现在仅在未运行测试且未跳过任何测试的情况下引发异常。

  • bpo-35412:将测试用例添加到test_future4:检查 unicodeLiterals。

  • bpo-26704:添加了演示实例方法双重修补的测试。 Anthony Sottile 修补程序。

  • bpo-33725:test_multiprocessing_fork 可能在最新版本的 macOS 上崩溃。在问题解决之前,请在 macOS 上跳过测试。

  • bpo-35352:修改 test_asyncio 以使用来自测试目录的证书集。

  • bpo-35317:修复test_email中的mktime()溢出错误:在特定时区运行test_localtime_daylight_true_dst_true()test_localtime_daylight_false_dst_true()

  • bpo-21263:在多次报告说 test_gdb 在 macOS 上不能正常工作并且由于 gdb 在默认情况下不再提供之后,当使用 LLVM Clang 编译 Python 时,现在在 macOS 上跳过了 test_gdb。 Lysandros Nikolaou 的补丁

  • bpo-34279:当特定测试文件中没有执行任何测试时,regrtest 会发出警告。另外,如果尚未对所有测试文件执行任何测试,则将发出新的finally结果状态。 Pablo Galindo 修补程序。

  • bpo-34962:现在可以pass doc 中的 docstest,并且在 CI 中强制执行

  • bpo-23596:将 argparse 用作 gzip 模块的命令行。安东尼·李的补丁

  • bpo-34537:使用 python 3.6 或更早版本编译LC_ALL=C和 GDB 时,修复test_gdb.test_strings()

  • bpo-34587:test_socket:删除 RDSTest.testCongestion()。该测试try填充接收器的套接字缓冲区,并预期会出现错误。但是 RDS 协议不需要。而且,RDS 的 Linux 实现期望消息的产生者降低其速率,而不是接收者触发错误的作用。设计使 Fedora 28 的测试失败,因此只需将其删除即可。

  • bpo-34661:如果解压缩不支持-t,请修复 test_shutil。

  • bpo-34200:pass不使用可怕的 test.support.module_cleanup()逻辑在测试用例之间保存和恢复 sys.modules 内容,修复了 test_pkg 的不确定性。

  • bpo-34569:实验性 PEP 554 数据通道现在可以在 32 位系统的子解释器之间正确传递否定 PyLong 对象。 Michael Felt 修补程序。

  • bpo-34594:修复测试中硬编码的errno值的用法。

  • bpo-34579:修复 Michael Felt 的 test_embed for AIX Patch

  • bpo-34542:将 3072 RSA 密钥和 SHA-256 签名用于测试证书和密钥。

  • bpo-11193:删除test_subprocess.test_undecodable_env中 AIX 的特殊条件

  • bpo-34347:针对 AIX 修复test_utf8_mode.test_cmd_line

  • bpo-34490:在具有 AF_UNIX 系列套接字的 AIX 上,getsockname()不提供“ sockname”,因此跳过对 transport.get_extra_info('sockname')的调用

  • bpo-34391:pass从数据套接字读取来修复针对 TLS 1.3 的 ftplib 测试。

  • bpo-11192:在 AIX AIX 6.1 和更高版本上修复test_socket仅受 inet_pton6_zone()支持支持切换到基于运行时的 platform.system()以构建当前平台,而不是基于构建时的 sys.platform()

  • bpo-34399:更新所有 RSA 密钥和 DH 参数以使用至少 2048 位。

  • bpo-34373:修复 AIX 的test_mktimetest_pthread_getcpuclickid测试为 Michael Felt 的 AIX 补丁添加_PyTime_localtime的范围检查

  • bpo-11191:使用 xix 作为 aixtools 的编译器修补程序时,跳过 distutils 测试'test_search_cpp'(Michael Felt)

  • 改进了当模拟 assert_has_calls 失败时的错误消息。

  • bpo-33746:在详细模式下运行时修复 test_unittest。

  • bpo-33901:使用 gdbm 1.15 在 macOS 上修复 test_dbm_gnu:添加一个较大的值以确保文件大小更改。

  • bpo-33873:修复了regrtest中的错误,如果使用–huntrleaks/-R,则该错误会导致运行额外的测试。如果为–huntrleaks/-R 指定了无效的参数,则错误退出(必须至少执行一次预热运行并重复一次)。

  • bpo-33562:检查是否没有任何测试遗失全局 asyncio 事件循环策略。

  • bpo-33655:忽略 BSD 平台上的 test_posix_fallocate 失败,这可能是由于在 ZFS 上运行而导致的。

  • bpo-32962:修复了使用标志-mcet -fcf-protection -O0 编译 Python 时的 test_gdb。

  • bpo-33358:使用--enable-shared构建解释器时,修复test_embed.test_pre_initialization_sys_options()

  • bpo-32872:避免名称空间软件包的兼容性问题。

  • bpo-32517:修复由于未关闭KqueueSelector循环的传输而在 macOS 10.12.2 上失败test_asyncio的问题。

  • bpo-32663:确保在 test_smtplib.py 中运行SMTPUTF8SimTests类测试。

  • bpo-27643:Test_C 测试用例需要“带符号的短”位域,但是 IBM XLC 编译器(在 AIX 上)不支持此Function。跳过代码并测试何时使用 AIX 和 XLC

适用于 Python2-2.7 及更高版本

  • bpo-19417:添加 test_bdb.py。

  • bpo-31809:添加测试以验证与 secp ECDH 曲线的连接。

Build

  • bpo-34691:_contextvars 模块现已内置在 Windows 的核心 Python 库中。

  • bpo-35683:改进的 Azure Pipelines 构建步骤,现在可以正确验证布局

  • bpo-35642:从 pythoncore.vcxproj 中删除 asynciomodule.c

  • bpo-35550:修复了错误的 Solaris #ifdef 检查,以在编译时查找__sun && __SVR4 而不是 sun。

  • bpo-35499make profile-opt不再将CFLAGS_NODIST替换为CFLAGS。现在,它向CFLAGS_NODIST添加配置文件引导的优化(PGO)标志:保留现有的CFLAGS_NODIST标志。

  • bpo-35257:在编译 Cextensions 时,避免将链接器标志从链接时间优化(LTO)泄漏到 distutils 中。

  • bpo-35351:使用 clang 和 LTO 构建 Python 时,LTO 标志不再传递到 CFLAGS 中以pass distutils 构建第三方 C 扩展。

  • bpo-35139:修复在Modules/Setup中静态链接pyexpat时的编译器错误。

  • bpo-35059:PCbuild:在 Debug 模式下,在 pyproject.props 中将 InlineFunctionExpansion 设置为 OnlyExplicitInline(“/Ob1”选项),以扩展标记为内联的Function。此更改将使 Windows 在 Debug 模式下编译的 Python 速度更快。

  • bpo-35011:恢复使用 pyexpatns.h 来隔离 expat C 库的嵌入式副本,以使其链接或动态加载时其符号不会与具有自己版本的 libexpat 的嵌入应用程序或其他扩展模块发生冲突。

  • bpo-28015:Have –with-lto 可与 clang 一起正常使用。

  • bpo-34765:将过时的 install-sh 文件从 automake v1.16.1 更新到最新版本

  • bpo-34585:使用编译测试(而不是执行代码)在 configure.ac 中检查浮点字节 Sequences,以便这些检查在交叉编译的版本中起作用。

  • bpo-34710:固定的 SSL 模块使用 OpenSSL 和完善的 CFLAGS 构建。

  • bpo-34582:添加 JUnit XML 输出以进行回归测试并更新 Azure DevOps 版本。

  • bpo-34081:将 Sphinx 警告设为 Docs Makefile 中的错误。

  • bpo-34555:修复了无法同时定义HAVE_LINUX_VM_SOCKETS_HHAVE_SOCKADDR_ALG的情况。

  • bpo-33015:修复PyThread_start_new_thread()的 pthread 实现中的未定义行为:添加函数包装程序以始终返回NULL

  • bpo-34245:Python 共享库现已安装并具有写许可权(模式 0755),这是安装此类库的标准方法。

  • bpo-34121:修复了对 clang 上 C11 原子支持的检测。

  • bpo-32430:将 Modules/Setup.dist 重命名为 Modules/Setup,并在更新本地源代码树时无需将前者手动复制到后者。

  • bpo-30345:使用 LTO 进行编译时,将-g 添加到 LDFLAGS 中以获得调试符号。

  • bpo-5755:将-Wstrict-prototypes选项从OPT移到CFLAGS_NODIST。当构建用 C 编写的扩展模块时,此选项发出令人讨厌的警告。

  • bpo-33614:确保正确重新生成 Windows 上稳定的 ABI 的模块定义文件。

  • bpo-33648:–with-c-locale-warning 配置标记已被删除。它已无效约一年。

  • bpo-33522:在https://python.visualstudio.com/cpython的 Visual Studio Team Services 上启用 CI 构建

  • bpo-33512:配置的“ long double”检查已简化

  • bpo-33483:现在可以从标准环境变量中正确检测到 C 编译器。 –without-gcc 和–with-icc 选项已被删除。

  • bpo-33394:当在命令行中将宏传递给 GNU make 时,为扩展模块启用详细构建。

  • bpo-33393:更新 config.guess 和 config.sub 文件。

  • bpo-33377:为 mips r6 和 riscv 变体添加新的三胞胎(用于 extensions 后缀)。

  • bpo-32232:默认情况下,在Modules/Setup中配置的模块不再使用-DPy_BUILD_CORE构建。相反,专门需要该预处理程序定义的模块将其包含在其各个条目中。

  • bpo-33182:可以再次使用 clang 6.0 构建嵌入测试

  • bpo-33163:将 pip 升级到 9.0.3,并将 setuptools 升级到 v39.0.1.

  • bpo-33012:gcc 8 添加了新的警告试探法来检测无效的函数强制转换,并且库存的 python 版本似乎经常会遇到该警告。最常见的是将 METH_NOARGS 函数(仅使用一个参数)强制转换为 PyCFunction。pass向实现 METH_NOARGS 的所有函数添加一个哑元参数来解决此问题。

  • bpo-32898:使用 COUNT_ALLOCS 修复 python 调试版本。

  • bpo-29442:在 setup.py 中用 argparse 替换 optparse

Windows

  • bpo-35890:修复 API 调用 GetVersionEx 和 wcstok 的一致性。

  • bpo-32560py启动器现在将其STARTUPINFO结构转发给子进程。

  • bpo-35854:修复 Windows 上 venv 中的 EnvBuilder 和–symlinks

  • bpo-35811:pass py.exe 启动时避免传播 venv 设置

  • bpo-35797:修复 multiprocessing 模块使用的默认可执行文件

  • bpo-35758:允许使用 MSVC 在 ARM 上进行构建。

  • bpo-29734:修复 Windows 上 os.stat 中的句柄泄漏。

  • bpo-35596:对嵌入式发行版使用未经检查的 PYC,以避免 zipimport 限制。

  • bpo-35596:修复 vcruntime140.dll 被多次添加到可嵌入发行版中。

  • bpo-35402:更新 Windows 版本以使用 Tcl 和 Tk 8.6.9

  • bpo-35401:将 Windows 版本更新为 OpenSSL 1.1.0j

  • bpo-34977:Windows 上的 venv 现在将使用 python.exe 重定向器,而不是从基本环境中复制实际的二进制文件。

  • bpo-34977:添加了对构建 Windows App Store 软件包的支持

  • bpo-35067:删除_distutils_findvs 模块,并改用 vswhere.exe。

  • bpo-32557:允许 shutil.disk_usage 在 Windows 上采用文件路径

  • bpo-34770:修复 pyshellext.cpp 中可能的空指针取消引用。

  • bpo-34603:修复了从 MSVC 生成的函数返回的结构

  • bpo-34581:使用#ifdef _MSC_VER保护 socketmodule.c 中特定于 MSVC 的代码。

  • bpo-34532:修复 py.exe 的列表版本参数的退出代码。

  • bpo-34062:修复了 py.exe 启动器的'–list'和'–list-paths'参数

  • bpo-34225:确保 INCLUDE 和 LIB 目录不以反斜杠结尾。

  • bpo-34011:更改了一套代码,这些代码跨 DLL 和 init.tcl 从运行的 Python 位置复制到正在创建的 venv 中。仅当从 Python 源版本运行时才需要这些副本,并且复制代码现在仅在这种情况下才运行,而不是在创建 venv 时运行。

  • bpo-34006:还原 Windows 帮助文档的行长限制。不需要行长限制,因为页面显示在单独的应用程序中,而不是在浏览器选项卡上。它还可能与 DPI 设置发生严重交互。

  • bpo-31546:在 await 提示符下 Importing 用户时,恢复正在运行的 PyOS_InputHook。使用 Windows 上的提示符恢复交互式 GUI 窗口(例如 Matplotlib 图形)的集成。

  • bpo-30237:由 CancelSynchronousIo 取消而不是崩溃取消 ReadConsole 时输出错误。

  • bpo-33895:在调用获取 Windows 加载程序锁定的函数时释放 GIL。

  • bpo-33720:减少发行版本上的最大编组递归深度。

  • bpo-29097:修复了错误datetime.fromtimestamp()在 Windows 上错误地将OSError的值设置为 0 到 86400 之间的问题。Ammar Askar 进行了修补。

  • bpo-33316:PyThread_release_lock 始终失败

  • bpo-33184:更新 Windows 安装程序以使用 OpenSSL 1.1.0h。

  • bpo-32890:在 os.execve()和 os.truncate()中修复 GetLastError()而不是 errno 的用法。

  • bpo-33016:修复可能在 nt._getfinalpathname 中使用未初始化的内存的问题

  • bpo-32903:如果当前目录设置为 UNC 路径,则修复 Windows 上 os.chdir()中的内存泄漏。

  • bpo-32901:将 Tcl 和 Tk 版本更新为 8.6.8

  • bpo-31966:修复了 WindowsConsoleIO.write()用于写入空数据的问题。

  • bpo-32409:确保 activate.bat 可以处理 Unicode 内容。

  • bpo-32457:改进了启动 Python 时对非规范化可执行路径的处理。

  • bpo-32370:对 uuid 模块中的 ipconfig 输出使用正确的编码。 Segev Finer 修补程序。

  • bpo-29248:修复 Windows 上的os.readlink(),它错误地将重解析数据缓冲区的PrintNameOffset字段视为多个字符而不是字节。 Craig Holmquist 和 SSE4 的补丁。

  • bpo-1104:正确处理msilib.SummaryInfo.GetProperty()中的字符串长度,以防止其截断最后一个字符。

macOS

  • bpo-35401:更新 macOS 安装程序以使用 OpenSSL 1.1.0j。

  • bpo-35025:妥善保护CLOCK_GETTIME等的使用。 macOS 上timemodule中的宏。

  • bpo-24658:在 macOS 上,修复了读写大小大于 2 GiB 的文件的问题。

  • bpo-34405:更新到适用于 macOS 安装程序版本的 OpenSSL 1.1.0i。

  • bpo-33635:在 macOS stat 中,某些文件 Descriptors(/ dev/fd/3 f.e)会导致文件 DescriptorsOSError 错误。在 is_dir,is_file 和类似方法中添加了防范此异常的措施。 DirEntry.is_dir 也可以引发此异常,因此_RecursiveWildcardSelector._iterate_directories 也以相同的错误忽略模式进行了扩展。

  • bpo-13631:现在,可以pass macOS 上的 editline 仿真在 readline 初始化期间正确处理用户主目录中的.editrc 文件。

  • bpo-33184:更新 macOS 安装程序版本以使用 OpenSSL 1.1.0h。

  • bpo-32726:为 macOS 10.6 安装程序构建并链接 Tcl/Tk 8.6 的私有副本。 10.9 安装程序变体已经做到了。这意味着 python.org macOS 安装程序提供的 Python 3.7 不再需要或使用系统提供或用户安装的 Tcl/Tk 的任何外部版本,例如 ActiveTcl。

  • bpo-32901:将 macOS 10.9 安装程序更新为 Tcl/Tk 8.6.8.

  • bpo-31903:在_scproxy中,调用SystemConfiguration时应放下 GIL 以避免死锁。

IDLE

  • bpo-35770:IDLE macosx 删除选项=>配置 IDLE。它先前误删除了 Window => Zoom Height。 (“缩放高度”现在位于“选项”菜单上)。在 Mac 上,可pass IDLE 菜单上的“偏好设置”访问设置对话框。

  • bpo-35769:将 IDLE 的新文件名从“无标题”更改为“无标题”

  • bpo-35660:修复 idlelib.window 中的导入。

  • bpo-35641:当函数没有文档字符串时,格式正确calltip

  • bpo-33987:将 ttk 框架用于 ttk 小部件。

  • bpo-34055:修复 IDLE Shell 中错误的“智能”缩进和换行符。

  • bpo-35591:当找不到选择项时,“查找选择项”现在可用。

  • bpo-35196:加速压榨线的计数。

  • bpo-35598:更新 config_key:使用 PEP 8 名称和 ttk 小部件,使某些对象成为全局对象,并添加测试。

  • bpo-28097:将“上一个/下一个历史记录”条目添加到 Shell 菜单中。

  • bpo-35208:Squeezer 现在可以正确计算换行之前的换行。

  • bpo-35555:不适用时,将“代码上下文”菜单项涂成灰色。

  • bpo-35521:记录 IDLE 编辑器代码上下文Function。在 IDLE 文档中添加一些内部引用。

  • bpo-22703:现在,“代码上下文”菜单标签在“显示/隐藏代码上下文”之间切换。现在,“缩放高度”菜单可在“缩放/还原高度”之间切换。缩放高度已从“窗口”菜单移至“选项”菜单。

  • bpo-35213:在适当的地方,在 idlelib 中使用'macOS'。

  • bpo-34864:在 macOS 上,警告是否将系统偏好设置“打开文档时首选标签”设置为“始终”。

  • bpo-34864:记录有关 MacOS 问题的两个 IDLE。系统首选项 Dock 的“始终优先选择标签”设置禁用某些 IDLE Function。菜单与 Windows 和 Linux 中所述的菜单略有不同。

  • bpo-35202:从 lib/idlelib 中删除未使用的导入

  • bpo-33000:证明 IDLE 的 Shell 没有行数限制。无限期运行的程序可能会溢出内存。

  • bpo-23220:说明 IDLE 的 Shell 如何显示输出。

  • bpo-35099:完善有关 IDLE 运行用户代码的文档。该部分从“ IDLE –控制台差异”重命名为“运行用户代码”。它主要涵盖使用自定义 sys.stdxxx 对象的含义。

  • bpo-35097:添加说明编辑器窗口的 IDLE doc 小节。主题包括打开,标题和状态栏,.py *extensions 以及运行。

  • bpo-35093:在 IDLE 文档中记录 IDLE 文档查看器。在“帮助和首选项”的“帮助源”小节中添加一个段落。

  • bpo-35088:更新 idlelib.help.copy_string 文档字符串。现在,我们使用 git 和 backporting 代替 hg 和 forward 合并。

  • bpo-35087:为当前文档版本更新 idlelib 帮助文件。主要更改是消除了章节编号。

  • bpo-34548:将配置的颜色主题用于只读文本视图。

  • bpo-1529353:启用 Shell 中长输出的“压缩”Function,以避免性能下降并清除历史记录而不丢失它。可以压缩压缩的输出,在单独的窗口中查看,然后“不压缩”。

  • bpo-34047:固定了 macOS 上的鼠标滚轮滚动方向。

  • bpo-34275:使 IDLE 呼叫提示在 Mac 上始终可见。某些 MacOS-tk 组合需要.update_idletasks()。 Kevin Walzer 修补程序。

  • bpo-34120:关闭某些窗口和对话框后修复无响应。

  • bpo-33975:运行 htest 时避免使用小字体。由于人工查看测试的目的之一是确定小部件的外观正确,因此对于测试而言,它们看起来与运行 IDLE 时的外观相同是很重要的。

  • bpo-33905:添加对 idlelib.stackview.StackBrowser 的测试。

  • bpo-33924:将 mainmenu.menudefs 键“ windows”更改为“ window”。其他所有 menudef 键都是主菜单项的小写版本。

  • bpo-33906:将 idlelib.windows 重命名为主菜单上的“匹配窗口”窗口,并删除最后一个复数模块名称。

  • bpo-33917:修复并记录 idlelib/idle_test/template.py。修改后的文件将编译,运行并测试确定。 idle_test/README.txt 解释了如何使用它来创建新的 IDLE 测试文件。

  • bpo-33904:IDLE:在 rstrip 中,将 RstripExtension 类重命名为 Rstrip

  • bpo-33907:为了保持一致性和清晰性,请重命名 IDLE 模块和类。模块调用提示及其类 CallTips 现在是 calltip 和 Calltip。在模块 calltip_w 中,类 CallTip 现在是 CalltipWindow。

  • bpo-33856:在 IDLE 的欢迎消息中添加“帮助”

  • bpo-33839:IDLE:重构 ToolTip 和 CallTip 并添加文档和测试

  • bpo-33855:至少测试所有 IDLE 模块。添加缺少的文件,导入模块,实例化类并检查覆盖率。检查现有文件。

  • bpo-33656:在 Windows 上,添加 API 调用,说 tk 可扩展为 DPI。在 Windows 8.1 或 10 上,Python 二进制文件的 DPI 兼容性属性未更改,并且监视器分辨率大于 96 DPI,这将使文本和线条更清晰。否则,它将无效。

  • bpo-33768:单击上下文行会将其移到编辑器窗口的顶部。

  • bpo-33763:IDLE:使用只读文本窗口小部件而不是标签窗口小部件进行代码上下文。

  • bpo-33664:逐行滚动 IDLE 编辑器文本。以前,鼠标滚轮和滚动条滑块将文本移动固定数量的像素,从而在编辑器框的顶部显示了部分行。该更改还适用于 Shell 和 grep 输出窗口,但不适用于只读文本视图。

  • bpo-33679:为“代码上下文”启用特定于主题的颜色配置。使用“突出显示”选项卡查看内置主题的设置或将设置添加到自定义主题。

  • bpo-33642:最多显示用于代码上下文的最大行非空白行。如果没有当前上下文,请显示一个空白行。

  • bpo-33628:IDLE:清理 codecontext.py 及其测试。

  • bpo-33564:IDLE 的代码上下文现在将异步识别为块打开器。

  • bpo-21474:将单词/标识符的定义从 ascii 更新为 unicode。在文本和 Importing 框中,这将pass双击影响选择,pass控制向左/向右移动向左/向右,以及pass控制-BACKSPACE/DEL 向左/向右删除,将影响选择。

  • bpo-33204:IDLE:始终为无效的字符串前缀上色。 “ u”字符串前缀不能与“ r”或“ f”配对。从右边开始,始终为有效地为所有前缀加上颜色。修订并扩展着色剂测试。

  • bpo-32984:运行启动文件时设置__file__。与 Python 一样,IDLE 可以选择在“Shell”窗口中运行一个启动文件,然后显示第一个交互式 Importing 提示。对于 IDLE,-s运行以环境变量 IDLESTARTUP PYTHONSTARTUP命名的文件; -r file运行file。 Python 在运行文件之前将__file__设置为启动文件名,并在第一个提示之前将其取消设置。现在,在没有-n选项的情况下,正常运行时,IDLE 会执行相同的操作。

  • bpo-32940:在 pyparse 中简化并重命名 StringTranslatePseudoMapping。

  • bpo-32916:将 pyparse 中的str更改为code

  • bpo-32905:删除 pyparse 模块中未使用的代码。

  • bpo-32874:添加 pyparse 测试。

  • bpo-32837:对 IDLE 的系统文件和与位置无关的文件,将系统和与位置有关的默认编码用于 open()是个坏主意。

  • bpo-32826:在 IDLE 的 test_help_about 中的 open()中添加“ encoding = utf-8”。 GUI 测试 test_file_buttons()仅查看仅以 ascii 开头的行,但在 open()默认为'ascii'的系统上失败,因为 readline()在内部进行了足够远的读取和解码,从而在 CREDITS.txt 中遇到了非 ascii 字符。

  • bpo-32831:添加文档字符串和代码上下文测试。

  • bpo-32765:更新 configdialog 的“常规”选项卡文档字符串,以将新的窗口小部件添加到窗口小部件列表中。

Tools/Demos

  • bpo-35884:添加一个基准脚本,用于计时各种访问变量的方式:Tools/scripts/var_access_benchmark.py

  • bpo-34989:python-gdb.py 现在处理计算 Python 框架行号时的错误。

  • bpo-20260:参数诊所现在具有非按位无符号 int 转换器。

  • bpo-32962:python_gdb 现在在调用string()时捕获UnicodeDecodeError个异常。

  • bpo-32962:例如,当 Python 没有调试符号时,python-gdb 现在在 read_var()上捕获 ValueError。

  • bpo-33189:pygettext.py 现在仅将 Literals 字符串识别为 docstrings 和可翻译字符串,并拒绝字节 Literals 和 f 字符串表达式。

  • bpo-31920:修复了将目录作为pygettext脚本中的参数进行处理的问题。基于 Oleg Krasnikov 的补丁。

  • bpo-29673:修复 pystackv 和 pystack gdbinit 宏。

  • bpo-25427:取而代之的是python3 -m venv删除 pyvenv 脚本,以减少对于将为其创建虚拟环境的 Python 解释器的困惑。

  • bpo-32885:为Tools/scripts/pathfix.py添加-n标志以禁用自动备份创建(后缀为~的文件)。

  • bpo-32222:修复 pygettext 不会为带有类型 Comments 参数的函数提取文档字符串的问题。 Toby Harradine 修补程序。

  • bpo-31583:修复了 2to3,使其与–add-suffix 选项一起使用,但对于当前目录中文件的相对路径,没有–output-dir 选项。

C API

Python 3.7.0 finally版

*发布日期:2018-06-27 *

Library

C API

  • bpo-33932:两次调用 Py_Initialize()不会执行任何操作,而不会导致致命错误:还原 Python 3.6 行为。

Python 3.7.0 发行候选 1

*发布日期:2018-06-12 *

核心和内建函数

  • bpo-33803:修复了由于未将其所有字段都设置为 NULL 的对象启用 GC 跟踪而导致的 hamt.c 崩溃。

  • bpo-33706:修复了解析命令行选项时 Python 初始化崩溃的问题。感谢 Christoph Gohlke 提供的错误报告和修复!

  • bpo-30654:修复了即使在之前设置了自定义处理程序的情况下,在解释器关闭时将 SIGINT 处理程序重置为 SIG_DFL 的问题。 Philipp Kerling 修补程序。

  • bpo-31849:修复了 pyhash.c 中的有符号/无符号比较警告。

Library

  • bpo-30167:如果设置了 PYTHONSTARTUP,则防止 site.main()异常。史蒂夫·韦伯(Steve Weber)的补丁。

  • bpo-33812:日期时间实例 d 具有非 None tzinfo,但 d.tzinfo.utcoffset(d)返回 None 的 astimezone()方法现在将其视为天真。

  • bpo-30805:pass调试日志记录避免竞争情况

  • bpo-33694:异步:修复了在使用 ProactorEventLoop 时导致在 pause_reading()/ resume_reading()上丢失数据的竞争状况。

  • bpo-32493:正确测试configure.ac中的uuid_enc_be可用性。 Michael Felt 修补程序。

  • bpo-33792:添加 asyncio.WindowsSelectorEventLoopPolicy 和 asyncio.WindowsProactorEventLoopPolicy。

  • bpo-33778:将unicodedata的数据库更新为 Unicode 版本 11.0.0.

  • bpo-33770:针对无效长度的编码 Importing,改进了 base64 异常消息

  • bpo-33769:asyncio/start_tls:修复错误消息;发生未处理的错误时取消回调;如果 SSLTransport 被中止,则将其标记为已关闭。

  • bpo-33767:现在,对mmap.mmap个对象执行串联(+)和重复(*)序列操作会引发TypeError而不是SystemError。 Zackery Spytz 修补程序。

  • bpo-33734:asyncio/ssl:修复 AttributeError,增加默认的握手超时

  • bpo-11874:将用法分成可包装的部分时,请使用更好的正则表达式。避免来自自定义 metavar 字符串的虚假 assert 错误。

  • bpo-33582:对 inspect.formatargspec 发出弃用警告

Documentation

Build

  • bpo-5755:将-Wstrict-prototypes选项从OPT移到CFLAGS_NODIST。当构建用 C 编写的扩展模块时,此选项发出令人讨厌的警告。

Windows

  • bpo-33720:减少发行版本上的最大编组递归深度。

IDLE

  • bpo-33656:在 Windows 上,添加 API 调用,说 tk 可扩展为 DPI。在 Windows 8.1 或 10 上,Python 二进制文件的 DPI 兼容性属性未更改,并且监视器分辨率大于 96 DPI,这将使文本和线条更清晰。否则,它将无效。

  • bpo-33768:单击上下文行会将其移到编辑器窗口的顶部。

  • bpo-33763:IDLE:使用只读文本窗口小部件而不是标签窗口小部件进行代码上下文。

  • bpo-33664:逐行滚动 IDLE 编辑器文本。以前,鼠标滚轮和滚动条滑块将文本移动固定数量的像素,从而在编辑器框的顶部显示了部分行。该更改还适用于 Shell 和 grep 输出窗口,但不适用于只读文本视图。

  • bpo-33679:为“代码上下文”启用特定于主题的颜色配置。使用“突出显示”选项卡查看内置主题的设置或将设置添加到自定义主题。

  • bpo-33642:最多显示用于代码上下文的最大行非空白行。如果没有当前上下文,请显示一个空白行。

Python 3.7.0 beta 5

*发布日期:2018-05-30 *

核心和内建函数

  • bpo-33622:修复了垃圾收集器无法使用__del__方法添加对象或将其引用到gc.garbage列表中时泄漏的问题。现在可以在设置了异常并保留该异常时调用PyGC_Collect()

  • bpo-33509:修复 warnings.warn_explicit()的 module_globals 参数:如果 module_globals 不是字典,则不会崩溃。

  • bpo-20104:3.7.0b1 中添加的新os.posix_spawn已删除,因为我们仍在研究 API 的外观。期望在 3.8 中代替。

  • bpo-33475:修复了将 Comments 转换为字符串并在字符串表示形式中优化括号的各种错误。

  • bpo-33391:修复 set_symmetric_difference()中的泄漏。

  • bpo-28055:修复 siphash24()中未对齐的访问。 Rolf Eike Beer 的补丁。

  • bpo-32911:由于在下游 Beta 测试期间发现了意外的兼容性问题,已还原为bpo-29463docstring字段已从 3.7a1 中添加的 Module,ClassDef,FunctionDef 和 AsyncFunctionDef ast 节点中删除。 Docstring 表达式作为其体内的第一条语句被恢复。基于 Inada Naoki 的补丁。

  • bpo-21983:如果 type 参数是 ctypes 结构化数据类型,则修复ctypes.cast()中的崩溃。 Eryk Sun 和 Oren Milman 的补丁。

Library

  • bpo-32751:由于超时取消任务时,asyncio.wait_for()现在将 await 直到取消完成。

  • bpo-32684:修复聚集以传播自身的取消,即使使用 return_exceptions 也是如此。

  • bpo-33654:支持 SSLTransport.set_protocol()中的协议类型切换。

  • bpo-33674:尽早暂停传输,以进一步降低在 connection_made()之前调用 data_received()的风险。

  • bpo-33674:修复 asyncio.sslproto 的 SSLProtocol.connection_made()中的竞争条件:立即开始握手,而不要使用 call_soon()。以前,可以在握手开始之前调用 data_received(),从而导致握手挂起或失败。

  • bpo-31647:修复了已关闭_SelectorSocketTransport 后调用 write_eof()引发 AttributeError 的错误。

  • bpo-32610:使 asyncio.all_tasks()仅返回待处理的任务。

  • bpo-32410:避免在 sendfile 后备代码中阻止文件 IO

  • bpo-33469:在关闭使用 run_in_executor 的循环后修复 RuntimeError

  • bpo-33672:使用 Cython 的虚假协程修复 Task .__ repr_崩溃

  • bpo-33654:修复 transport.set_protocol()以支持在 asyncio.Protocol 和 asyncio.BufferedProtocol 之间切换。修复 loop.start_tls()以使用 asyncio.BufferedProtocols。

  • bpo-33652:类型变量和带下标的泛型的腌菜现在已经过时,并且可以与旧版本的 Python 兼容。

  • bpo-32493:在 FreeBSD 上固定为uuid.uuid1()

  • bpo-33618:使用 OpenSSL 1.1.1 finally确定并记录对 TLS 1.3 的初步和实验性支持

  • bpo-33623:在__del_中创建 asyncio.Future 时,修复可能的 SIGSGV

  • bpo-30877:修复了 JSON 解码器的 Python 实现中的一个错误,该错误阻止在完成解码后清除已解析字符串的缓存。基于 c-fos 的补丁。

  • bpo-33570:更改 TLS 1.3 密码套件设置,以与 OpenSSL 1.1.1-pre6 和更高版本兼容。默认情况下,OpenSSL 1.1.1 将启用 TLS 1.3 密码。

  • bpo-28556:不要将参数简化为typing.Union。现在,Union[Manager, Employee]在运行时并未简化为Employee。以前,这种简化导致了一些错误,并且引起了自省的可能性。

  • bpo-33540:向socketserverForkingMixInThreadingMixIn类添加新的block_on_close类属性。

  • bpo-33548:tempfile._candidate_tempdir_list 应该考虑常见的 TEMP 位置

  • bpo-33109:默认情况下再次不需要 argparse 子解析器,还原了 3.7.0a2 中bpo-26510引入的行为更改。

  • bpo-33536:dataclasses.make_dataclass 现在检查无效的字段名称和重复的字段。另外,添加了对无效字段规范的检查。

  • bpo-33542:阻止uuid.get_node在 Windows 上使用 DUID 而不是 MAC。 Zvi Effron 的补丁

  • bpo-26819:在 Windows proactor 事件循环中使用ReadTransport.resume_reading修复了竞争条件。

  • 当提供 ClassVar 作为字符串正向引用时,修复了typing.get_type_hints()中的失败。

  • bpo-33505:pass重新排序是否检查来优化 asyncio.ensure_future():快 1.17 倍。

  • bpo-33497:将错误参数添加到 cgi.parse_multipart,并在 FieldStorage 中使用给定的错误(Twisted 所需)进行编码。琥珀色补丁。

  • bpo-33495:更改 dataclasses.Fields repr 以使用其每个成员的 repr,而不是 str。这使每个字段实际代表的内容更加清楚。对于“类型”成员尤其如此。

  • bpo-33453:如果使用 Literals 字符串类型 Comments 或使用 PEP 563“Comments 的延迟评估”,则修复数据类以使其工作。对于 ClassVar(“ ClassVar”和“ typing.ClassVar”)和 InitVar(“ InitVar”和“ dataclasses.InitVar”),仅检测到特定的字符串前缀。

  • bpo-28556:键入模块中的次要问题:向NamedTuple.__new__添加 Comments,在Generic.__new__中传递*args**kwds。 PauliusŠarka 和 Chad Dombrova 的原始 PR。

  • bpo-20087:使用 glibc 2.27 支持的语言环境更新了别名 Map。

  • bpo-33422:修复了在 pydoc 上查找字节/字符串 Literals 时尾随引号引起来的问题。 AndrésDelfino 修补程序。

  • bpo-28167:函数platform.linux_distributionplatform.dist现在触发DeprecationWarning,并已在 Python 3.8 中标记为要删除

  • bpo-33197:在构造无效的检查时更新错误消息。参数 Dong-hee Na 修补。

  • bpo-33263:修复 Vlad Starostin 在_SelectorSocketTransport补丁中的 FD 泄漏。

  • bpo-32861:urllib.robotparser 的__str__表示现在包括通配符条目以及“爬网延迟”和“请求速率”字段。 Michael Lazar 修补程序。

  • bpo-32257:ssl 模块现在包含 OP_NO_RENEGOTIATION 常量,可用于 OpenSSL 1.1.0h 或 1.1.1.

  • bpo-16865:在ctypes中支持> = 2GiB 的数组。 Segev Finer 修补程序。

Documentation

Tests

  • bpo-33655:忽略 BSD 平台上的 test_posix_fallocate 失败,这可能是由于在 ZFS 上运行而导致的。

  • bpo-32604:删除_xxsubinterpreters 模块(用于测试)和关联的帮助程序。该模块最初是在 3.7b1 中最近添加的。

Build

  • bpo-33614:确保正确重新生成 Windows 上稳定的 ABI 的模块定义文件。

  • bpo-33522:在https://python.visualstudio.com/cpython的 Visual Studio Team Services 上启用 CI 构建

  • bpo-33012:为 gcc 8 添加-Wno-cast-function-type,以消除有关函数强制转换的警告,例如在方法定义列表中强制转换为 PyCFunction。

macOS

  • bpo-13631:现在,可以pass macOS 上的 editline 仿真在 readline 初始化期间正确处理用户主目录中的.editrc 文件。

IDLE

  • bpo-33628:IDLE:清理 codecontext.py 及其测试。

  • bpo-33564:IDLE 的代码上下文现在将异步识别为块打开器。

  • bpo-32831:添加文档字符串和代码上下文测试。

Python 3.7.0 beta 4

*发布日期:2018-05-02 *

核心和内建函数

  • bpo-33363:在异步函数外部引发async withasync for语句的 SyntaxError。

  • bpo-33128:修复了导致 PathFinder 在 sys.meta_path 上出现两次的错误。 Pablo Galindo Salgado 修补程序。

  • bpo-33312:pass调整内部结构_dictkeysobject 共享密钥结构的语句方式,修复了 dictobject.c 中的 clang ubsan(未定义的行为清除程序)警告。

  • bpo-33231:修复normalizestring()中潜在的内存泄漏。

  • bpo-33205:将 dict 增长Function从round_up_to_power_2(used*2+hashtable_size/2)更改为round_up_to_power_2(used*3)。以前,仅在used == 0时才收缩 dict。现在,dict 有更多的机会被缩减。

  • bpo-29922:当__aenter__()__aexit__()返回不可 await 的对象时,改进了“与...异步”中的错误消息。

  • bpo-33199:从密钥共享字典复制时,字典实现中的ma_version_tag未初始化。

Library

  • bpo-33281:在 macOS 上修复 ctypes.util.find_library 回归。

  • bpo-33383:修复了使用单个参数调用dbm.ndbm数据库对象的 get()方法时发生的崩溃。

  • bpo-33329:在较新的 glibcs 上修复 multiprocessing 回归

  • bpo-991266:固定引用http.cookies.SimpleCookieComment属性。

  • bpo-33131:将 Binding 点的 Binding 版本升级到 10.0.1.

  • bpo-33308:修复了将 ST 对象转换为具有line_info=Falsecol_info=True的 Tuples 树或列表树时在parser模块中发生的崩溃。

  • bpo-33266:lib2to3 现在可以识别rf'...'个字符串。

  • bpo-11594:确保在使用 lib2to3 时遵守行尾。

  • bpo-33254:让importlib.resources.contents()importlib.abc.ResourceReader.contents()返回iterable而不是iterator

  • bpo-33256:修复了cgitb.html()产生的 html 中<module>调用的显示。 StéphaneBlondon 的补丁。

  • bpo-33185:使用-m开关运行 pydoc 时,修复了回归问题。 (passbpo-33053的分辨率在 3.7.0b3 中引入了回归Function)此修复程序还更改了 pydoc,在必要时将os.getcwd()添加到sys.path,而不是添加"."

  • bpo-33169:调用importlib.machinery.invalidate_caches()时,删除sys.path_importer_cache中的None条目。

  • bpo-33217:不赞成在 Enum 类和 Enum 成员中查找非 Enum 对象(将在 3.8 中引发TypeError)。

  • bpo-33203random.Random.choice()现在即使在没有getrandbits()实现的子类中调用时,也会连续为空序列提高IndexError

  • bpo-33224:更新 PEP 479的 difflib.mdiff()。将生成器中未捕获的 StopIteration 转换为返回语句。

  • bpo-33209:在pickle.Pickler.dump()的 C 实现结束时结束帧。

  • bpo-20104:改进了错误处理,并修复了os.posix_spawn()中的参考泄漏。

  • bpo-33175:在数据类中,Field .__ set_name_现在在类(而不是实例)上查找默认值的__set_name_特殊方法。

  • bpo-33097:在解释器关闭期间调用executor.submit时引发 RuntimeError。

  • bpo-31908:修复trace模块命令行工具的封面文件输出。仅当使用--missing选项时,以前发出的封面文件。 Michael Selik 修补程序。

Documentation

  • bpo-33378:为https://docs.python.org/3/添加韩语切换器

  • bpo-33276:说明模块上的__path__属性不能只是任何值。

  • bpo-33201:更新用于编写 C 扩展类型的文档。

  • bpo-33195:弃用c-api/arg文档中的Py_UNICODE用法。自 Python 3.3 起,不推荐使用Py_UNICODE相关的 API,但在文档中将其遗漏。

  • bpo-8243:添加有关 curses.addch 和 curses.addstr 在窗口或垫外书写时的异常行为的 Comments。

  • bpo-32337:更新与dict订单有关的文档。

Tests

  • bpo-33358:使用--enable-shared构建解释器时,修复test_embed.test_pre_initialization_sys_options()

Build

  • bpo-33394:当在命令行中将宏传递给 GNU make 时,为扩展模块启用详细构建。

  • bpo-33393:更新 config.guess 和 config.sub 文件。

  • bpo-33377:为 mips r6 和 riscv 变体添加新的三胞胎(用于 extensions 后缀)。

  • bpo-32232:默认情况下,在Modules/Setup中配置的模块不再使用-DPy_BUILD_CORE构建。相反,专门需要该预处理程序定义的模块将其包含在其各个条目中。

  • bpo-33182:可以再次使用 clang 6.0 构建嵌入测试

Windows

  • bpo-33184:更新 Windows 安装程序以使用 OpenSSL 1.1.0h。

macOS

  • bpo-33184:更新 macOS 安装程序版本以使用 OpenSSL 1.1.0h。

IDLE

  • bpo-21474:将单词/标识符的定义从 ascii 更新为 unicode。在文本和 Importing 框中,这将pass双击影响选择,pass控制向左/向右移动向左/向右,以及pass控制-BACKSPACE/DEL 向左/向右删除,将影响选择。

  • bpo-33204:IDLE:始终为无效的字符串前缀上色。 “ u”字符串前缀不能与“ r”或“ f”配对。从右边开始,始终为有效地为所有前缀加上颜色。修订并扩展着色剂测试。

Tools/Demos

  • bpo-33189:pygettext.py 现在仅将 Literals 字符串识别为 docstrings 和可翻译字符串,并拒绝字节 Literals 和 f 字符串表达式。

  • bpo-31920:修复了将目录作为pygettext脚本中的参数进行处理的问题。基于 Oleg Krasnikov 的补丁。

  • bpo-29673:修复 pystackv 和 pystack gdbinit 宏。

  • bpo-31583:修复了 2to3,使其与–add-suffix 选项一起使用,但对于当前目录中文件的相对路径,没有–output-dir 选项。

Python 3.7.0 beta 3

*发布日期:2018-03-29 *

Security

  • bpo-33136:针对 LibreSSL CVE-2018-8970 强化 ssl 模块。 X509_VERIFY_PARAM_set1_host()用显式的 namelen 调用。一项新的测试可确保不允许使用 NULL 字节。

  • bpo-33001:用于防止 Windows 上 os.symlink 中的缓冲区溢出的最小修复

  • bpo-32981:difflib 和 poplib 中的正则表达式容易遭受灾难性的回溯。这些正则表达式形成了潜在的 DOS 向量(REDOS)。它们已被重构。这解决了 CVE-2018-1060 和 CVE-2018-1061. Jamie Davis 的补丁。

核心和内建函数

  • bpo-33053:使用-m 开关时,现在可以将 sys.path [0]显式扩展为* starting *工作目录,而不是保留为空路径(允许在导入时从当前工作目录进行导入) )

  • bpo-33018:分别调用非类和抽象 Base Class 作为第一个参数和第二个参数时,提高issubclass()引发的错误的一致性。 Josh Bronson 修补程序。

  • bpo-33041:修复了函数包含async for循环时跳转的问题。

  • bpo-33026:pass设置 f_lineno 固定跳出“ with”块。

  • bpo-33005:修复了使用自定义内存分配器(例如:使用 PYTHONMALLOC env var)时 fork 崩溃的问题。 _PyGILState_Reinit()和_PyInterpreterState_Enable()现在使用默认的 RAW 内存分配器在 fork 上分配新的解释器互斥量。

  • bpo-17288:防止从“返回”和“异常”跟踪事件跳转。

  • bpo-32836:在列表/字典/集合理解的情况下不要使用临时变量

Library

  • bpo-33141:如果 Field 对象具有自己的__set_name__,则让它们pass__set_name_传递为其默认值。

  • bpo-33096:允许 ttk.Treeview.insert 插入具有错误布尔值的 iid。注意,iid = 0 和 iid = False 相同。 Garvit Khatri 修补程序。

  • bpo-32873:将类型变量和特殊的键入形式视为复制和腌制不可变。这解决了一些小问题和不一致之处,并改善了与 Python 3.6 的向后兼容性。

  • bpo-33134:在计算数据类的__hash_时,请使用查找表包含返回__hash_值的函数。这是对查找字符串,然后测试该字符串以查看要做什么的一种改进。

  • bpo-33127:ssl 模块现在可以使用 LibreSSL 2.7.1 进行编译。

  • bpo-32505:如果数据类的成员变量的类型为 Field,但没有类型 Comments,则引发 TypeError。

  • bpo-33078:修复了由于依赖 sem_getvalue 的测试导致的 OSX 失败

  • bpo-33116:将“字段”添加到数据类。all

  • bpo-32896:解决了一个错误,在该错误中,使用 default_factory 的字段对数据类进行子类化将生成错误的类。

  • bpo-33100:数据类:如果某个字段的默认值是 MemberDescriptorType,则它来自该字段位于__slots_中,而不是实际的默认值。

  • bpo-32953:如果非数据类从冻结的数据类继承,则允许将属性添加到派生类。无法仅将冻结数据类中的属性分配给该属性。要求层次结构中的所有数据类要么全部冻结,要么全部冻结。

  • bpo-33061:在 typing 时将缺少的NoReturn添加到__all__

  • bpo-33078:修复发生 Pickling 错误时在 multiprocessing.Queue 中处理尺寸。

  • bpo-33064:lib2to3 现在可以正确支持函数签名中*args**kwargs后的尾部逗号。

  • bpo-33056:FIX 正确地关闭了并发.futures.ProcessPoolExecutor 中泄漏的 fds。

  • bpo-33021:在 fstat()调用期间释放 GIL,避免在调用 mmap.mmap(),os.urandom()和 random.seed()时所有线程挂起。 Nir Soffer 的补丁。

  • bpo-31804:避免多重处理失败。如果标准流关闭或退出时为 None,则进行处理。

  • bpo-33037:关闭 SSL 传输后,跳过发送/接收数据。

  • bpo-27683:修复ipaddress中的回归,当网络由包含整数掩码且仅剩 1 位地址的 Tuples 构造时,hosts()的结果为空。

  • bpo-32999subclass不是类型对象时,修复了ABC.__subclasscheck__(cls, subclass)的 C 实现失败。

  • bpo-33009:针对单个参数的部分方法修复了 inspect.signature()。

  • bpo-32969:在 zlib 中公开几个缺少的常量,并修复相应的文档。

  • bpo-32056:改进了针对读取模块aifcwavesunau中的音频文件时无效的通道数和 samples 宽度的异常。

  • bpo-32844:如果关闭了另一个低 Descriptors,则在子进程中将低 Descriptors(0 或 1)错误地重定向到 stderr。

  • bpo-32857:在tkinter中,after_cancel(None)现在提高ValueError而不是取消第一个计划的Function。 Cheryl Sabella 修补程序。

  • bpo-31639:http.server 现在公开了 ThreadedHTTPServer 类,并在使用-m运行模块时使用它来应对预打开套接字的 Web 浏览器。

  • 如果基础 SQLite 库的版本为 3.6.11 或更高版本,则bpo-27645sqlite3.Connection现在公开backup方法。 Lele Gaifax 修补程序。

Documentation

  • bpo-33126:文档 PyBuffer_ToContiguous()。

  • bpo-27212:修改islice()配方的文档以使用直到起始索引为止的初始值。

  • bpo-28247:更新zipapp文档,以描述如何制作独立应用程序。

  • bpo-18802:ipaddress 的文档更改。 Jon Foster 和 Berker Peksag 的补丁。

  • bpo-27428:更新文档以阐明WindowsRegistryFinder实现了MetaPathFinder。 (Himanshu Lakhara 的补丁)

Tests

  • bpo-32872:避免名称空间软件包的兼容性问题。

  • bpo-32517:修复由于未关闭KqueueSelector循环的传输而在 macOS 10.12.2 上失败test_asyncio的问题。

  • bpo-19417:添加 test_bdb.py。

Build

  • bpo-33163:将 pip 升级到 9.0.3,并将 setuptools 升级到 v39.0.1.

Windows

  • bpo-33016:修复可能在 nt._getfinalpathname 中使用未初始化的内存的问题

  • bpo-32903:如果当前目录设置为 UNC 路径,则修复 Windows 上 os.chdir()中的内存泄漏。

macOS

  • bpo-32726:为 macOS 10.6 安装程序构建并链接 Tcl/Tk 8.6 的私有副本。 10.9 安装程序变体已经做到了。这意味着 python.org macOS 安装程序提供的 Python 3.7 不再需要或使用系统提供或用户安装的 Tcl/Tk 的任何外部版本,例如 ActiveTcl。

IDLE

  • bpo-32984:运行启动文件时设置__file__。与 Python 一样,IDLE 可以选择在“Shell”窗口中运行一个启动文件,然后显示第一个交互式 Importing 提示。对于 IDLE,-s运行以环境变量 IDLESTARTUP PYTHONSTARTUP命名的文件; -r file运行file。 Python 在运行文件之前将__file__设置为启动文件名,并在第一个提示之前将其取消设置。现在,在没有-n选项的情况下,正常运行时,IDLE 会执行相同的操作。

  • bpo-32940:在 pyparse 中简化并重命名 StringTranslatePseudoMapping。

Tools/Demos

  • bpo-32885:为Tools/scripts/pathfix.py添加-n标志以禁用自动备份创建(后缀为~的文件)。

C API

  • bpo-33042:嵌入应用程序可以在调用 Py_Initialize 之前再次调用 PySys_ResetWarnOptions,PySys_AddWarnOption 和 PySys_AddXOption。

  • bpo-32374:证明可以使用 m_state = NULL 调用多阶段初始化模块的 m_traverse 并添加完整性检查

Python 3.7.0 beta 2

*发布日期:2018-02-27 *

Security

  • bpo-28414:现在,ssl 模块允许用户在使用 SNI 时执行自己的 IDN 编码/解码。

核心和内建函数

  • bpo-32889:更新 Valgrind 禁止列表以将Py_ADDRESS_IN_RANG重命名为address_in_range

  • bpo-31356:删除bpo-31356中添加的新 API(gc.ensure_disabled()上下文 Management 器)。

  • bpo-32305:对于名称空间包,请确保__file____spec__.origin都设置为 None。

  • bpo-32303:确保名称空间包的__spec__.loader__loader__匹配。

  • bpo-32711:修复了针对 Python/ast_unparse.c 的警告消息。 StéphaneWirtel 修补程序

  • bpo-32583:修复了使用自定义解码错误处理程序时,由于写越界错误而导致内置 Unicode 解码器崩溃的可能性。

Library

  • bpo-32960:对于数据类,禁止从非冻结类继承冻结,也不允许从冻结类继承非冻结。此限制将在将来的日期放宽。

  • bpo-32713:修复了 tarfile.itn 对越界浮点值的处理。 Joffrey Fuhrer 修补程序。

  • bpo-32951:现在禁止直接实例化 SSLSocket 和 SSLObject 对象。从未对构造函数进行文档记录,测试或将其设计为公共构造函数。用户应该使用 ssl.wrap_socket()或 SSLContext。

  • bpo-32929:删除三态参数“哈希”,然后添加布尔值“ unsafe_hash”。如果 unsafe_hash 为 True,则添加__hash_函数,但如果存在__hash__,则引发 TypeError。如果 unsafe_hash 为 False,则基于 eq =和 Frozen =的值添加__hash__。 unsafe_hash = False 行为与旧的 hash = None 行为相同。默认为 unsafe_hash = False,就像 hash = None 一样。

  • bpo-32947:添加 OP_ENABLE_MIDDLEBOX_COMPAT 并测试 TLSv1.3 的变通办法,以便将来与 OpenSSL 1.1.1 兼容。

  • bpo-30622:ssl 模块现在可以检测到 LibreSSL 中缺少 NPN 支持。

  • bpo-32922:dbm.open()现在使用文件系统编码而不是缺省编码来编码文件名。

  • bpo-32859:在os.dup2中,不要检查每个调用dup3 syscall 是否存在。

  • bpo-32556:nt._getfinalpathname,nt._getvolumepathname 和 nt._getdiskusage 现在可以正确地从字节转换。

  • bpo-25988:直接从collections而不是从collections.abc使用或导入 ABC 时,发出DeprecationWarning

  • bpo-21060:将 setup.py 上传的混乱消息从“在先前命令中没有创建 dist 文件”重写为更有用的“必须在一个命令中创建和上传文件”。

  • bpo-32852:确保在运行跟踪时 sys.argv 保留为列表。

  • bpo-31333_abc模块已添加。它是一个加速模块,具有abc中的各种Function和方法的 C 实现。创建 ABC 子类并使用 ABC 子类调用isinstanceissubclass的速度提高了 1.5 倍。此外,这使 Python 的启动速度提高了 10%。注意,新的实现隐藏了内部注册表和缓存,以前可以pass私有属性_abc_registry_abc_cache_abc_negative_cache访问。可以使用三种调试帮助程序方法来代替_dump_registry_abc_registry_clear_abc_caches_clear

  • bpo-32841:修复了asyncio.Condition问题,该问题在通知和取消条件锁定后默默地忽略了取消。由 Bar Harel 修补。

  • bpo-32819:ssl.match_hostname()已简化,不再依赖 re 和 ipaddress 模块获取通配符和 IP 地址。无效通配符的错误报告已得到改进。

  • bpo-32394:套接字:在运行时删除旧版本 Windows 上的 TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL 标志。

  • bpo-31787:修正了各种模块中__init__()方法的刷新。 (由 Oren Milman 提供)

  • bpo-30157:修复了仅引用最后一个字段时 csv.Sniffer.sniff()中的猜测引号和定界符。杰克·戴维斯(Jake Davis)的补丁。

  • bpo-32792:collections.ChainMap()保留基础 Map 的 Sequences。

  • bpo-32775fnmatch.translate()不再产生包含设置操作的模式。以'['开头或包含'–','&&','~~'或'||'的集合在以后的版本中,正则表达式中的解释将有所不同。目前,他们发出警告。 fnmatch.translate()现在避免意外生成包含此类集合的模式。

  • bpo-32622:为 Windows proactor 事件循环实现本机快速发送文件。

  • bpo-32777:在标记子进程中的 exec 上可继承的文件 Descriptors 时,修复了 POSIX 系统上子进程中罕见但潜在的 pre-exec 子进程死锁。此错误似乎已在 3.4 中引入。

  • bpo-32647:ctypes 模块过去依赖于 dlopen 的间接链接。现在,在带有 dl 的平台上,共享扩展已明确链接到 libdl。

  • bpo-32741:实施asyncio.TimerHandle.when()方法。

  • bpo-32691:使用 pdb 运行模块时,请使用 mod_spec.parent

  • bpo-32734:修复了asyncio.Lock()安全问题,该问题允许多次获取和锁定同一把锁,而无需释放它。由 Bar Harel 修补。

  • bpo-32727:不要在地址中的 SMTP 信封中包含名称字段。 StéphaneWirtel 修补程序

  • bpo-31453:添加 TLSVersion 常量和 SSLContext.maximum_version/minimum_version 属性。新的 API 包装了 OpenSSL 1.1 https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.htmlFunction。

  • bpo-24334:清除了 ssl 模块的内部实现细节。 SSLSocket 的间接层少一层。现在,所有者和会话信息由 SSLSocket 和 SSLObject 构造函数处理。通道绑定的实现已得到简化。

  • bpo-31848:当找不到 SSND 块时,修复 Aifc_read.initfp()中的错误处理。 Zackery Spytz 修补程序。

  • bpo-32585:将 Ttk Spinbox 小部件添加到tkinter.ttk。 Alan D Moore 修补程序。

  • bpo-32221:返回包含 IPv6 地址的 Tuples 的各种函数现在Ellipsis了%scope部分,因为相同的信息已经在* scopeid *Tuples 项中进行了编码。特别是它在接收多播数据包时加快了socket.recvfrom()的速度,因为Ellipsis了对网络接口名称的无用解析。

  • bpo-30693:现在,TarFile 类以可重现的方式递归目录。

  • bpo-30693:ZipFile 类现在以可重复的方式递归目录。

Documentation

  • bpo-28124:不再强调和弃用 ssl 模块函数 ssl.wrap_socket(),以便使用更安全有效的 SSLContext.wrap_socket()方法。

  • bpo-17232:澄清-O 和-OO 的文档。特里·里迪(Terry Reedy)的补丁。

  • bpo-32436:添加有关 contextvars 模块的文档(PEP 567)。

  • bpo-32800:更新到 w3c doc 的 xml 默认名称空间的链接。

  • bpo-11015:更新test.support文档。

  • bpo-8722:当属性get()方法引发AttributeError时,文档getattr()的行为。

  • bpo-32614:修改文档中的 RE 示例以使用原始字符串来防止DeprecationWarning并将文本添加到 REGEX HOWTO 中以突出显示不赞成使用的内容。

  • bpo-31972:改进pathlib.PurePath个子类的文档字符串。

Tests

  • bpo-31809:添加测试以验证与 secp ECDH 曲线的连接。

Build

  • bpo-32898:使用 COUNT_ALLOCS 修复 python 调试版本。

Windows

  • bpo-32901:将 Tcl 和 Tk 版本更新为 8.6.8

  • bpo-31966:修复了 WindowsConsoleIO.write()用于写入空数据的问题。

  • bpo-32409:确保 activate.bat 可以处理 Unicode 内容。

  • bpo-32457:改进了启动 Python 时对非规范化可执行路径的处理。

  • bpo-32370:对 uuid 模块中的 ipconfig 输出使用正确的编码。 Segev Finer 修补程序。

  • bpo-29248:修复 Windows 上的os.readlink(),它错误地将重解析数据缓冲区的PrintNameOffset字段视为多个字符而不是字节。 Craig Holmquist 和 SSE4 的补丁。

macOS

  • bpo-32901:将 macOS 10.9 安装程序更新为 Tcl/Tk 8.6.8.

IDLE

  • bpo-32916:将 pyparse 中的str更改为code

  • bpo-32905:删除 pyparse 模块中未使用的代码。

  • bpo-32874:添加 pyparse 测试。

  • bpo-32837:对 IDLE 的系统文件和与位置无关的文件,将系统和与位置有关的默认编码用于 open()是个坏主意。

  • bpo-32826:在 IDLE 的 test_help_about 中的 open()中添加“ encoding = utf-8”。 GUI 测试 test_file_buttons()仅查看仅以 ascii 开头的行,但在 open()默认为'ascii'的系统上失败,因为 readline()在内部进行了足够远的读取和解码,从而在 CREDITS.txt 中遇到了非 ascii 字符。

  • bpo-32765:更新 configdialog 的“常规”选项卡文档字符串,以将新的窗口小部件添加到窗口小部件列表中。

Tools/Demos

  • bpo-32222:修复 pygettext 不会为带有类型 Comments 参数的函数提取文档字符串的问题。 Toby Harradine 修补程序。

Python 3.7.0 beta 1

*发布日期:2018-01-30 *

核心和内建函数

  • bpo-32703:在定稿时设置了活动错误时,修复协程的 ResourceWarning。

  • bpo-32650:Pdb 和其他依赖 bdb.py 的调试器将正确跳过(下一命令)本机协程。 Pablo Galindo 修补程序。

  • bpo-28685:尽可能使用类型专用比较来优化 list.sort()和 sorted()。

  • bpo-32685:当 Python 2 形式的 print 语句与复合语句的标题位于同一行或以分号而不是换行符终止时,改进建议。 Nitish Chandra 修补程序。

  • bpo-32697:Python 现在可以显式保留仅关键字参数的定义 Sequences。它始终保留其 Sequences,但是以前从未保证过这种行为。现在可以保证并测试这种行为。

  • bpo-32690:现在,locals()词典以词汇 Sequences 显示已定义变量。以前,Sequences 是相反的。

  • bpo-32677:向strbytesbytearray添加.isascii()方法。它可以用来测试字符串仅包含 ASCII 字符。

  • bpo-32670:对所有代码强制执行 PEP 479。这意味着禁止所有代码从生成器手动引发 StopIteration 异常,无论是否使用了'from future import generator_stop'。

  • bpo-32591:添加了对协程对象起源的内置支持;请参阅 sys.set_coroutine_origin_tracking_depth 和 CoroutineType.cr_origin。这代替了异步调试模式对本地协程对象使用协程包装的方式。

  • bpo-31368:在 os 模块中公开 preadv 和 pwritev 系统调用。 Pablo Galindo 的补丁

  • bpo-32544hasattr(obj, name)getattr(obj, name, default)的速度比未找到nameobj不会覆盖__getattr____getattribute__时快约 4 倍。

  • bpo-26163:改进了 Frozenset()哈希值,以便在面对包含许多相似值的数据集时创建更多不同的哈希值。

  • bpo-32550:删除 STORE_ANNOTATION 字节码。

  • bpo-20104:将 posix_spawn 公开为 os 模块中的低级 API。 (在 3.7.0rc1 之前删除)

  • bpo-24340:固定的代码堆栈大小估计。

  • bpo-32436:实现 PEP 567上下文变量。

  • bpo-18533repr()包含自己的values()items()的字典不再提高RecursionError; OrderedDict 与此类似。相反,与其他递归结构一样,使用...。 Ben North 的补丁。

  • bpo-20891:Py_Initialize()现在创建 GIL。当在非 Python 线程中调用 PyGILState_Ensure()时,不再“按需”创建 GIL 来解决竞争条件。

  • bpo-32028:现在,在生成将 Py2 打印语句转换为 Py3 内置打印函数调用的建议时,可以正确地忽略前导空格。 Sanyam Khurana 修补程序。

  • bpo-31179:使 dict.copy()快 5.5 倍。

  • bpo-31113:摆脱了正常控制流的编译器中的递归。

Library

  • bpo-25988:不建议在常规 collections 模块中公开 collections.abc 的内容。

  • bpo-31429:ssl 模块的默认密码套件选择现在使用黑名单方法,而不是硬编码白名单。 Python 不再重新启用已被 OpenSSL 安全更新阻止的密码。可以在编译时配置默认密码套件选择。

  • bpo-30306:现在,一旦进入上下文 Management 器,contextlib.contextmanager 就会释放传递给基础生成器的参数。以前,即使上下文 Management 器处于活动状态,即使它们不用作函数装饰器,它们也可以保持活动状态。 Martin Teichmann 的补丁。

  • bpo-21417:添加了对设置 zipfile.ZipFile 的压缩级别的支持。

  • bpo-32251:实现 asyncio.BufferedProtocol(临时 API)。

  • bpo-32513:在数据类中,无需指定装饰器参数即可轻松覆盖 dunder 方法。

  • bpo-32660termios在 Solaris /衍生产品下也提供FIONREADFIONCLEXFIOCLEXFIOASYNCFIONBIO

  • bpo-27931:修复用户名为空的带引号的字符串时电子邮件地址 Headers 解析错误。张翔的补丁。

  • bpo-32659:在 Solaris 及其衍生版本中,os.stat_result提供了 st_fstype 属性。

  • bpo-32662:实现 Server.start_serving(),Server.serve_forever()和 Server.is_serving()方法。在 loop.create_server()和 loop.create_unix_server()中添加关键字“ start_serving”。

  • bpo-32391:实现asyncio.StreamWriter.wait_closed()asyncio.StreamWriter.is_closing()方法

  • bpo-32643:将 Task._step,Task._wakeup 和 Future._schedule_callbacks 方法设为私有。

  • bpo-32630:重构十进制模块以使用 contextvars 存储十进制上下文。

  • bpo-32622:添加asyncio.AbstractEventLoop.sendfile()方法。

  • bpo-32304:distutils 的上载命令不再破坏以 CR 字节结尾的 tar 文件,并且不再try在任何上载文本字段中将 CR 转换为 CRLF。

  • bpo-32502:如果遇到 64 位硬件地址,则 uuid.uuid1 不再引发异常。

  • bpo-32596concurrent.futures懒惰地导入ThreadPoolExecutorProcessPoolExecutor(使用 PEP 562)。它使import asyncio大约快 15%,因为 asyncio 默认情况下仅使用ThreadPoolExecutor

  • bpo-31801:将_ignore_添加到Enum,以便可以在类构造期间使用临时变量,而不必将其转变为成员。

  • bpo-32576:在可以从 weakref 回调中调用的地方使用 queue.SimpleQueue()。

  • bpo-32574:修复 asyncio.Queue 中的内存泄漏,当队列的大小有限且已满时,取消 queue.put()可能会导致内存泄漏。补丁:JoséMelero。

  • bpo-32521:nis 模块现在与新的 libnsl 和 Headers 位置兼容。

  • bpo-32467:collections.abc.ValuesView 现在继承自 collections.abc.Collection。

  • bpo-32473:提高 ABCMeta._dump_registry()输出的可读性

  • bpo-32102:subprocess.run 的新参数capture_output

  • bpo-32521:glibc 已删除 Sun RPC。在 nis 模块中使用替换的 libtirpcHeaders 和库。

  • bpo-32493:UUID 模块修复了 FreeBSD/OpenBSD 的构建

  • bpo-32503:协议 4 的 Pickling 不再创建太小的帧。

  • bpo-29237:为 pstats 排序选项创建枚举

  • bpo-32454:向套接字模块添加 close(fd)函数。

  • bpo-25942:现在,在 subprocess.call,subprocess.run 或 Popen 上下文 Management 器中处理 Ctrl-C KeyboardInterrupt 时,子流程模块更加优雅。现在,在 continueKeyboardInterrupt 异常处理之前,它会 await 一小段时间让子级(假定也已获得 SIGINT)退出。它仍然在 call()和 run()API 中包含 SIGKILL,但至少孩子首先有机会。

  • bpo-32433:hmac 模块现在具有 hmac.digest(),它提供了优化的 HMAC 摘要。

  • bpo-28134:默认情况下,套接字现在可以从文件 Descriptors 中自动检测家族,类型和协议。

  • bpo-32404:修复了datetime.datetime.fromtimestamp()没有在datetime.datetime子类中调用__new_的错误。

  • bpo-32403:提高了datetime.datedatetime.datetime备用构造函数的速度。

  • bpo-32228:确保truncate()在写入时间超过缓冲区大小后保留文件位置(由tell()报告)。

  • bpo-32410:实现loop.sock_sendfile用于异步事件循环。

  • bpo-22908:向 ZipExtFile 类添加了查找和告知。这仅在用于打开 zipfile 的文件对象可搜索时才有效。

  • bpo-32373:添加 socket.getblocking()方法。

  • bpo-32248:添加importlib.resourcesimportlib.abc.ResourceReader作为用于读取包中包含的资源的统一 API。希望支持资源读取的加载程序必须实现get_resource_reader()方法。基于文件的加载器和基于 zipimport 的加载器均实现了这些 API。反对使用importlib.abc.ResourceLoader来支持这些新 API。

  • bpo-32320:collections.namedtuple()现在支持默认值。

  • bpo-29302:添加 contextlib.AsyncExitStack。 Alexander Mohr 和 Ilya Kulakov 的补丁。

  • bpo-31961在 Python 3.7.0b2 中已删除. subprocess.Popen 的* args 参数现在可以是path-like object。如果将 args *作为序列给出,则它的第一个元素现在也可以是path-like object

  • bpo-31900locale.localeconv()函数现在将LC_CTYPE区域设置临时设置为LC_NUMERIC区域设置,以解码decimal_pointthousands_sep字节字符串(如果它们是非 ASCII 或长于 1 个字节),并且LC_NUMERIC区域设置不同于LC_CTYPE区域设置。此临时更改会影响其他线程。格式化具有n类型(例如'{:n}'.format(1234))的数字(intfloatfloat和子类)时,str.format()方法的更改相同。

  • bpo-31853:在 SSLSocket 中使用 super()。method 而不是 socket.method。他们最有可能是出于遗留原因。

  • bpo-31399:ssl 模块现在使用 OpenSSL 的 X509_VERIFY_PARAM_set1_host()和 X509_VERIFY_PARAM_set1_ip()API 来验证主机名和 IP 地址。可以使用 SSLContext.hostname_checks_common_name 禁用主题公用名回退。

  • bpo-14976:添加一个 queue.SimpleQueue 类,它是一个无限制的 FIFO 队列,具有 put()的可重入 C 实现。

Documentation

  • bpo-32724:在 Pdb 文档中添加对某些命令的引用。 StéphaneWirtel 修补程序

  • bpo-32649:使用新添加的每个操作码事件来完成 C API 文档,性能分析和跟踪部分。

  • bpo-17799:说明 sys.settrace 和 sys.setprofile 及其对应的 C-API 的真实行为,与每个函数中接收的事件类型有关。 Pablo Galindo Salgado 修补程序。

Tests

  • bpo-32721:如果未构建_md5 模块,则将 test_hashlib 修复为不会失败。

  • bpo-28414:添加 IDNA 2003 和 2008 主机名的测试用例。自bpo-31399登陆以来,IDNA 2003 国际化主机名一直在起作用。 IDNA 2008 仍未解决。

  • bpo-32604:添加一个新的“ _xxsubinterpreters”扩展模块,该模块公开了现有的子解释器 C-API 和新的交叉解释器数据共享机制。该模块主要用于对现有子解释器支持进行更彻底的测试。请注意,_xxsub 解释器模块已在 3.7.0rc1 中删除。

  • bpo-32602:添加测试证书,并测试 ECDSA 证书和 EC/RSA 双模式。

  • bpo-32549:在 Travis CI 上,Python 现在可以编译并使用 OpenSSL 1.1.0g 的本地副本进行测试。

Build

  • bpo-32635:修复了在系统上提供 libxcrypt 而不是 libcrypt 时 crypt 模块的段错误。

  • bpo-32598:使用 autoconf 检测 OpenSSL 库,Headers 和支持的Function。 ax_check_openssl M4 宏使用 pkg-config 定位 OpenSSL,并退回到手动搜索。

  • bpo-32593:删除对 FreeBSD 9 及更早版本的支持。

  • bpo-29708:如果设置了 SOURCE_DATE_EPOCH环境变量,则py_compile将始终创建基于散列的.pyc文件。

Windows

  • bpo-32588:创建独立的_distutils_findvs 模块,并将缺少的_queue 模块添加到安装程序。

  • bpo-29911:确保分别显示“修改”和“卸载”按钮。

  • bpo-32507:使用应用程序本地 UCRT 安装,而不是对 Windows 的旧版本进行适当的更新。

macOS

  • bpo-32726:提供其他更现代的 macOS 安装程序变体,仅支持 64 位模式下的 macOS 10.9 系统。将提供的第三方库升级到 OpenSSL 1.1.0g 和 SQLite 3.22.0. 10.9 安装程序现在与 Tcl/Tk 8.6 链接并提供其自己的副本。

  • bpo-28440:不再将/Library/Python/3.x/site-packages 添加到 macOS 框架构建的 sys.path 中,以避免将来发生冲突。

C API

  • bpo-32681:在 os.dup2 的 C 实现中修复未初始化的变量'res'。 StéphaneWirtel 修补程序

  • bpo-10381:向datetime.timezone构造函数和datetime.timzone.UTC单例添加 C API 访问。

Python 3.7.0 alpha 4

*发布日期:2018-01-08 *

核心和内建函数

  • bpo-31975:现在,默认警告过滤器列表以“ default :: DeprecationWarning:__ main__”条目开头,因此默认情况下,弃用警告会再次在单文件脚本和交互式提示中再次显示。

  • bpo-32226__class_getitem__现在是一种自动分类方法。

  • bpo-32399:使用 libc.a 中的 uuid_create()为 RFC4122 添加 AIX uuid 库支持

  • bpo-32390:将 f_fsid 字段添加到 os.statvfs()(bpo-32143)返回的对象后,修复了 AIX 上的编译失败。 Michael Felt 的原始补丁。

  • bpo-32379:当类从单个 Base Class 继承时,使 MRO 计算更快。

  • bpo-32259:现在更具体地说明了不可拆包时引发的 TypeError 错误消息。

  • bpo-27169__debug__常量现已在编译时优化。这也修复了bpo-22091

  • bpo-32329:现在,当 PYTHONHASHSEED环境变量设置为0时,-R选项打开散列随机化。以前,该选项被忽略。此外,当passPYTHONHASHSEED=0关闭哈希随机化时,sys.flags.hash_randomization现在正确设置为 0.

  • bpo-30416:现在可以避免优化器花费大量时间进行复杂的计算,也不必花费大量内存来在常量折叠中创建大常量。可以不断折叠产生的常数的增加的限制。

  • bpo-32282:修复 Windows 套接字模块中的 VersionHelpers.h 包含中不必要的 ifdef。

  • bpo-30579:实现 TracebackType .__ new_以允许在 Python 级别创建回溯对象,并使 TracebackType.tb_next 可变。

  • bpo-32260:不要在 big-endian 平台上将 Importing 密钥字节交换为 SipHash 算法。这应确保 siphash 在各个平台上都能提供一致的结果。

  • bpo-31506:改进 object .__ new_和 object .__ init_的错误消息逻辑。 Sanyam Khurana 修补程序。

  • bpo-20361-b-bb现在将'default::BytesWarning'error::BytesWarning条目注入sys.warnoptions,确保它们优先于pass-W选项或PYTHONWARNINGS环境变量配置的任何其他警告过滤器。

  • bpo-32230-X dev现在将'default'项注入 sys.warnoptions 中,以确保其行为与在命令行中实际传递-Wdefault相同。

  • bpo-29240:添加新的 UTF-8 模式: PEP 540的实现。

  • bpo-32226 PEP 560:添加对__mro_entries____class_getitem__的支持。由 Ivan Levkivskyi 实施。

  • bpo-32225 PEP 562:添加对模块__getattr____dir__的支持。由 Ivan Levkivskyi 实施。

  • bpo-31901atexit模块现在具有每个解释器存储的回调。

  • bpo-31650:实施 PEP 552(确定性 pycs)。 Python 现在支持使无效化在源内容哈希上而不是源上次修改时间的字节码缓存文件无效。

  • bpo-29469:将常量折叠从字节码层移到 AST 层。 Eugene Toder 的原始补丁。

Library

  • bpo-32506:现在,将 dict 定义为保留插入 Sequences,删除 OrderedDict 并仅使用普通 dict。

  • bpo-32279:将参数添加到 dataclasses.make_dataclasses():init,repr,eq,order,hash 和 frozen。将它们传递给 dataclass()。

  • bpo-32278:使类型信息在 dataclasses.make_dataclass()上为可选。如果Ellipsis,则使用字符串“ typing.Any”。

  • bpo-32499:添加 dataclasses.is_dataclass(obj),如果 obj 是一个数据类或一个实例,则返回 True。

  • bpo-32468:改进框架 repr()以提及文件名,代码名称和当前行号。

  • bpo-23749:异步:实施 loop.start_tls()

  • bpo-32441:从os.dup2返回新的文件 Descriptors(即第二个参数)。以前,总是返回None

  • bpo-32422functools.lru_cache使用较少的内存(每个高速缓存的密钥 3 个字),并为循环 GC 花费大约 1/3 的时间。

  • bpo-31721:防止将 Future._log_traceback 手动设置为 True 时发生 Python 崩溃。现在只能将其设置为 False,否则会引发 ValueError。

  • bpo-32415:异步:添加 Task.get_loop()和 Future.get_loop()

  • bpo-26133:不要在解释器关闭时在 asyncio UNIX 事件循环中取消订阅 signal。

  • bpo-32363:使 asyncio.Task.set_exception()和 set_result()引发 NotImplementedError。 Task.step()和 Future ._ await __()处于无效状态时会引发适当的异常,而不是引发 AssertionError。

  • bpo-32357:针对 nonlocal 协程优化 asyncio.iscoroutine()和 loop.create_task()(例如,用 Cython 编译的 async/await)。 'loop.create_task(python_coroutine)'过去比'loop.create_task(cython_coroutine)'快 20%。现在,后者是如此之快。

  • bpo-32356:asyncio.transport.resume_reading()和 pause_reading()现在是幂等的。添加了新的 transport.is_reading()方法。

  • bpo-32355:优化 asyncio.gather();现在提高了 15%。

  • bpo-32351:如果 delay <0(2 倍提升),请在 asyncio.sleep 中使用 fastpath

  • bpo-32348:优化 asyncio.Future 日程安排/添加/删除回调。优化显示,异步/await 代码的性能提高了 3-6%。

  • bpo-32331:修复 socket.settimeout()和 socket.setblocking()以保持 socket.type 不变。修复 socket.socket()构造函数以重置应用于套接字类型的所有位标志。此更改仅影响具有 SOCK_NONBLOCK 和/或 SOCK_CLOEXEC 的 os。

  • bpo-32248:将importlib.abc.ResourceReader添加为装载程序的 ABC,以提供用于读取包中包含的资源的统一 API。还要将importlib.resources添加为importlib_resources的端口。

  • bpo-32311:实现 asyncio.create_task(coro)快捷方式

  • bpo-32327:将记录为协程的异步Function转换为协程。受影响的Function:loop.sock_sendall,loop.sock_recv,loop.sock_accept,loop.getaddrinfo,loop.getnameinfo。

  • bpo-32323urllib.parse.urlsplit()现在不会将主机名中范围内的 IPv6 地址的 zone-id(作用域)转换为小写。

  • bpo-32302:修复了 CRT v142 的 distutils 的 bdist_wininst:它与 CRT v140 二进制兼容。

  • bpo-29711:修复stop_serving在异步 proactor 循环中杀死所有侦听服务器

  • bpo-32308re.sub()现在替换与先前的非空匹配项相邻的空匹配项。

  • bpo-29970:如果握手在 10 秒钟内未完成,则中止 asyncio SSLProtocol 连接

  • bpo-32314:实现 asyncio.run()。

  • bpo-17852:基于对_Py_PyAtExit()语义的误解,还原错误的修复程序。

  • bpo-32296:在 C 语言中实现 asyncio._get_running_loop()和 get_event_loop()。这使它们快 4 倍。

  • bpo-32250:实施asyncio.current_task()asyncio.all_tasks()。添加打算供替代任务实现使用的助手:asyncio._register_taskasyncio._enter_taskasyncio._leave_taskasyncio._unregister_task。弃用asyncio.Task.current_task()asyncio.Task.all_tasks()

  • bpo-32255:现在,将单个空字段写入 CSV 文件时总是用引号引起来。这样可以将空行与包含单个空字段的行区分开。 Licht Takeuchi 修补程序。

  • bpo-32277:在不支持chmod(..., follow_symlinks=False)的平台上提高NotImplementedError而不是SystemError。 Anthony Sottile 修补程序。

  • bpo-30050:用于 signal.set_wakeup_fd 的新参数 warn_on_full_buffer 可让您控制唤醒 fd 缓冲区溢出时 Python 是否在 stderr 上打印警告。

  • bpo-29137fpectl库已被删除。默认情况下,它从未启用,在 x86-64 上也无法正常工作,并且它以导致意外扩展 C 扩展的方式更改了 Python ABI。

  • bpo-32273:将 asyncio.test_utils 移至 test.test_asyncio。

  • bpo-32272:删除 asyncio.async()函数。

  • bpo-32269:添加 asyncio.get_running_loop()函数。

  • bpo-32265:现在,inspect.classify_class_attrs()可以正确地对所有内置类型的类和静态方法进行分类,并在 pydoc 输出中进行分组。为内置类型的未绑定类方法添加了 types.ClassMethodDescriptorType。

  • bpo-32253:为异步同步 Primitives 弃用yield from lockawait lockwith (yield from lock)with await lock

  • bpo-22589 :. bmp 的 MIME 类型从“ image/x-ms-bmp”更改为“ image/bmp”

  • bpo-32193:将 asyncio 转换为使用* async/await *语法。仍然支持旧样式yield from

  • bpo-32206:添加支持以使用 pdb 运行模块

  • bpo-32227functools.singledispatch现在支持使用类型 Comments 注册实现。

  • bpo-15873:添加了新的备用构造函数datetime.datetime.fromisoformat()datetime.time.fromisoformat()datetime.date.fromisoformat()作为每个类各自的isoformat方法的逆运算。

  • bpo-32199:getnode()ip getter 现在使用“ ip link”而不是“ ip link list”。

  • bpo-32143:os.statvfs()包含 statvfs(2)中的 f_fsid 字段

  • bpo-26439:pass实现 ctypes._aix.find_library()来为 AIX 修复 ctypes.util.find_library()修补程序:Michael Felt

  • bpo-31993:现在,将大字节和 str 对象序列化为文件时,pickler 使用的内存更少。用协议 4 创建的 pickle 需要较少的内存来解泡大字节和 str 对象。

  • bpo-27456:确保在 Linux 上设置了 TCP_NODELAY。 Victor Stinner 的测试。

  • bpo-31778:ast.literal_eval()现在更加严格。不再允许对任意数字进行加减。

  • bpo-31802:即使仍未导入os模块,现在也可以导入本机路径模块(posixpathntpath)。

  • bpo-30241:添加 contextlib.AbstractAsyncContextManager。 Jelle Zijlstra 修补程序。

  • bpo-31699:当任务参数或结果导致出现 Pickling 或 Pickling 错误时,修复concurrent.futures.ProcessPoolExecutor中的死锁。这应该确保对ProcessPoolExecutor API 的调用总是finally返回。

  • bpo-15216TextIOWrapper.reconfigure()支持更改* encoding errors newline *。

Documentation

  • bpo-32418:将 get_loop()方法添加到 Server 和 AbstractServer 类。

Tests

  • bpo-32252:修复了测试崩溃时用来防止核心转储文件的 faulthandler_suppress_crash_report()。 getrlimit()成功返回零。

  • bpo-32002:针对空的语言环境和 POSIX 语言环境,调整 C 语言环境强制测试,以更轻松地适应平台相关的行为。

Windows

  • bpo-19764:在 Windows 上实现对subprocess.Popen(close_fds=True)的支持。 Segev Finer 修补程序。

Tools/Demos

  • bpo-24960:2to3 和 lib2to3 现在可以使用 pkgutil.get_data()读取腌制的语法文件,而不是探测文件系统。从 zip 文件运行时,这可以使 2to3 和 lib2to3 正常工作。

C API

  • bpo-32030:如果未设置PYTHONMALLOC环境变量,则 Py_Initialize()不会将内存分配器重置为默认值。

  • bpo-29084:有限 C API 中已排除了 OrderedDict 的未记录 C API。它是错误添加的,实际上在有限的 C API 中从未使用过。

  • bpo-32264:将 pygetopt.hHeaders 移至 internal /,因为它没有公共 API。

  • bpo-32241Py_SetProgramName()Py_SetPythonHome()现在采用const wchar *参数而不是wchar *

Python 3.7.0 alpha 3

*发布日期:2017-12-05 *

核心和内建函数

  • bpo-32176:现在,代码对象构造函数始终可以基于 freevars 和 cellvars 正确设置 co_flags.CO_NOFREE,而不必由调用方正确设置。这样可以确保在将其他单元格引用注入到修改后的代码对象和函数中后,将自动清除它。

  • bpo-10544:现在,在理解和生成器表达式中不建议使用 yield 表达式。最外层可迭代的定义中仍然允许使用它们,因为直接在封闭范围内对其进行评估。

  • bpo-32137:深度嵌套的 dict 的 repr 现在引发 RecursionError 而不是由于堆栈溢出而崩溃。

  • bpo-32096:还原 C API 中的内存分配器更改:将结构从_PyRuntime 移回 Objects/obmalloc.c。内存分配器再次被静态初始化,因此可以在_PyRuntime_Initialize()之前调用 PyMem_RawMalloc()和 Py_DecodeLocale()。

  • bpo-32043:添加新的“开发人员模式”:新的“ -X dev”命令行选项以在运行时启用调试检查。

  • bpo-32023:现在,当使用不带括号的生成器表达式而不是类定义中的继承列表时,可以正确引发 SyntaxError。只能在调用时Ellipsis括号的重复。

  • bpo-32012:现在,当不带括号的生成器表达式作为参数传递但后跟逗号时,可以正确引发 SyntaxError。生成器表达式始终必须直接在一组括号内,并且两边都不能有逗号。

  • bpo-28180:已添加新的内部_Py_SetLocaleFromEnv(category)帮助器函数,以提高不同libc实现之间行为的一致性(例如,Android 默认不支持从环境设置区域设置)。

  • bpo-31949:修复了打印回溯(PyTraceBack_Print())中的几个问题。现在将 sys.tracebacklimit 设置为 0 或更小将抑制打印回溯。现在将 sys.tracebacklimit 设置为 None 将导致使用默认限制。将 sys.tracebacklimit 设置为大于 LONG_MAX 的整数现在意味着使用限制 LONG_MAX 而不是默认限制。修复了 Windows 上超过 2 ** 31 个回溯项的整数溢出问题。修复了输出错误处理。

  • bpo-30696:修复没有内存的情况下无限循环的交互式解释器。

  • bpo-20047:已记录,字节数组方法 partition()和 rpartition()现在仅接受类似字节的对象作为分隔符。特别是,当将整数作为分隔符传递时,它们现在引发 TypeError 而不是返回假结果。

  • bpo-21720:当__import__()的* fromlist *参数或模块的__all__属性包含字节实例时,不再发出 BytesWarning。

  • bpo-31845:在解释器启动时再次正确读取环境变量。

  • bpo-28936:确保在给定范围内首先检测到涉及参数和globalnonlocal的词法第一语法错误。 Ivan Levkivskyi 的补丁。

  • bpo-31825:修复了对转义的非 ASCII 字节进行解码时,在'unicode-escape'编解码器和 codecs.escape_decode()中发生 OverflowError 的问题。

  • bpo-31618:已更改 3.7a1 中添加的每帧跟踪逻辑,以便在发出"line""opcode"事件之前更新frame->f_lineno。以前,操作码事件首先发出,因此偶尔会在帧上看到陈旧的行号。结果,此Function的行为已略有变化:同时启用f_trace_linesf_trace_opcodes时,首先发生线路事件。

  • bpo-28603:即使解释器中的某个异常不可散列或与以后的异常比较,也可以在解释器 Export 上显示完整的上下文/原因异常链。 Zane Bitter 修补程序。

  • bpo-31786:修复选择模块中的超时舍入,以正确地在-1.0 到 0.0 之间舍入负超时。这些Function现在可以按预期阻止 await 事件。以前,该呼叫被错误地非阻塞。 Pablo Galindo 修补程序。

  • bpo-31781:防止在调用未初始化的zipimport.zipimporter对象的方法时发生崩溃。 Oren Milman 修补程序。

  • bpo-30399:具有单个参数的 BaseException 的标准 repr()不再包含多余的尾部逗号。

  • bpo-31626:修复了调试内存分配器中的错误。缩小内存块后,对释放的内存进行了写操作。

  • bpo-30817PyErr_PrintEx()现在清除_PySys_SetObjectId()可能引发的被忽略的异常,例如,当没有内存时。

Library

  • bpo-28556typing模块的两个较小修复:允许浅复制通用类的实例,改进__init_subclass__与通用的交互。 Ivan Levkivskyi 的原始 PR。

  • bpo-32214:PEP 557,数据类。提供一个装饰器,该装饰器将样板方法添加到使用类型 Comments 的类中,从而指定字段。

  • bpo-27240:新电子邮件策略的 Headers 折叠算法已被重写,还修复了bpo-30788bpo-31831bpo-32182。特别是,RFC2231 折叠现在可以正确完成。

  • bpo-32186:io.FileIO.readall()和 io.FileIO.read()现在在获取文件大小时释放 GIL。修复了无法访问的 NFS 服务器导致所有线程挂起的问题。 Nir Soffer 的补丁。

  • bpo-321010:添加sys.flags.dev_mode标志

  • bpo-32154asyncio.windows_utils.socketpair()函数已被删除:直接使用socket.socketpair(),此版本自 Python 3.5 起在所有平台上都可用(以前在 Windows 上不可用)。 asyncio.windows_utils.socketpair()只是 Python 3.5 和更高版本上socket.socketpair的别名。

  • bpo-32089:警告:在开发(-X dev)和调试模式(pydebug 构建)中,在默认警告过滤器中对 ResourceWarning 使用“默认”操作,而不是“始终”操作。

  • bpo-32107uuid.getnode()现在优先于本地 Management 的 MAC 地址返回通用 Management 的 MAC 地址(如果可用)。这为从uuid.uuid1()返回的 UUID 的全局唯一性提供了更好的保证。如果只有本地 Management 的 MAC 地址可用,则返回找到的第一个此类 MAC 地址。

  • bpo-23033:现在,主机名支持通配符,当通配符是ssl.match_hostname()的第二个参数时,它是主机名最左侧部分中的唯一字符。 Mandeep Singh 修补程序。

  • bpo-12239:当 property 的值为VT_EMPTY时,使msilib.SummaryInformation.GetProperty()返回None。 Mark Mc Mahon 的最初补丁。

  • bpo-28334:使用os.path.expanduser()netrc.netrc中找到~/.netrc文件。如果不存在,则引发FileNotFoundError。 Dimitri Merejkowsky 的补丁。

  • bpo-32121:使tracemalloc.Traceback的行为更像 traceback 模块,将帧从最旧到最新排序。 Traceback.format()现在接受负数* limit ,将结果截断为abs(limit)最旧的帧。要获得旧的行为,可以对Traceback.format()使用新的 most_recent_first *参数。 (由 Jesse Bakker 修补.)

  • bpo-31325:修复RobotFileParser.parse()方法中对collections.namedtuple()的错误使用。 Robin Wellner 的最初补丁。

  • bpo-12382msilib.OpenDatabase()现在无法打开或创建 MSI 文件时,会引发更好的异常消息。 WilliamTisäter 的最初补丁。

  • bpo-19610setup()现在警告某些字段的类型无效。现在,当未将classifierskeywordsplatforms字段指定为列表或字符串时,distutils.dist.Distribution类会发出警告。

  • bpo-32071:在python -m unittest中添加了-k命令行选项,以仅运行与给定模式匹配的测试。

  • bpo-10049:向 contextlib 添加了* nullcontext *无操作上下文 Management 器。在处理可选的上下文 Management 器时,这为 ExitStack()提供了一种更简单,更快的替代方法。

  • bpo-28684:新的 test.support.skip_unless_bind_unix_socket()装饰器在此处用于跳过失败的异步测试,因为该平台缺少针对 unix 域套接字的Function bind()函数(在最新的 Android 版本上,非超级用户就是这种情况)现在以强制模式运行 SELinux)。

  • bpo-32110codecs.StreamReader.read(n)现在为非负* n 返回不超过 n *个字符/字节。这使其与其他类似文件的对象的read()方法兼容。

  • bpo-27535:对于警告过滤器的“忽略”操作,警告模块不再在隐藏的警告注册表中泄漏内存。 warn_explicit()函数不再将“忽略”操作的警告键添加到注册表中。

  • bpo-32088:警告:当构建 Python 为调试模式(Py_DEBUG)时,默认情况下现在显示DeprecationWarningPendingDeprecationWarningImportWarning警告。

  • bpo-1647489:修复了搜索可能与空字符串匹配的正则表达式模式的问题。匹配空字符串后,现在可以正确找到非空字符串。

  • bpo-25054:添加了对可能与空字符串匹配的模式进行分割的支持。

  • bpo-32072:解决了二进制 plists 的问题:修复了保存字节数组的问题。相同的对象将只保存一次。相等的引用将作为相同的对象加载。添加了对保存和加载递归数据结构的支持。

  • bpo-32069:从 asyncio ssl 删除旧版 SSL 传输。始终使用 MemoryBIO。

  • bpo-32066:异步:在 create_unix_connection 中支持 pathlib.Path; sock arg 应该是可选的

  • bpo-32046:更新 2to3,以从 operator.isCallable(obj)转换为 callable(obj)。罗东熙的补丁。

  • bpo-32018:如果参数具有 Comments 和默认值,则 inspect.signature 应该紧跟 PEP 8。罗东熙的补丁。

  • bpo-32025:添加 time.thread_time()和 time.thread_time_ns()

  • bpo-32037:现在,将使用 INT 操作码对协议 0 进行 Pickling,以将适合有符号 32 位整数的整数进行 Pickling。这将减小 pickle 的大小,加快 Pickling 和解酸的速度,并使这些整数作为 Python 2 中的 int 实例被解酸。

  • bpo-32034:使 asyncio.IncompleteReadError 和 LimitOverrunError 可腌制。

  • bpo-32015:修复了在 await 对套接字的异步读/写期间重新连接套接字的情况下异步循环。

  • bpo-32011:恢复了对使用 TYPE_INT64 代码加载封送文件的支持。这些文件可以在 Python 2.7 中生成。

  • bpo-28369:增强 add_reader/writer 的Function,以检查某些传输未使用套接字。以前,仅支持使用 int FD 调用 add_reader/writer 的情况。现在,对于所有类似文件的对象,检查已正确实现。

  • bpo-31976:刷新刷新文件时的竞争状态很慢,如果从另一个线程关闭文件,则可能导致段错误。

  • bpo-31985:正式弃用 aifc.openfp,sunau.openfp 和 wave.openfp。自从 1993 年更改 7bc817d5ba917528e8bd07ec461c635291e7b06a 以来,由于向后兼容,三个模块中的每个模块中的 openfp 都一直指向该模块的开放Function,尽管它未经测试也没有记录。

  • bpo-21862:cProfile 命令行现在接受-m module_name作为脚本路径的替代。 Sanyam Khurana 修补程序。

  • bpo-31970:减少异步调试模式的性能开销。

  • bpo-31843:sqlite3.connect()的* database *参数现在接受path-like object,而不仅仅是一个字符串。

  • bpo-31945:为HTTPConnectionHTTPSConnection添加可配置的* blocksize *,以提高上传吞吐量。 Nir Soffer 的补丁。

  • bpo-31943:向asyncio.Handle添加cancelled()方法。 Marat Sharafutdinov 的补丁。

  • bpo-9678:修复了在 uuid 模块中确定 MAC 地址的问题:在 NetBSD 和 OpenBSD 上使用 ifconfig。在 Linux,FreeBSD,NetBSD 和 OpenBSD 上使用 arp。基于 Shimizukawa Takayuki 的补丁。

  • bpo-30057:在 signal.signal()中修复潜在的丢失 signal。

  • bpo-31933:在大字节序平台上修复 Blake2 参数 leaf_size 和 node_offset。 Jack O'Connor 修补程序。

  • bpo-21423:向\ {Process,Thread} PoolExecutor 添加一个初始化程序参数

  • bpo-31927:修复了 NetBSD 8 上套接字模块的编译。修复了在 NetBSD 和 DragonFly BSD 上解析 AF_BLUETOOTH 地址时 assert 失败或读取任意数据的问题。

  • bpo-27666:当类型 chtype 或 mmask_t 的大小小于 C long 的大小时,修复了 curses.box()和 curses.ungetmouse()中的堆栈损坏。 curses.box()现在接受字符作为参数。基于 Steve Fink 的补丁。

  • bpo-31917:添加 3 个新的时钟标识符:time.CLOCK_BOOTTIMEtime.CLOCK_PROFtime.CLOCK_UPTIME

  • bpo-31897:plistlib 现在在读取二进制文件时会捕获更多错误,并引发 InvalidFileException 而不是意外的异常。

  • bpo-25720:修复了检查 curses WINDOW 的填充状态的方法。山本雅之的补丁。

  • bpo-31893:修复了 OpenBSD 和 NetBSD 上 kqueue_event 结构的布局。修复了 kqueue_event 对象的比较。

  • bpo-31891:修复了在 NetBSD 上构建 curses 模块的问题。

  • bpo-31884:向子流程模块添加了必需的常量,用于在 Windows 上设置优先级

  • bpo-28281:删除 Calendar.weekday()函数上的年份(1-9999)限制。 Mark Gollahon 修补程序。

  • bpo-31702:crypt.mksalt()现在允许为 SHA-256 和 SHA-512 哈希指定轮数。

  • bpo-30639inspect.getfile()不再计算未知对象的 repr 以显示在错误消息中,以防止行为不当的自定义 reprs。

  • bpo-30768:修复在超时> 0 且 intr_flag = 0 调用时 PyThread_acquire_lock_timed()的 pthreadsignal 量实现:如果 sem_timedwait()被 signal(EINTR)break,则重新计算超时。另请参见 PEP 475

  • bpo-31854:添加mmap.ACCESS_DEFAULT常量。

  • bpo-31834:仅将 BLAKE2 的优化代码与 SSSE3 一起使用。纯 SSE2 实现比纯 C 参考实现慢。

  • bpo-28292:现在,当日期不在 0001-01-01 到 9999-12-31 范围内时,Calendar.itermonthdates()将始终引发异常。为了支持不能容忍此类异常的应用程序,添加了新方法 itermonthdays3()和 itermonthdays4()。新方法返回 Tuples,不受 datetime.date 支持的范围的限制。

  • bpo-28564:shutil.rmtree()函数已加速了 20–40%。这是使用 os.scandir()函数完成的。

  • bpo-28416:使用 persistent_id()方法的 pickle.Pickler 子类和使用 persistent_load()方法的 pickle.Unpickler 子类的实例不再创建参考周期。

  • bpo-31653:如果可以立即获取 multiprocessingsignal 量,请不要释放 GIL。

  • bpo-28326:解决多重处理。关闭 stdout 和/或 stderr 或无时处理。

  • bpo-20825:将subnet_ofsuperset_of密闭性测试添加到ipaddress.IPv6Networkipaddress.IPv4Network。 Michel Albert 和 Cheryl Sabella 的补丁。

  • bpo-31827:删除 os.stat_float_times()函数。它是在 Python 2.3 中引入的,目的是与 Python 2.2 向后兼容,从 Python 3.1 开始不推荐使用。

  • bpo-31756:向subprocess函数添加subprocess.Popen(text=False)关键字参数,以更明确地说明库何时应try将输出解码为文本。安德鲁·克莱格(Andrew Clegg)的补丁。

  • bpo-31819:添加 AbstractEventLoop.sock_recv_into()。

  • bpo-31457:如果使用嵌套日志适配器,则不再Ellipsis内部process()方法。

  • bpo-31457:现在可以正确设置 LoggerAdapter 对象的manager属性。

  • bpo-31806:修复了将 time.sleep(),threading.Lock.acquire()和 socket.socket.settimeout()的超时舍入为-1.0 至 0.0 之间的正确超时。这些Function现在可以按预期阻止 await 事件。以前,该呼叫被错误地非阻塞。 Pablo Galindo 修补程序。

  • bpo-31803:time.clock()和 time.get_clock_info('clock')现在发出 DeprecationWarning 警告。

  • bpo-31800:扩展了对解析 UTC 偏移量的支持。现在,strptime'%z'可以解析 datetime.isoformat 生成的输出,包括秒和微秒。

  • bpo-28603:traceback:修复了当无法打印当前异常或其上下文/原因链中的异常时,在异常跟踪打印期间发生的 TypeError。 Zane Bitter 修补程序。

  • bpo-30541:添加新Function以密封模拟并防止自动创建子模拟。 Mario Corchero 修补程序。

  • bpo-31784:实现 PEP 564,并向time模块添加具有纳秒分辨率的 6 个新Function:clock_gettime_ns()clock_settime_ns()monotonic_ns()perf_counter_ns()process_time_ns()time_ns()

  • bpo-30143:2to3 现在生成一个代码,该代码使用来自 collections.abc 而不是 collections 的抽象 collection 类。

  • bpo-31770:防止多次调用sqlite3.Cursor对象的__init__()方法时发生崩溃。 Oren Milman 修补程序。

  • bpo-31764:如果Cursor对象未初始化,则可以防止sqlite3.Cursor.close()崩溃。 Oren Milman 修补程序。

  • bpo-31752:修复了使用自定义整数调用的 timedelta 构造函数中可能发生的崩溃。

  • bpo-31620:一个空的 asyncio.queue.get 轮询器超时时,Queue 现在不会泄漏内存

  • bpo-31690:允许将标志 re.ASCII,re.LOCALE 和 re.UNICODE 用作正则表达式的组标志。

  • bpo-30349:如果正则表达式包含将来会在语义上更改的字符集构造(嵌套集和集合操作),则将发出 FutureWarning。

  • bpo-31664:在 crypt 模块中增加了对 Blowfish 哈希的支持。

  • bpo-31632:修复 asyncio 模块中的_SSLProtocolTransport 类的 set_protocol()方法。该方法以前修改了对该协议的错误引用。

  • bpo-15037:在 ncurses 5.7 和更早版本的 curses 中为 getkey()添加了一种解决方法。

  • bpo-31307:允许将字节对象用作configparser.ConfigParser.read()的参数。 Vincent Michel 修补程序。

  • bpo-31334:修复select模块中的poll.poll([timeout]),以在所有 OS 上将其设置为只能是非负整数或-1 的任意负超时。 Riccardo Coccioli 的补丁。

  • bpo-31310:如果多进程的 signal 量跟踪器崩溃,则应再次启动。

  • bpo-31308:使 multiprocessing 的 forkserver 进程不受 Ctrl-C 和其他用户break的影响。如果崩溃,则在必要时重新启动它。

  • bpo-31245:在异步create_datagram_endpoint中添加了对 AF_UNIX 套接字的支持。

  • bpo-30553:将_2/2 状态代码 421(错误请求)添加到http.HTTPStatus。 Vitor Pereira 修补程序。

Documentation

  • bpo-32105:添加了 asyncio.BaseEventLoop.connect_accepted_socket 版本添加的标记。

Tests

  • bpo-31380:在 macOS 上跳过 test_httpservers test_undecodable_file:在 APFS 上失败。

  • bpo-31705:在低于 4.5 的 Linux 内核上跳过 test_socket.test_sha256()。测试在内核 3.10(在 ppc64le 上)上以 ENOKEY 失败。修复程序已合并到内核 4.5 中。

  • bpo-32138:跳过可提高 SIGSEGV 的 Android test_faulthandler 测试,并删除 test.support.requires_android_level 装饰器。

  • bpo-32136:运行时嵌入测试已从Lib/test/test_capi.py拆分为新的Lib/test/test_embed.py文件。

  • bpo-28668:已删除 test.support.requires_multiprocessing_queue。当 signal 量实现损坏或丢失时,请使用 test.support.import_module('multiprocessing.synchronize')跳过测试。

  • bpo-32126:当 sem_open()无法正常运行时,跳过 test.test_asyncio.test_events 中的 test_get_event_loop_new_process。

  • bpo-31174:修复 test_tools.test_unparse:DirectoryTestCase 现在存储名称 samples,以始终测试相同的文件。当搜寻参考泄漏时,它可以防止错误警报。

Build

  • bpo-28538:还原以前的更改,if_nameindex 结构由统一标题定义。

  • bpo-28762:还原上一次提交,F_LOCK 宏由 Android UnifiedHeaders 定义。

  • bpo-29040:支持使用统一标题构建 Android。支持统一 Headers 的第一个 NDK 版本是 android-ndk-r14.

  • setup.py中的bpo-32059detect_modules()现在也可以在交叉编译时搜索 sysroot 路径。

  • bpo-31957:在为 Windows 构建时修复 Windows SDK 版本检测。

  • bpo-31609:修复 PCbuild/clean.bat 中的引号

  • bpo-31934:在不干净的源代码树中构建时中止构建。

  • bpo-31926:当.c 文件中具有相同名称的函数和/或方法不止一个时,固定参数诊所有时会导致编译错误。

  • bpo-28791:更新 Windows 版本以使用 SQLite 3.21.0.

  • bpo-28791:更新 OS X 安装程序以使用 SQLite 3.21.0.

  • bpo-28643:记录带有图章文件的概要文件选择构建进度。

  • bpo-31866:完成对 AtheOS 的支持。

Windows

  • bpo-1102:当View.Fetch()返回ERROR_NO_MORE_ITEMS而不是加注MSIError时返回None。 Anthony Tuininga 的最初补丁。

  • bpo-31944:修复了“应用程序和Function”对话框中的“修改”按钮。

  • bpo-20486:实现Database.Close()方法以帮助关闭 MSI 数据库对象。

  • bpo-31857:在多线程环境中确定 USE_STACKCHECK 的行为。

macOS

  • bpo-31392:更新 macOS 安装程序以使用 OpenSSL 1.0.2m

IDLE

  • bpo-32207:改进 IDLE 中的 tk 事件异常回溯。当 IDLE 的运行循环驱动 tk 事件处理时,会产生混乱和分散注意力的队列。EMPTY 跟踪上下文不再添加到 tk 事件异常跟踪中。现在,回溯与用户代码驱动事件处理时相同。根据 Serhiy Storchaka 的建议进行修补。

  • bpo-32164:删除未使用的文件 idlelib/tabbedpages.py。在 configdialog 中使用 TabbedPageSet 替换为 ttk.Notebook。

  • bpo-32100:IDLE:修复路径浏览器中的新旧错误;改善测试。主要由 Cheryl Sabella 修补。

  • bpo-31858:IDLE –将 shell 提示操作限制在 shell 中。编辑器和输出窗口仅显示一个空的最后一个提示行。这样可以简化代码并修复插入换行符时的一个小错误。 Sys.ps1(如果存在)在 Shell 启动时读取,但未设置或更改。

  • bpo-31860:现在可以编辑“ IDLE 配置”对话框中的字体示例。 IDLE 保持打开状态时更改仍然存在

  • bpo-31836:现在,如果在 test_idle 之后运行,则 test_code_module pass,设置 ps1.代码模块使用 sys.ps1(如果存在)或将其设置为'>>>'。现在,Test_code_module 可以正确测试这两种行为。同上 PS2.

  • bpo-28603:修复了 TypeError,该 TypeError 在打印包含不可散列异常的回溯时导致 Shell 重新启动。 Zane Bitter 修补程序。

  • bpo-13802:在 IDLE 的字体设置示例中使用非拉丁字符。即使选择了定义 Unicode 基本多语言平面的有限子集的字体,tcl/tk 也会使用其他定义字符的字体。扩展后的示例使非拉丁字符的用户可以更好地了解他们在 IDLE 的 shell 和编辑器中看到的内容。为了为扩展的 samples 腾出空间,将重新排列“字体”选项卡上的框架。字体/标签帮助对添加内容进行了一些解释。

Tools/Demos

  • bpo-32159:删除 CVS 和 Subversion 工具:删除 svneol.py 和 treesync.py 脚本。 CPython 从 CVS 迁移到 Subversion,再到 Mercurial,再到 Git。 CVS 和 Subversion 不再用于开发 CPython。

  • bpo-30722:使 redemo 与 Python 3.6 和更高版本一起使用。另外,请删除LOCALE选项,因为它不适用于 Python 3 中的字符串模式。Christoph Sarnowski 进行了修补。

C API

  • bpo-20891:修复 PyGILState_Ensure()。当在非 Python 线程中的 PyEval_InitThreads()之前调用 PyGILState_Ensure()时,仅在调用 PyThreadState_New()之后才能修复崩溃,然后再调用 PyEval_InitThreads()。

  • bpo-32125Py_UseClassExceptionsFlag标志已被删除。自 Python 2.0 以来,它已被弃用,不再使用。

  • bpo-25612:将当前异常状态从框架对象移至协同例程。这简化了解释程序,并修复了由于在进入或退出生成器时具有交换异常状态而导致的一些晦涩的错误。

  • bpo-23699:添加 Py_RETURN_RICHCOMPARE 宏以减少丰富比较Function中的样板代码。

  • bpo-30697:已删除PyExc_RecursionErrorInst单例,而PyErr_NormalizeException()不再使用它。该单例是持久性的,其成员永远不会被清除,可能会在解释程序完成期间导致段错误。另请参见bpo-22898

Python 3.7.0 alpha 2

*发布日期:2017-10-16 *

核心和内建函数

  • bpo-31558gc.freeze()是一个新的 API,它允许将当前由垃圾收集器跟踪的所有对象移动到永久代,从而有效地将它们从将来的收集事件中删除。这可以用来保护那些对象免于其 PyGC_Head 发生突变。实际上,这可以在 fork()上实现出色的写入时复制稳定性。

  • bpo-31642:pass将 sys.modules [“ package.module”]设置为 None,恢复了“从程序包导入模块”的阻止。

  • bpo-31708:允许在同步函数中使用异步生成器表达式。

  • bpo-31709:删除对异步__aiter_的支持。

  • bpo-30404:-u 选项现在使 stdout 和 stderr 流变为无缓冲,而不是行缓冲。

  • bpo-31619:修复了将带有大量下划线的字符串转换为具有二进制基数的整数时的 ValueError。

  • bpo-31602:修复zlib.decompress()错误时zipimporter.get_source()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31592:修复了unicodedata.normalize()错误的情况下 Python 分析器中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31588:当由于元类的__prepare__()方法错误而导致类创建失败时,使用有用的错误消息引发TypeError。 Oren Milman 修补程序。

  • bpo-31574:对 Importlib 进行了两个 dtrace 探针测试,以分析导入时间。

  • bpo-31566:修复__name__全局错误的情况下_warnings.warn()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31506:改进了 object .__ new_和 object .__ init_的错误消息逻辑。

  • bpo-31505:修复_json.make_encoder()收到错误的encoder()参数的情况下在json中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31492:在无法从具有错误__name__属性的模块中导入以及无法访问该模块的属性的情况下,修复 assert 失败。 Oren Milman 修补程序。

  • bpo-31478:在自变量具有错误的__abs__()方法的情况下,修复_random.Random.seed()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31336:pass减少必要的特殊方法查找的开销,将类创建速度提高了 10-20%。 Stefan Behnel 的补丁。

  • bpo-31415:添加-X importtime选项以显示每次导入需要多长时间。它可以用来优化应用程序的启动时间。支持 PYTHONPROFILEIMPORTTIME作为启用此Function的等效方法。

  • bpo-31410:优化的调用包装器和类方法 Descriptors。

  • bpo-31353 PEP 553-添加一个名为breakpoint()的新内置组件,它调用sys.breakpointhook()。默认情况下,它导入pdb并调用pdb.set_trace(),但是用户可以覆盖sys.breakpointhook()来调用所需的任何调试器。钩子的原始值保存在sys.__breakpointhook__中。

  • bpo-17852:维护一个打开的缓冲文件列表,在退出解释器之前刷新它们。基于 Armin Rigo 的补丁。

  • bpo-31315:当 spec.name 不是字符串时,修复了 imp.create_dynamic()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31311:修复了__dict__错误的情况下ctypes._CData__setstate__()方法的崩溃。 Oren Milman 修补程序。

  • bpo-31293:修复了使用错误的 as_integer_ratio()方法对 float 进行 timedelta 对象的真实除法和乘法运算时崩溃的问题。 Oren Milman 修补程序。

  • bpo-31285:当接收到的加载器的 get_source()的返回值具有错误的 splitlines()方法时,修复warnings.warn_explicit中的 assert 失败。 Oren Milman 修补程序。

  • bpo-30406:根据 PEP 492中的指定,正确设置asyncawait关键字。

Library

  • bpo-30058:修复了 select.kqueue.control()中的缓冲区溢出。

  • string.Template中的bpo-31672idpattern匹配了一些非 ASCII 字符。现在,它使用-i正则表达式本地标志来避免使用非 ASCII 字符。

  • bpo-31701:在 Windows 上,faulthandler.enable()现在将忽略 MSC 和 COM 异常。

  • bpo-31728:防止由于不安全地清除Element.textElement.tail而在_elementtree中崩溃。 Oren Milman 修补程序。

  • bpo-31671:现在re.compile()在编译之前将传递的 RegexFlag 转换为普通的 int 对象。 bm_regex_compile 基准测试显示性能提高了 14%。

  • bpo-30397:现在将已编译的常规对象和匹配对象的类型显示为re.Patternre.Match。这会在 pydoc 输出中为 re 模块添加信息。

  • bpo-31675:传递大于 2 GiB 的字符串时,Tkinter 方法 splitlist()和 split()中的固定内存泄漏。

  • bpo-31673:修复了 Tkinter 方法 adderrorinfo()名称中的错字。

  • bpo-31648:对 ElementTree 中的路径谓词的改进:允许在谓词部分(即“ [a ='文本']””周围使用空格,而不是要求可读性较低的“ [a ='文本']”)。添加对当前节点的文本比较的支持,例如“ [。='text']”。 Stefan Behnel 的补丁。

  • bpo-30806:修复 netrc 对象的字符串表示形式。

  • bpo-31638:将可选参数compressed添加到zipapp.create_archive,并将选项--compress添加到zipapp的命令行界面。

  • bpo-25351:避免使用未定义的变量进行 venv 激活失败

  • bpo-20519:避免使用 ctypes(如果可能),并缩短 uuid 的导入时间。

  • bpo-28293:正则表达式缓存已满时不再完全转储。

  • bpo-31596:将 pthread_getcpuclockid()添加到时间模块

  • bpo-27494:使 2to3 在生成器表达式中接受结尾逗号。例如,现在允许set(x for x in [],)

  • bpo-30347:同时迭代 itertools.groupby()迭代器时,Stop 崩溃。

  • bpo-30346:由 itertools.groupby()迭代器生成的迭代器现在在推进 groupby 迭代器之后变得精疲力尽。

  • bpo-31556:如果超时<= 0,则取消 asyncio.wait 以便以后更快

  • bpo-31540:允许在concurrent.futures.ProcessPoolExecutor构造函数中传递上下文对象。另外,在concurrent.futures.ProcessPoolExecutor中释放作业资源,以在工作者 await 新作业时提高内存使用率。

  • bpo-31516threading.current_thread()在关闭时不应返回虚拟线程。

  • bpo-31525:在 sqlite 模块中,需要 sqlite3_prepare_v2 API。因此,sqlite 模块现在至少需要 sqlite 版本 3.3.9.

  • bpo-26510:默认情况下现在需要 argparse 子解析器。这与 Python 2 中的行为匹配。对于可选的子解析器,请使用新参数add_subparsers(required=False)。 Anthony Sottile 修补程序。 (从 3.7.0rc1 版本开始,默认值已更改为不需要,就像自 Python 3.3 以来的情况一样.)

  • bpo-27541:某些集合和迭代器类(bytearrayarray.arraycollections.dequecollections.defaultdictitertools.countitertools.repeat)的子类的 repr 现在包含实际的类型名称,而不是 Base Class 的硬编码名称。

  • bpo-31351:如果 pip 引导失败,则 python -m surepip 现在将以非零退出代码退出。

  • bpo-31389pdb.set_trace()现在接受一个可选的仅关键字参数header。如果提供,则在调试开始之前将其打印到控制台。

Documentation

  • bpo-31537:解决了 readline 文档示例代码中对get_history_length的错误使用。布拉德·史密斯(Brad Smith)的补丁。

  • bpo-30085:为清楚起见,不带双下划线的操作员Function是首选。带下划线的仅保留用于向后兼容。

Build

  • bpo-31696:当使用 Clang 构建 Python 时,改进sys.version中的编译器版本信息。

  • bpo-31625:停止在静态库上使用 ranlib。相反,我们假设 ar 支持's'标志。

  • bpo-31624:删除对 BSD/OS 的支持。

  • bpo-22140:在 python-config.sh 中防止前缀的双重替换。

  • bpo-31569:在构建脚本和文档中将 PCBuild /大小写更改为 PCbuild /。

  • bpo-31536:如果没有任何变化,请避免在make regen-all之后进行批量重建。

IDLE

  • bpo-31460:简化 IDLE 的模块浏览器的 API。传递窗口小部件而不是带有根窗口小部件的列表将打开创建仅属于窗口一部分的浏览器框架的选项。传递完整的文件名而不是假定来自.py 文件的文件名,可以浏览以.py 结尾的 python 文件。

  • bpo-31649:IDLE-仅使_htest,_utest 参数为关键字。

  • bpo-31559:删除 idle_test.test_browser 中的测试订单依赖性。

  • bpo-31459:将 IDLE 的模块浏览器从类浏览器重命名为模块浏览器。几年前,最初的模块级类和方法浏览器成为模块浏览器,并添加了模块级Function。嵌套类和函数是昨天添加的。为了实现向后兼容,虚拟事件<>不会更改,该事件出现在“设置”对话框的“密钥”选项卡上。 Cheryl Sabella 修补程序。

  • bpo-31500:现在,默认字体在 HiDPI 显示屏上缩放。

  • bpo-1612262:IDLE 模块浏览器现在显示嵌套的类和函数。 Guilherme Polo 和 Cheryl Sabella 分别提供了代码和测试的原始补丁。

C API

  • bpo-28280:使PyMapping_Keys()PyMapping_Values()PyMapping_Items()始终返回list(而不是listtuple)。 Oren Milman 修补程序。

  • bpo-31532:修复由于 Py_GetPath()和 Py_SetPath()之间的 getpath.c 中的分配器混合而导致的内存损坏

  • bpo-25658:为线程专用存储(TSS)API 实现 PEP 539:这是 CPython 的新线程本地存储(TLS)API,它将取代 CPython 解释器中现有 TLS API 的使用,同时弃用现有 API。由 Erik M. Bray 撰写的 PEP,由 Yamamoto Masayuki 制作的补丁。

Python 3.7.0 alpha 1

*发布日期:2017-09-19 *

Security

  • bpo-29781:当尚未pass BIO 进行握手时,SSLObject.version()现在正确返回 None。

  • bpo-29505:为 float(str),int(str),unicode(str)添加模糊测试;对于 oss-fuzz。

  • bpo-30947:将 libexpat 嵌入式副本从 2.2.1 版本升级到 2.2.3,以获取安全修复程序。

  • bpo-30730:防止在 Windows 的子进程中注入环境变量。防止传递其他环境变量和命令参数。

  • bpo-30694:将 expat copy 从 2.2.0 升级到 2.2.1,以修复多个安全漏洞,包括:CVE-2017-9233(外部实体无限循环 DoS),CVE-2016-9063(整数溢出,重新修复),CVE -2016-0718(修复了从 2.2.0 版修复到 CVE-2016-0718 的回归错误)和 CVE-2012-0876(使用 SipHash 进行计数器哈希泛洪)。注意:CVE-2016-5300(使用诸如 getrandom 之类的特定于 os 的熵源)不会影响 Python,因为 Python 已从 os 获取熵以使用XML_SetHashSalt()设置 maven 密码。

  • bpo-30500:修复 urllib.parse.splithost()以正确解析片段。例如,splithost('//127.0.0.1#@evil.com/')现在可以正确返回127.0.0.1主机,而不是将@evil.com作为身份验证中的主机(login@host)。

  • bpo-29591:将 Expat 副本从 2.1.1 更新到 2.2.0,以获得 CVE-2016-0718 和 CVE-2016-4472 的修复程序。有关更多信息,请参见https://sourceforge.net/p/expat/bugs/537/

核心和内建函数

  • bpo-31490:修复了ctypes类定义中的 assert 失败的情况,以防该类具有在_anonymous_中但在_fields_中未指定名称的属性。 Oren Milman 修补程序。

  • bpo-31471:在 env 参数具有错误的 keys()方法的情况下,修复 Windows 上subprocess.Popen()的 assert 失败。 Oren Milman 修补程序。

  • bpo-31418:修复__module__属性错误的异常情况下PyErr_WriteUnraisable()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31416:修复警告,过滤器或警告.defaultaction 错误的情况下的 assert 失败。 Oren Milman 修补程序。

  • bpo-28411:将 PyInterpreterState.modules 的直接用法更改为 PyImport_GetModuleDict()。还要在处理 sys.modules 的其他代码中引入更多的一致性。这有助于减少在 sys.modules 上工作时的复杂性。

  • bpo-28411:处理PyInterpreterState.modules时切换到抽象 API。这样可以在以后支持所有 dict 子类和其他 Mapping 实现。还添加PyImport_GetModule()函数以减少一堆重复的代码。

  • bpo-31411:如果警告。onceregistry 不是字典,请引发 TypeError 而不是 SystemError。 Oren Milman 修补程序。

  • bpo-31344:为了在测试解释器时更好地控制跟踪行为,添加了两个新的帧属性以控制特定跟踪事件的发出:f_trace_lines(默认为True)以关闭每行跟踪事件;和f_trace_opcodes(默认为False)打开按操作码跟踪事件。

  • bpo-31373:修复了由于浮点降级而导致的一些不确定行为的实例。

  • bpo-30465:f 字符串中的位置信息(linenocol_offset)现在(大部分)正确。这可以修复 flake8 之类的工具,避免在错误的行(通常是文件的第一行)上显示警告。

  • bpo-30860:在单个结构下整合 CPython 的全局运行时状态。这提高了运行时状态的可发现性。

  • bpo-31347:修复_PyObject_FastCall_Prepend 中可能的未定义行为。

  • bpo-31343:为 major(),minor()和 makedev()包含 sys/sysmacros.h。 GNU C libray 计划从 sys/types.h 中删除Function。

  • bpo-31291:修复了pathname.replace('/','\\')的返回值不是字符串时 Windows 上zipimport.zipimporter.get_data的 assert 失败。 Oren Milman 修补程序。

  • bpo-31271:修复了编码器未返回字节对象时io.TextIOWrapper的 write()方法中的 assert 失败的情况。 Oren Milman 修补程序。

  • bpo-31243:修复解码器状态无效时某些io.TextIOWrapper方法的崩溃。 Oren Milman 修补程序。

  • bpo-30721print现在显示使用 Python 2 重定向语法的正确用法提示。 Sanyam Khurana 修补程序。

  • bpo-31070:修复 importlib _get_module_lock()中的竞争条件。

  • bpo-30747:在 MSVC 上添加_Py_atomic_store 和_Py_atomic_load 的非虚拟实现。

  • bpo-31095:修复了由tp_dealloc而不是PyObject_GC_UnTrack()引起的 GC 期间潜在的崩溃。

  • bpo-31071:在传递其他参数时,请避免在调用时使用*来掩盖原始 TypeError。

  • bpo-30978:str.format_map()现在pass传递键查找异常。以前,任何异常都被 KeyError 异常替换。

  • bpo-30808:将_Py_atomic API 用于并发敏感的 signal 状态。

  • bpo-30876:现在,从卸载的软件包的相对导入将重新导入该软件包,而不是出现 SystemError 失败。从非软件包的相对导入现在失败,出现 ImportError 而不是 SystemError。

  • bpo-30703:改善 signal 传递。避免从 signal 处理程序中使用 Py_AddPendingCall,以避免调用 signal 不安全的函数。在 Linux 和 OS X 上,如果没有其余补丁,我要在此处添加的测试将失败。这意味着我们的 signal 传递逻辑存在缺陷(某些 signal 可能会丢失)。

  • bpo-30765:当要求 PyThread_acquire_lock()不阻塞时,避免在 pthread_mutex_lock()中阻塞。

  • bpo-31161:确保“缺少括号”语法错误消息仅适用于 SyntaxError,而不适用于子类。 Martijn Pieters 修补程序。

  • bpo-30814:修复了从包中导入子模块时的竞争条件。

  • bpo-30736:内部 unicodedata 数据库已升级到 Unicode 10.0.

  • bpo-30604:将 co_extra_freefuncs 从每个线程移到每个解释器,以避免崩溃。

  • bpo-30597print现在用作 Python 2 语句时,会在自定义错误消息中显示预期的 Importing。 Sanyam Khurana 修补程序。

  • bpo-30682:删除了对于某些 f 字符串失败的过于严格的 assert,例如 eval(“ f' n'”)和 eval(“ f' r'”)。

  • bpo-30501:现在,编译器针对“ if”,“ while”和“ assert”语句,“ if”表达式以及生成器表达式和理解中的复杂条件表达式生成更佳的代码。

  • bpo-28180:实施 PEP 538(旧版 C 语言环境强制)。这意味着当有合适的强制目标语言环境可用时,核心解释程序和可感知语言环境的 C 扩展都将假定使用 UTF-8 作为默认文本编码,而不是 ASCII。

  • bpo-30486:允许设置__closure_的单元格值。丽莎·罗奇(Lisa Roach)的补丁。

  • bpo-30537:itertools.islice 现在接受类似整数的对象(具有__index_方法)作为开始,停止和切片参数

  • bpo-25324:在 Python 中解析所需的令牌已移至 C. COMMENTNLENCODING。这样,在导入令牌化模块时,令牌模块中的令牌和 tok_name 不会被更改。

  • bpo-29104:修复了在 f 字符串中解析反斜杠的问题。

  • bpo-27945:在搜索,插入或比较期间更改 Importing 集合时,用 dict 修复了各种 segfault。基于 Duane Griffin 和 Tim Mitchell 的补丁。

  • bpo-25794:对于非实习属性名称,固定为 type .__ setattr ()和 type . delattr __()。基于 Eryk Sun 的补丁。

  • bpo-30039:如果当解释器在恢复嵌套的“ yield from”或“ await”调用嵌套的过程中发生 KeyboardInterrupt 时,它现在已正确传递到最里面的帧。

  • bpo-28974object.__format__(x, '')现在等效于str(x)而不是format(str(self), '')

  • bpo-30024:现在支持涉及绝对导入并将子模块绑定到名称的循环导入。

  • bpo-12414:现在,代码对象上的 sys.getsizeof()返回的大小包括代码结构和它引用的对象的大小。罗东熙的补丁。

  • bpo-29839:如果__len __()返回一个较大的负整数,则 len()现在引发 ValueError 而不是 OverflowError。

  • bpo-11913:README.rst 现在包含在 distutils 标准 README 列表中,因此也包含在源代码发行版中。

  • bpo-29914:修复了__reduce_和__reduce_ex ()的默认实现。 object . reduce ()不再接受参数,object . reduce_ex __()现在需要一个参数。

  • bpo-29949:修复 set 和 Frozenset 对象的内存使用情况回归。

  • bpo-29935:修复了传递错误类型的索引时,在 Tuples,列表和 deque 的 index()方法中的错误消息。

  • bpo-29816:现在,移位操作几乎没有机会引发 OverflowError。对于负计数,总是引发 ValueError 而不是 OverflowError。将非负计数移零将始终返回零。

  • bpo-24821:修复了一些不幸的 Unicode 字符搜索速度降低到 25 倍的问题。

  • bpo-29102:向 PyInterpreterState 添加唯一 ID。这使得识别每个子解释器更加容易。

  • bpo-29894:如果__complex_返回 complex 的严格子类的实例,则发出弃用警告。在将来的 Python 版本中,这可能是一个错误。

  • bpo-29859:当 thread_pthread.h 中的任何 pthread_ *调用失败时,显示正确的错误消息。

  • bpo-29849:修复了导入过程中引发 ImportError 时的内存泄漏。

  • bpo-28856:修复了以下问题:字节的%b 格式应支持对象遵循缓冲区协议。

  • bpo-29723bpo-29139sys.path[0]初始化更改pass揭示从 zipfile,目录或其他导入位置执行__main__时 sys.path 的初始化方式不一致而导致回归。现在,解释器始终避免将导入位置的父目录添加到sys.path,并确保在插入命令行上命名的导入位置时不会无意间修改其他sys.path条目。

  • bpo-29568:经典字符串格式的格式字符串中的转义百分比“ %%”不再允许两个百分比之间的任何字符。

  • bpo-29714:修复了以下回归问题:当内部包含零个字节时,字节格式可能会失败。

  • bpo-29695:bool(),float(),list()和 tuple()不再使用关键字参数。现在只能将 int()的第一个参数作为位置参数传递。

  • bpo-28893:针对从__aiter_和__anext_返回的无效 await 项的错误,设置正确的__cause__。

  • bpo-28876bool(range)即使len(range)加注OverflowError也有效。

  • bpo-29683:修复了_PyCode_SetExtra 中的内存分配。 Brian Coleman 修补程序。

  • bpo-29684:修复 PyEval_CallObjectWithKeywords 的次要回归。当 kwargs 不是命令时,它应该引发 TypeError。但是当 args = NULL 且 kwargs 不是命令时,可能会导致 segv。

  • bpo-28598:对于在 str .__ mod_之前调用的 str 的子类,支持__rmod__。 Martijn Pieters 修补程序。

  • bpo-29607:修复 CALL_FUNCTION_EX 的 stack_effect 计算。 Matthieu Dartiailh 修补程序。

  • bpo-29602:修复了复杂构造函数中对复杂子类和具有__complex_方法的 Importing 的带符号零的错误处理。 Serhiy Storchaka 修补程序。

  • bpo-29347:修复了在创建 weakref 对象时可能取消引用未定义指针的问题。

  • bpo-29463:将docstring字段添加到 Module,ClassDef,FunctionDef 和 AsyncFunctionDef ast 节点。 docstring 不再是他们体内的首选。它影响模块和类的代码对象的co_firstlinenoco_lnotab。 (在bpo-32911中恢复。)

  • bpo-29438:修复了密钥共享字典中的“售后使用”问题。

  • bpo-29546:在 ImportError 上为from ... import ...设置'path'和'name'属性。

  • bpo-29546:使用位置信息改善导入错误消息

  • bpo-29478:如果在使用 Compat32 策略时未指定 max_line_length = None,则不再忽略它。 Mircea Cosbuc 的补丁。

  • bpo-29319:防止 RunMainFromImporter 覆盖 sys.path [0]。

  • bpo-29337:修复了比较代码对象时可能出现的 BytesWarning。警告可能在编译时发出。

  • bpo-29327:修复了将可迭代的关键字参数传递给 sorted()时崩溃的问题。

  • bpo-29034:修复内存泄漏和 os 模块(path_converter)中的可用后使用问题。

  • bpo-29159:当 x .__ index __()引发 Exception 时,以字节(x)为单位修复回归。

  • bpo-29049:在调用 Python 函数时延迟调用_PyObject_GC_TRACK()。通话Function最多可提高 5%。

  • bpo-28927:bytes.fromhex()和 bytearray.fromhex()现在忽略所有 ASCII 空格,而不仅仅是空格。罗伯特·肖的补丁。

  • bpo-28932:如果不存在,则不包括<sys/random.h>。

  • bpo-25677:更正缩进块的语法错误插入符号的位置。基于 Michael Layzell 的补丁。

  • bpo-29000:八进制的固定字节格式,零填充为备用格式。

  • bpo-18896:Python 函数现在可以包含超过 255 个参数。 collections.namedtuple()现在支持包含超过 255 个元素的 Tuples。

  • bpo-28596:Android 上的首选编码为 UTF-8.志轩 Y 撰写的补丁。

  • bpo-22257:清理解释器启动(请参阅 PEP 432)。

  • bpo-26919:在 Android 上,现在始终将 os 数据编码到 UTF-8 或从 UTF-8 解码,而不是使用区域设置编码,以避免与已经使用 UTF-8 的 os.fsencode()和 os.fsdecode()不一致。

  • bpo-28991:functools.lru_cache()容易受到由猴子修补的 len()函数触发的模糊重入错误的影响。

  • bpo-28147:修复拆分表字典中的内存泄漏:setattr()不得将组合表转换为拆分表。 INADA Naoki 编写的补丁。

  • bpo-28739:f 字符串表达式不再被 docstring 和 ast.literal_eval()接受,即使它们不包含表达式也是如此。

  • bpo-28512:固定pass PyErr_SyntaxLocationEx()和 PyErr_SyntaxLocationObject()设置 SyntaxError 的偏移属性。

  • bpo-28918:修复使用定义的 Py_DEBUG 构建 Python 时 xxlimited 的交叉编译。

  • bpo-23722:不是在方法中无提示地生成不支持零参数super()的类,而是现在不将新的__classcell__命名空间条目传递至type.__new__,从而导致DeprecationWarning和支持零参数super()的类。

  • bpo-28797:修改在该类内部使用的 Descriptors 的__set_name_方法内的类__dict_不再阻止调用其他 Descriptors 的__set_name_方法。

  • bpo-28799:删除PyEval_GetCallStats()函数,并弃用未经测试和未记录的sys.callstats()函数。删除CALL_PROFILE特殊版本:使用sys.setprofile()函数,cProfileprofile剖析函数调用。

  • bpo-12844:现在可以将超过 255 个参数传递给一个函数。

  • bpo-28782:检查下一条指令是否为 YIELD_FROM 时,修复实现yield from中的错误。 WORDCODE(bpo-26647)引入的回归。

  • bpo-28774:当错误处理程序返回的字符串包含多个不可编码字符(ASCII 编解码器为非 ASCII,Latin1 的 U 0000-U 00FF 范围之外的字符)时,修复 ASCII 和 Latin1 编码器中 unicode 错误的错误位置。

  • bpo-28731:优化_PyDict_NewPresized()以创建正确的尺寸字典。使用恒定键将字典 Literals 的速度提高 30%。

  • bpo-28532:两次提供-V 选项时,显示 sys.version。

  • bpo-27100:现在,with 语句在检查__exit_之前先检查__enter__。当缺少这两种方法时,这将减少混乱消息。乔纳森·埃灵顿的补丁。

  • bpo-28746:在没有 ioctl FIOCLEX 和 FIONCLEX 命令的平台上修复 set_inheritable()文件 Descriptors 方法。

  • bpo-26920:修复了在没有 langinfo 的平台上初始化解释器时未获取语言环境的字符集的问题。

  • bpo-28648:修复了在解码星体字符时在 Mac OS X 上的调试版本中 Py_DecodeLocale()崩溃的问题。张翔的补丁。

  • bpo-28665:将 STORE_DEREF 操作码的速度提高 40%。

  • bpo-19398:如果编译时 PYTHONPATH 组件为空,则不再向 sys.path 组件添加额外的斜杠。

  • bpo-28621:pass重用更快的位计数实现来加快将 int 转换为 float 的速度。 Adrian Wielgosik 的补丁。

  • bpo-28580:优化迭代拆分表的值。张翔的补丁。

  • bpo-28583:PyDict_SetDefault 在需要时未合并拆分表。张翔的补丁。

  • bpo-28128:无效的 str 和字节转义序列的弃用警告现在可以输出有关错误发生位置的更好信息。 Serhiy Storchaka 和 Eric Smith 的补丁。

  • bpo-28509:dict.update()不再分配不必要的大内存。

  • bpo-28426:修复了调试版本中 PyUnicode_AsDecodedObject()中潜在的崩溃。

  • bpo-28517:修复了窥孔优化器中的一个错误,该错误导致保持代码无法访问。

  • bpo-28214:改进了有问题的__set_name_属性的异常报告。

  • bpo-23782:修复了_PyTraceback_Add()中可能的内存泄漏和 PyTraceBack_Here()中的异常丢失。

  • bpo-28183:优化和清理字典迭代。

  • bpo-26081:添加了 asyncio.Future 的 C 实现。 Yury Selivanov 的原始补丁。

  • bpo-28379:添加了对 PyUnicode_CopyCharacters()的完整性检查和测试。张翔的补丁。

  • bpo-28376:远程迭代器的类型现已注册为迭代器。 Oren Milman 修补程序。

  • bpo-28376:现在不允许pass调用 range_iterator 类型创建 range_iterator 的实例。在范围实例上调用 iter()是唯一的方法。 Oren Milman 修补程序。

  • bpo-26906:解决未初始化类型的特殊方法现在将导致该类型的隐式初始化,而不是失败。

  • bpo-18287:PyType_Ready()现在检查 tp_name 不为 NULL。 Niklas Koep 的原始补丁。

  • bpo-24098:修复了在编译过程中更改 AST 时可能发生的崩溃。

  • bpo-28201:当哈希具有相同的低位时,Dict 减少了哈希表中第二个冲突的可能性。

  • bpo-28350:不再保留具有空字符的字符串常量。

  • bpo-26617:修复了当 GC 在弱引用回调期间运行时崩溃的问题。

  • bpo-27942:现在,字符串常量递归地插入到 Tuples 和 Frozensets 中。

  • bpo-28289:ImportError .__ init_现在重置未指定的属性。

  • bpo-21578:修复了使用无效关键字 args 调用 ImportError 时产生的误导性错误消息。

  • bpo-28203:修复复杂(1.0, {2:3})错误消息中的错误类型。 Soumya Sharma 修补程序。

  • bpo-28086:将 Tuples 子类型的单个 var-positional 参数毫不费力地传递给 C 定义的函数。现在将其转换为精确的 Tuples。

  • bpo-28214:现在,在类而不是实例上查找__set_name__。

  • bpo-27955:当 getrandom()系统调用因 EPERM 而失败时(例如,被 SECCOMP 阻止时),在读取/ dev/urandom 设备时回退。

  • bpo-28192:不要在隔离模式下导入 readline。

  • bpo-27441:在 longobject.c 中删除对 ob_size 的一些多余分配。感谢 Oren Milman。

  • bpo-27222:清除 long_rshift 函数中的冗余代码。感谢 Oren Milman。

  • 将内部 unicode 数据库升级到 Unicode 版本 9.0.0.

  • bpo-28131:修复 zipimport 的 compile_source()中的回归。 zipimport 应该使用与解释器相同的优化级别。

  • bpo-28126:用 memcpy()替换 Py_MEMCPY。 Visual Studio 可以正确优化 memcpy()。

  • bpo-28120:在try删除“待处理键”(尚未插入拆分表)时,修复了拆分字典的 dict.pop()。张翔的补丁。

  • bpo-26182:在将 async 和 await 关键字用作变量/属性/类/函数名称时,引发 DeprecationWarning。

  • bpo-26182:修复了引发 DeprecationWarning 的代码中的问题。

  • bpo-28721:修复异步生成器 aclose()和 athrow()以正确处理 StopAsyncIteration 传播。

  • bpo-26110:加速方法调用:添加 LOAD_METHOD 和 CALL_METHOD 操作码。

Library

  • bpo-31499:xml.etree:修复了解析器是参考周期的一部分时崩溃的问题。

  • bpo-31482random.seed()现在可以处理版本= 1 的字节

  • bpo-28556:现在,默认情况下(当调用者未指定globalns时),types.get_type_hints 现在可以为类和模块找到正确的全局变量。

  • bpo-28556:加快了typing模块的速度。 Ivan Levkivskyi 和 Mitar 的原始 PR。

  • bpo-31544:ElementTree 的 C 加速器模块忽略了在 XMLParser()中查找 TreeBuilder 目标方法时引发的异常。

  • bpo-31234:socket.create_connection()现在手动修复了一个参考周期:清除成功后存储最后一个异常的变量。

  • bpo-31457:现在可以嵌套 LoggerAdapter 对象。

  • bpo-31431:SSLContext.check_hostname 现在会自动将 SSLContext.verify_mode 设置为 ssl.CERT_REQUIRED,而不是失败并出现 ValueError。

  • bpo-31233:socketserver.ThreadingMixIn 现在保留一个非守护线程列表,以 await 直到所有这些线程在 server_close()中完成。

  • bpo-28638:更改了 collections.namedtuple()的实现策略,以大幅减少 exec()的使用,而使用了预先计算的方法。结果,不再支持* verbose 参数和 _source *属性。好处包括:1)使用多个命名 Tuples 的应用程序具有较小的内存占用; 2)更快地创建命名 Tuples 类(取决于如何测量,大约为 4x 到 6x);以及 3)使用实例创建的速度稍有提高__new _ make 和_replace。 (主要补丁贡献者是 Jelle Zijlstra,并pass INADA Naoki,Serhiy Storchaka 和 Raymond Hettinger 进行了进一步的改进.)

  • bpo-31400:改进了 SSL 错误处理以避免丢失错误编号。

  • bpo-27629:可以自定义 SSLContext.wrap_bio()和 SSLContext.wrap_socket()的返回类型。

  • bpo-28958:ssl.SSLContext()现在在无法实例化上下文时使用 OpenSSL 错误信息。

  • bpo-28182:现在,当 OpenSSL 无法验证对等方的证书时,SSL 模块会引发 SSLCertVerificationError。该异常包含有关该错误的更多信息。

  • bpo-27340:SSLSocket.sendall()现在使用 memoryview 创建数据切片。这修复了对所有类似字节的对象的支持。它还更加高效,避免了昂贵的复制。

  • bpo-14191:新Functionargparse.ArgumentParser.parse_intermixed_args提供了在用户混合选项和位置参数的地方解析命令行的Function。

  • bpo-31178:修复 subprocess 模块中罕见错误路径中的字符串连接错误

  • bpo-31350:对asyncio._get_running_loop()进行微优化,使其速度提高 10%。

  • bpo-31170:expat:将 libexpat 从 2.2.3 更新到 2.2.4. 修复了 UTF-8Importing 的部分字符复制(libexpat 错误 115):https://github.com/libexpat/libexpat/issues/115

  • bpo-29136:添加 TLS 1.3 密码套件和 OP_NO_TLSv1_3.

  • bpo-1198569string.Template子类可以选择定义braceidpattern,如果他们想在括号内和括号外指定不同的占位符模式。如果为 None(默认值),则退回到idpattern

  • bpo-31326:现在,currency.futures.ProcessPoolExecutor.shutdown()显式关闭调用队列。此外,shutdown(wait = True)现在也加入了调用队列线程,以防止泄漏悬空线程。

  • bpo-27144concurrent.futures中的map()as_completed()迭代器现在避免保留对已产生对象的引用。

  • bpo-31281:当files包含pathlib.Path个对象时修复fileinput.FileInput(files, inplace=True)

  • bpo-10746:修复 ctypes 会为整数类型生成错误的 PEP 3118类型代码。

  • bpo-27584AF_VSOCK已添加到套接字接口,该接口允许虚拟机与其主机之间进行通信。

  • bpo-22536:现在,由于找不到可执行文件或 cwd 而在 POSIX 系统上引发 FileNotFoundError 时,子进程模块将设置文件名。

  • bpo-29741:更新_pyio 模块中的某些方法以也接受整数类型。 Oren Milman 修补程序。

  • bpo-31249:current.futures:ThreadPoolExecutor 使用的 WorkItem.run()现在 break 了异常对象与 WorkItem 对象之间的引用周期。

  • bpo-31247:现在,在代码处理异常中使用 sys.exc_info()时,xmlrpc.server 显式break参考周期。

  • bpo-23835:configparser:现在在ConfigParser()构造函数中使用read_dict()读取默认值,使其行为与解析器的其余部分一致。默认字典中的非字符串键和值现在正在隐式转换为字符串。 James Tocknell 修补程序。

  • bpo-31238:pydoc:私有 ServerThread 类的 stop()方法现在 await,直到 DocServer.serve_until_quit()完成,然后将其 docserver 属性显式设置为 None,以break引用周期。

  • bpo-5001multiprocessing中的许多 assert 现在更具参考性,并且某些错误类型已更改为更具体的错误类型。

  • bpo-31109:将 zipimport 转换为使用 Argument Clinic。

  • bpo-30102:ssl 和 hashlib 模块现在在 OpenSSL <1.1.0 上调用 OPENSSL_add_all_algorithms_noconf()。该Function检测 CPU Function并启用对某些 CPU 体系结构(例如 POWER8)的优化。补丁基于 Gustavo Serra Scalet 的研究。

  • bpo-18966:由多重处理创建的非守护线程。进程现在在子 Export 处加入。

  • bpo-31183dis现在可用于异步生成器和协程对象。乔治·柯林斯(George Collins)根据 Luciano Ramalho 的诊断对补丁进行了修补。

  • bpo-5001:如问题 5001 所述,multiprocessing模块中有许多非信息性的 assert。此更改修复了multiprocessing.managers.convert_to_error函数中两个最有问题的问题,因为它们都在错误报告代码中。 (这也使 ValueError 消息提供了更多信息.)唯一可能有问题的更改是 AssertionError 现在是 TypeError。但是,这也应该有助于将其与由函数/其调用者“报告”的 AssertionError(例如在发行号 31169 中)区分开来。 -艾伦·史密斯(Allen W.

  • bpo-31185:修复了异步加速模块中的其他错误。

  • bpo-31151:socketserver.ForkingMixIn.server_close()现在 await 所有子进程完成,以防止泄漏僵尸进程。

  • bpo-31072:向zipapp.create_archive()添加include_file参数

  • bpo-24700:优化 array.array 比较。现在,当比较具有相同整数类型的值的数组时,速度从原来的 10 倍提高到 70 倍。

  • bpo-31135:ttk:修复 LabeledScale 和 OptionMenu 类的 destroy()方法。即使已使用的属性不存在,请调用父方法 destroy()方法。 LabeledScale.destroy()方法现在还显式清除 label 和 scale 属性,以帮助垃圾收集器销毁所有小部件。

  • bpo-31107:修复名称以下划线开头的类的copyreg._slotnames()损坏的属性计算。 Shane Harvey 的补丁。

  • bpo-31080:允许logging.config.fileConfig接受 kwarg 和/或 args。

  • bpo-30897pathlib.Path对象现在包含is_mount()方法(仅在 POSIX 上实现)。这类似于os.path.ismount(p)。 Cooper Ry Lees 修补程序。

  • bpo-31061:修复了使用异步和线程时崩溃的问题。

  • bpo-30987:在套接字模块中增加了对 CAN ISO-TP 协议的支持。

  • bpo-30522:为logging.StreamHandler添加了setStream方法,以允许在创建后设置流。

  • bpo-30502:修复了 ssl 中长形词的处理。基于 Christian Heimes 的补丁。

  • bpo-5288:支持具有亚分钟偏移量的 tzinfo 对象。

  • bpo-30919:修复了 3.x 中 multiprocessing 中共享内存性能的下降。共享内存在 2.x 中使用匿名内存 Map,而 3.x mmap 则 Map 实际文件。try小心执行尽可能少的磁盘 I/O。

  • bpo-26732:修复了以“ forkserver”方法启动的进程中的过多 fds。子进程将继承与仍在运行的子进程数目一样的 fds。

  • bpo-29403:修复unittest.mock的自动指定不会在方法绑定的内置函数上失败。 Aaron Gallagher 的补丁。

  • bpo-30961:解决了在 tracemalloc 中减少借用引用的问题。

  • bpo-19896:修复 multiprocessing.sharedctypes 以识别类型代码'q''Q'

  • bpo-30946:对于 GNU readline 早于 2.1 或 select()不可用的平台,请在 readline 模块中删除过时的代码。

  • bpo-25684:将ttk.OptionMenu单选按钮更改为在OptionMenu的实例之间唯一。

  • bpo-30886:修复 multiprocessing.Queue.join_thread():它现在 await 直到线程完成,即使该线程是由创建队列的同一进程启动的。

  • bpo-29854:使用 readline 的历史记录大小选项修复了 readline 中的段错误。 Nir Soffer 的补丁。

  • bpo-30794:添加了 multiprocessing.Process.kill 方法以在 Unix 上使用 SIGKILLsignal 终止。

  • bpo-30319:socket.close()现在忽略 ECONNRESET 错误。

  • bpo-30828:超出范围写在asyncio.CFuture.remove_done_callback()中。

  • bpo-30302:在datetime.timedeltarepr中使用关键字。

  • bpo-30807:当传递一个很小的值时,signal.setitimer()可能会禁用计时器。微小的值(例如 1e-6)是 setitimer()的有效非零值,该值指定为微秒分辨率的间隔。但是,在某些平台上,我们的转换例程可以将 1e-6 转换为零间隔,因此禁用计时器,而不是(重新)安排计时器。

  • bpo-30441:修复在迭代 os.environ 时修改它的错误

  • bpo-29585:避免从site导入sysconfig,以提高启动速度。在 Linux 上,Python 的启动速度大约快 5%,在 macOS 上,Python 的启动速度快 30%。

  • bpo-29293:在 multiprocessing.Condition.notify()上添加缺少的参数“ n”。该文档声称 multiprocessing.Condition 的行为类似于 threading.Condition,但其 notify()方法缺少 threading.Condition.notify()接受的可选“ n”参数(用于指定要唤醒的睡眠者的数量)。

  • bpo-30532:修复电子邮件 Headers 值解析器在某些情况下会丢弃折叠空格的情况。

  • bpo-30596:向multiprocessing.Process添加close()方法。

  • bpo-9146:当链接的 OpenSSL 库中没有标准的哈希函数(例如 md5)时,修复了_hashopenssl 中的分段错误。在某些特殊的 FIPS-140 构建环境中。

  • bpo-29169:将 zlib 更新到 1.2.11.

  • bpo-30119:ftplib.FTP.putline()现在在包含 CR 或 LF 的命令上引发 ValueError。罗东熙的补丁。

  • bpo-30879:使用类似字节的参数调用时,os.listdir()和 os.scandir()现在发出字节名称。

  • bpo-30746:在os.putenv()os.spawn*()的环境变量名称中禁止使用'='字符。

  • bpo-30664:现在,对单元测试子测试的描述保留了 TestCase.subTest()的关键字参数的 Sequences。

  • bpo-21071:struct.Struct.format 类型现在为str而不是bytes

  • bpo-29212:在未提供 thread_name_prefix 的情况下,默认情况下,将 current.futures.thread.ThreadPoolExecutor 线程修复为具有基于非 repr()的线程名称。他们现在将自己标识为“ ThreadPoolExecutor-y_n”。

  • bpo-29755:修复了 gettext 模块中的 lgettext()系列函数。现在,它们总是返回字节。

  • bpo-30616:枚举的Function性 API 允许创建空的枚举。罗东熙修补

  • bpo-30038:修复 signal 传递和唤醒文件 Descriptors 之间的竞争条件。纳撒尼尔·史密斯(Nathaniel Smith)的补丁。

  • bpo-23894:lib2to3 现在可以识别rb'...'f'...'字符串。

  • bpo-24744:现在,如果* path *是字符串,pkgutil.walk_packages 函数将引发 ValueError。 Sanyam Khurana 修补程序。

  • bpo-24484:避免在多进程清除中出现争用情况。

  • bpo-30589:修复了 multiprocessing.Process.exitcode,使其在使用“ forkserver”方法被 signal 杀死进程(而不是 255)时返回与 signal 号相反的 signal。

  • bpo-28994:不再显示由 atexit 注册的回调中引发的 SystemExit 的 traceback。

  • bpo-30508:如果调用了 Task/Future“ cancel()”方法,则不要记录异常。

  • bpo-30645:修复了imp.load_package()中的路径计算,以解决仅在包装中附带字节码的情况下的问题。 Alexandru Ardelean 修补程序。

  • bpo-11822:dis.dis()函数现在可以反汇编嵌套的代码对象。

  • bpo-30624:selectors 不考虑 KeyboardInterrupt 和 SystemExit,在发生错误时将 fd 置于错误状态。 Giampaolo Rodola 发布的补丁。

  • bpo-30595:具有超时的 multiprocessing.Queue.get()现在可以以非阻塞模式轮询其读取器,如果它成功获取了锁,但获取时间超过了超时。

  • bpo-28556:更新了键入模块:添加通用 AsyncContextManager,在所有版本上添加对 ContextManager 的支持。 Jelle Zijlstra 和 Ivan Levkivskyi 的原始 PR

  • bpo-30605:当使用错误的行内修饰符编译字节实例时,re.compile()不再引发 BytesWarning。 Roy Williams 修补程序。

  • bpo-29870:修复在 asyncio/ssl 实现中中止连接时 ssl 套接字泄漏的问题。 MichaëlSghaïer 修补程序。

  • bpo-29743:在握手过程中关闭传输会泄漏打开的套接字。 Nikolay Kim 的补丁

  • bpo-27585:修复 asyncio.Lock 中的服务员取消。 Mathieu Sornay 的补丁。

  • bpo-30014:基于 poll(),epoll()和 devpoll()的 selectors 模块类的 Modify()方法的速度提高了约 10%。 Giampaolo Rodola 发布的补丁。

  • bpo-30418:在 Windows 上,如果子进程仍在运行但关闭了管道,则 subprocess.Popen.communicate()现在也将忽略 stdin.write()上的 EINVAL。

  • bpo-30463:将空__slots_添加到 abc.ABC。这样子类就可以拒绝__dict_和__weakref_的创建。亚伦·霍尔(Aaron Hall)修补。

  • bpo-30520:Logger 现在可以腌制。

  • bpo-30557:故障处理程序现在可以正确过滤并在 Windows 上显示异常代码

  • bpo-30526:添加 TextIOWrapper.reconfigure()和 TextIOWrapper.write_through 属性。

  • bpo-30245:修复了将 struct.pack_in 整理为错误消息时可能发生的溢出。刘远的补丁。

  • bpo-30378:解决了 logging.handlers.SysLogHandler 无法处理 IPv6 地址的问题。

  • bpo-16500:允许注册分叉处理程序。

  • bpo-30470:在 Windows 上弃用无效的 ctypes 呼叫保护。 Mariatta Wijaya 修补程序。

  • bpo-30414:出现异常时,后台运行线程不会从主循环中break。

  • bpo-30003:修复了在 HZ 编解码器中处理转义符的问题。根据马琳的补丁。

  • bpo-30149:inspect.signature()现在支持带有部分参数包装的可变参数参数的可调用对象。罗东熙的补丁。

  • bpo-30436:如果指定的父模块不是程序包(即缺少__path_属性),则 importlib.find_spec()引发 ModuleNotFoundError 而不是 AttributeError。

  • bpo-30301:在* spawn forkserver *启动方法下使用 SimpleQueue.empty()时,修复 AttributeError。

  • bpo-30375:现在,在编译正则表达式时发出的警告始终指向用户代码中的行。以前,如果它们是从组或条件内部发出的,则它们可以指向 re 模块的内部。

  • bpo-30329:imaplib 和 poplib 现在在关闭(SHUT_RDWR)时捕获 Windows 套接字 WSAEINVAL 错误(代码 10022):try了无效的操作。有时在 SSL 连接上会发生此错误。

  • bpo-29196:删除了先前在 plistlib 模块中的 Python 2.4 类 Plist,Dict 和_InternalDict 中弃用的属性。函数 readPlist()和 readPlistFromBytes()的结果中的字典值现在是普通字典。您不再可以使用属性访问来访问这些词典的项目。

  • bpo-9850macpath现在已弃用,并将在 Python 3.8 中删除。

  • bpo-30299:现在,在 CPython 上以调试模式编译正则表达式将以人类可读的形式显示已编译的字节码。

  • bpo-30048:当任务正在运行协程并且协程返回时不再await时,可以忽略固定的Task.cancel()

  • bpo-30266:contextlib.AbstractContextManager 现在pass按照bpo-25958中引入的模式设置__enter__ = None 或__exit__ = None 来支持反注册。 Jelle Zijlstra 修补程序。

  • bpo-30340:增强了正则表达式优化。这将匹配某些模式的性能提高了 25 倍。

  • bpo-30298:减弱内联修饰符的弃用警告的条件。现在,在模式的开头(例如'(?i)(?s)...')允许使用多个后续的内联修饰符。在详细模式下,现在在内联修饰符(例如'(?x) (?i) (?s)...')之前和之间允许空格和 Comments。

  • bpo-30285:优化了不区分大小写的匹配和正则表达式的搜索。

  • bpo-29990:修复了 GB18030 解码器中的范围检查。由马琳制作的原始补丁。

  • bpo-29979:重写 cgi.parse_multipart,重新使用 FieldStorage 类,并使它的结果与 Multipart/form-data 请求的 FieldStorage 结果一致。 Pierre Quentel 修补程序。

  • bpo-30243:删除了_json 的扫描器和编码器的__init_方法。滥用它们可能会导致内存泄漏或崩溃。现在,扫描器和编码器对象已在__new_方法中完全初始化。

  • bpo-30215:带有 re.LOCALE 标志的已编译正则表达式对象在编译时不再依赖于语言环境。只有匹配时的语言环境会影响匹配结果。

  • bpo-30185:收到 Ctrl-C 时,避免在 forkserver 帮助程序进程中进行 KeyboardInterrupttraceback。

  • bpo-30103:binascii.b2a_uu()和 uu.encode()现在支持使用''`作为零而不是空格。

  • bpo-28556:对键入模块进行了各种更新:添加了类型。NoReturn 类型,使用 WrapperDescriptorType,较小的错误修复。 Jim Fasarakis-Hilliard 和 Ivan Levkivskyi 的原始 PR。

  • bpo-30205:修复 Linux 上未绑定的 AF_UNIX 套接字的 getsockname()。

  • bpo-30228:io.FileIO 的 seek()和 tell()方法现在设置了内部 seekable 属性,以避免对 open()进行一次系统调用(在缓冲或文本模式下)。

  • bpo-30190:单元测试的 assertAlmostEqual 和 assertNotAlmostEqual 在失败的情况下提供更好的消息,其中包括左右参数之间的差异。 (Giampaolo Rodola 的补丁)

  • bpo-30101:添加对 curses.A_ITALIC 的支持。

  • bpo-29822:inspect.isabstract()现在可以在__init_subclass_期间运行。 Nate Soares 修补程序。

  • bpo-29960:_random.Random.setstate()引发异常时,保留生成器状态。 Bryan Olson 的补丁。

  • bpo-30070:修复了解析器模块中的错误处理中的泄漏和崩溃。

  • bpo-22352:现在已针对大行号和指令偏移量对 dis.dis()输出中的列宽进行了调整。

  • bpo-30061:修复了当 readline()或__next __()分别返回不可调整大小的对象时,IOBase 方法__next __()和 readlines()崩溃的问题。修复了由于不检查 PyObject_Size(),PySequence_Size()或 PyMapping_Size()结果而导致的其他可能的错误。

  • bpo-30218:修复 PathLike 对 shutil.unpack_archive 的支持。 Jelle Zijlstra 修补程序。

  • bpo-10076:re 模块中的已编译正则表达式和匹配对象现在支持 copy.copy()和 copy.deepcopy()(它们被视为原子)。

  • bpo-30068:_io._IOBase.readlines 将检查是否在提示存在时首先关闭。

  • bpo-29694:已修复 pathlib mkdir 中带有标志 parents = True 的竞争条件。 Armin Rigo 修补程序。

  • bpo-29692:修复了 contextlib.contextmanager 中 RuntimeError 异常的任意取消链接。 Siddharth Velankar 修补程序。

  • bpo-26187:测试更改架构时,不会多次调用 sqlite3 跟踪回调。pass切换为在bpo-9303中使用 sqlite3_prepare_v2()间接修复。 Aviv Palivoda 修补程序。

  • bpo-30017:允许多次调用 zip 条目编写器对象的 close()方法。现在,写给封闭的 Writer 总是会产生 ValueError。

  • bpo-29998:Pickling 和复制 ImportError 现在将保留名称和路径属性。

  • bpo-29995:re.escape()现在仅转义正则表达式特殊字符。

  • bpo-29962:添加 math.remainder 操作,实现 IEEE 754 中指定的余数。

  • bpo-29649:改进 struct.pack_into()异常消息,以解决缓冲区大小和偏移量的问题。安德鲁·内斯特(Andrew Nester)的补丁

  • bpo-29654:支持 If-Modified-Since HTTPHeaders(浏览器缓存)。 Pierre Quentel 修补程序。

  • bpo-29931:修复了 ipaddress.ip_interface 对象的比较检查。 Sanjay Sundaresan 的补丁。

  • bpo-29953:固定绑定日期参数传递时,datetime 和 time 对象的 replace()方法中的固定内存泄漏。

  • bpo-29942:修复了长期遇到空的可迭代对象时 itertools.chain.from_iterable 崩溃的问题。

  • bpo-10030:将加密的 ZIP 文件的读取速度提高了 2 倍。

  • bpo-29204:仅在文档中弃用了 Element.getiterator()和 XMLParser()的 html 参数(因为相应地使用 Python 3.2 和 3.4)。现在使用它们会发出弃用警告。

  • bpo-27863:修复了由于竞争条件和错误类型导致的 ElementTree 多次崩溃。

  • bpo-25996:在 Unix 上的 os.scandir()中增加了对文件 Descriptors 的支持。使用 os.scandir()可将 os.fwalk()加速 2 倍。

  • bpo-28699:修复了 multiprocessing.pool 中的池中的一个错误,该错误在可迭代对象的第一个位置引发异常可能会吞噬该异常或使程序挂起。达文·波茨和张翔的补丁。

  • bpo-23890:现在,unittest.TestCase.assertRaises()手动break参考周期,以使对象的存活时间不超过预期的时间。

  • bpo-29901:zipapp 模块现在支持常规的类似于路径的对象,而不仅仅是 pathlib.Path。

  • bpo-25803:当 OS 优先处理诸如 EACCES 而不是 EEXIST 之类的错误时,请避免 Path.mkdir(exist_ok = True)引发的错误错误。

  • bpo-29861:在 multiprocessing.Pool 中完成后,请立即释放对任务,其参数和结果的引用。

  • bpo-19930:os.makedirs()的 mode 参数不再影响新创建的中间级目录的文件许可权位。

  • bpo-29884:故障处理程序:拆卸期间恢复旧的 sigaltstack。 Christophe Zeitouny 的补丁。

  • bpo-25455:修复了递归缓冲的类似文件的对象崩溃的问题。

  • bpo-29800:如果 partial.keywords 的键不是字符串,则修复会在 partial .__ repr_中崩溃。 Michael Seifert 的补丁。

  • bpo-8256:修复了如果未设置 sys.stdin 或 sys.stdout 的属性“ encoding”或“ errors”或不是字符串,则 input()可能失败或崩溃的问题。

  • bpo-28692:现在不建议使用非整数值在 gettext 中选择复数形式。

  • bpo-26121:对 math 函数 erf()和 erfc()使用 C 库实现。

  • bpo-29619:os.stat()和 os.DirEntry.inode()现在使用无符号整数转换 inode(st_ino)。

  • bpo-28298:修复了一个错误,该错误使数组'Q','L'和'I'不能接受大的 intable(具有__int_的对象)作为元素。

  • bpo-29645:加速导入 Web 浏览器模块。 webbrowser.register()现在是线程安全的。

  • bpo-28231:zipfile 模块现在接受外部路径的类似路径的对象。

  • bpo-26915:collections.abc。的 index()和 count()方法现在在进行比较时,在检查相等性之前先检查身份。

  • bpo-28682:在 os.fwalk()中增加了对字节路径的支持。

  • bpo-29728:添加新的socket.TCP_NOTSENT_LOWAT(Linux 3.12)常量。 Nathaniel J. Smith 的补丁。

  • bpo-29623:允许在 ConfigParser.read()中将类似路径的对象用作单个参数。 David Ellis 修补程序。

  • bpo-9303:将 sqlite3 模块迁移到_v2 API。 Aviv Palivoda 修补程序。

  • bpo-28963:修复了用 C 实现的 asyncio.Future.remove_done_callback 的边界迭代。

  • bpo-29704:asyncio.subprocess.SubprocessStreamProtocol 不再在关闭所有管道之前关闭。

  • bpo-29271:修复用 C 实现的 Task.current_task 和 Task.all_tasks 接受 None 参数作为其纯 Python 实现。

  • bpo-29703:修复了异步问题,以支持在子进程中实例化新事件循环。

  • bpo-29615:SimpleXMLRPCDispatcher 不再将 KeyError(或任何其他异常)链接到分派方法中引发的异常。 Petr Motejlek 修补程序。

  • bpo-7769:现在可以将 xmlrpc.server.SimpleXMLRPCDispatcher 的方法 register_function()及其子类用作装饰器。

  • bpo-29376:修复 threading._DummyThread.is_alive()中的 assert 错误。

  • bpo-28624:添加一个测试,以检查 Popen()的 cwd 参数是否接受 PathLike 对象。 Sayan Chowdhury 修补程序。

  • bpo-28518:在 DML 语句之前隐式启动事务。 Aviv Palivoda 修补程序。

  • bpo-29742:如果在封闭的 ssl 传输上被调用,get_extra_info()会引发异常。 Nikolay Kim 的补丁。

  • bpo-16285:urllib.parse.quote 现在基于 RFC 3986,因此默认情况下未引用的字符集中包括“~”。 Christian Theune 和 Ratnadeep Debnath 的补丁。

  • bpo-29532:更改传递给 functools.partial()的 kwarg 字典在创建后不再影响部分对象。

  • bpo-29110:当文件作为文件系统路径给出并且不是有效的 AIFF 格式时,修复 aifc.open()中的文件对象泄漏。 Anthony Zhang 修补程序。

  • bpo-22807:添加 uuid.SafeUUID 和 uuid.UUID.is_safe 以从平台中继有关是否使用 multiprocessing 安全方法生成的 UUID 的信息。

  • bpo-29576:改进了 importlib 中的一些不赞成使用的内容。现在,某些已弃用的方法会发出 DeprecationWarnings 并具有更好的描述性消息。

  • bpo-29534:修复了_decimal 和_pydecimal 的 Decimal.from_float()不同的行为。谢谢安德鲁·内斯特(Andrew Nester)。

  • bpo-10379:locale.format_string 现在支持'monetary'关键字参数,并且不建议使用 locale.format。

  • bpo-29851:现在,如果模块缺少规范,importlib.reload()会引发 ModuleNotFoundError。

  • bpo-28556:键入模块的各种更新:键入。计数器,键入.ChainMap,改进的 ABC 缓存等。Jelle Zijlstra,Ivan Levkivskyi,Manuel Krebber 和ŁukaszLanga 的原始 PR。

  • bpo-29100:修复了 Python 3.6.0 中引入的 datetime.fromtimestamp()回归:检查最小和最大年份。

  • bpo-29416:防止 pathlib.Path.mkdir 中出现无限循环

  • bpo-29444:修复了匹配对象的 group()方法中的越界缓冲区访问。基于 WGH 的补丁。

  • bpo-29377:将 WrapperDescriptorType,MethodWrapperType 和 MethodDescriptorType 内置类型添加到类型模块。 Manuel Krebber 的原始补丁。

  • bpo-29218:现在删除了未使用的 install_misc 命令。自 2000 年以来,该文件已被记录为未使用。Eric N. Vander Weele 修补程序。

  • bpo-29368:现在,在释放 collections.deque 和其他类似列表的对象时,将调用 extend()方法而不是 append()方法。这样可以将脱酸速度提高到 2 倍。

  • bpo-29338:如果为该类提供了__text_signature__,则内置类或扩展类的帮助现在包括构造函数签名。

  • bpo-29335:当子进程退出到停止状态而不是终止状态时(例如:处于 ptrace 下时),修复 subprocess.Popen.wait()。

  • bpo-29290:修复 argparse 中的回归,该回归将帮助消息包装在不间断的空格处。

  • bpo-28735:修复了模拟 ock.MagickMock 与模拟 ock.ANY 的比较。

  • bpo-29197:删除了不推荐使用的函数 ntpath.splitunc()。

  • bpo-29210:不再支持 tarfile.TarFile.add()中不推荐使用的参数“ exclude”。

  • bpo-29219:修复了未初始化的 ctypes.CDLL 实例的 repr 中的无限递归。

  • bpo-29192:删除了 http.cookies 模块中不推荐使用的Function。

  • bpo-29193:string.Formatter.format()的格式字符串参数现在仅在位置上。

  • bpo-29195:在正则表达式对象的方法中不再支持不推荐使用的未记录关键字参数。

  • bpo-28969:修复了 functools.lru_cache 的 C 实现中的竞争条件。当从具有相同未缓存参数的不同线程中同时调用具有完全缓存的缓存Function时,可能会引发 KeyError。

  • bpo-20804:现在,在复制或腌制 unittest.mock.sentinel 属性时,将保留其标识。

  • bpo-29142:在 urllib.request 中,no_proxy 环境变量中带有后缀点的后缀可以再次匹配相关的主机名(例如.b.c 匹配 a.b.c)。 Milan Oberkirch 修补程序。

  • bpo-28961:修复 unittest.mock._Call 助手:不再忽略 name 参数。黄佳俊撰写的补丁。

  • bpo-15812:inspect.getframeinfo()现在可以正确显示上下文的第一行。由 Sam Breese 修补。

  • bpo-28985:更新 sqlite3 模块中的授权者常量。王鼎元的补丁。

  • bpo-29079:在 Windows 上防止 pathlib.resolve()中的无限循环

  • bpo-13051:修复了较大或调整大小的 curses.textpad.Textbox 中的递归错误。基于 Tycho Andersen 的补丁。

  • bpo-9770:curses.ascii 谓词现在可以正确使用负整数。

  • bpo-28427:从另一个线程进行收集时,旧键不应从 WeakValueDictionary 中删除新值。

  • bpo-28923:从 Tix.py 中删除编辑器工件。

  • bpo-28871:修复了释放深层 ElementTree 时发生的崩溃。

  • bpo-19542:修复了 GC 收集发生在另一个线程中时,WeakValueDictionary.setdefault()和 WeakValueDictionary.pop()中的错误。

  • bpo-20191:修复了传递不拥有其元素作为限制的序列时,resource.prlimit()崩溃的问题。

  • bpo-16255:subprocess.Popen 在 Android 上使用/ system/bin/sh 作为 Shell 程序,而不是/ bin/sh。

  • bpo-28779:如果预加载的模块实例化了诸如锁之类的一些 multiprocessing 对象,则 multiprocessing.set_forkserver_preload()将使 forkserver 进程崩溃。

  • bpo-26937:当无法导入 grp 模块时,例如在 Android 平台上,tarfile.TarFile 类的 chown()方法现在不会失败。

  • bpo-28847:dbm.dumb 现在支持读取只读文件,并且在不更改索引文件的情况下不再写入索引文件。如果缺少索引文件并在'r'和'w'模式下重新创建索引文件,则会发出弃用警告(在将来的 Python 版本中将是错误)。

  • bpo-27030:re.sub()替换模板正则表达式中由'\'和 ASCII 字母组成的未知转义现在是错误。

  • bpo-28835:修复在 warnings.catch_warnings()中引入的回归:如果上下文 Management 器中重写了警告,请调用 warnings.showwarning()。

  • bpo-27172:为了帮助从 2.7 升级,已撤销了先前记录的inspect.getfullargspec()的弃用。在不再正式支持 Python 2.7 分支之后,可以再次重新考虑该决定。

  • bpo-28740:添加 sys.getandroidapilevel():以整数形式返回 Android 的构建时间 API 版本。该Function仅在 Android 上可用。

  • bpo-26273:添加新的socket.TCP_CONGESTION(Linux 2.6.13)和socket.TCP_USER_TIMEOUT(Linux 2.6.37)常量。 Omar Sandoval 写的补丁。

  • bpo-28752:恢复了日期时间对象的__reduce __()方法。

  • bpo-28727:正则表达式模式,即由 re.compile()创建的_sre.SRE_Pattern 对象,具有可比性(仅 x == y 和 x!= y 运算符)。此更改应修复bpo-18383:重新加载警告模块时,请勿重复使用警告过滤器(通常仅在单元测试中执行此操作)。

  • bpo-20572:删除 subprocess.Popen.wait 结束时间参数。它已在 3.4 中弃用,并且在此之前未作记录。

  • bpo-25659:在 ctypes 中,防止在诸如 Array 之类的抽象类上调用 from_buffer()和 from_buffer_copy()方法时发生崩溃。

  • bpo-28548:在“ http.server”模块中,如有可能,解析协议版本,以避免在某些错误响应中使用 HTTP 0.9.

  • bpo-19717:使 Path.resolve()在不存在的路径上成功。 Vajrasky Kok 的补丁

  • bpo-28563:修复了在 gettext 模块中处理多种形式选择时可能执行的 DoS 和任意代码执行的问题。表达式解析器现在支持 GNU gettext 支持的确切语法。

  • bpo-28387:修复了在其他线程中调用垃圾回收器时_io.TextIOWrapper 释放器可能崩溃的问题。基于 Sebastian Cufre 的补丁。

  • bpo-27517:如果两次给空数据,LZMA 压缩器和解压缩器将不再引发异常。 Benjamin Fogle 修补程序。

  • bpo-28549:使用 ncurses6 修复了 curses 的 addch()中的段错误。

  • bpo-28449:模式为“ r”或“ r:”的 tarfile.open()现在try在未压缩的情况下打开压缩后的 tar 文件。否则,它有 50%的机会失败,并且 ignore_zeros = True。

  • bpo-23262:Web 浏览器模块现在支持 Firefox 36 和派生的浏览器。基于 Oleg Broytman 的补丁。

  • bpo-24241:现在,X 环境中的 Web 浏览器更喜欢直接使用默认浏览器。另外,webbrowser register()函数现在有一个文档化的“首选”参数,用于指定不带参数的 get()返回的浏览器。大卫·斯蒂尔的补丁

  • bpo-27939:修复了 tkinter.ttk.LabeledScale 和 tkinter.Scale 中的错误,该错误是由于在 Tk 内部将比例表示为 float 值而引起的。如果将 float 值设置为基础 Tk 变量,则 tkinter.IntVar 现在可以工作。

  • bpo-28255:calendar.TextCalendar.prweek()在一周的 calendar 之后不再打印空格。 calendar.TextCalendar.pryear()在一年的 calendar 之后不再打印多余的换行符。基于张翔的补丁。

  • bpo-28255:calendar.TextCalendar.prmonth()在打印一个月的 calendar 后不再在新行的开头打印空格。张翔的补丁。

  • bpo-20491:textwrap.TextWrapper 类现在使用不间断空格。基于 Kaarle Ritvanen 的补丁。

  • bpo-28353:os.fwalk()在断开的链接上不再失败。

  • bpo-28430:修复了 C 实现的 asyncio 迭代器。Future 不接受传递给它的 non-None 值。send(val)。

  • bpo-27025:Tkinter 小部件的生成名称现在以“!”开头。可读性的前缀。

  • bpo-25464:pass添加解决 Tix 库错误的方法,在 tkinter.tix 模块中修复了 HList.header_exists()。

  • bpo-28488:shutil.make_archive()不再将条目“ ./”添加到 ZIP 存档中。

  • bpo-25953:re.sub()现在会在替换模板中为无效的数字组引用引发错误,即使在字符串中未找到模式也是如此。现在,无效组引用的错误消息包括组索引和引用位置。基于 SilentGhost 的补丁。

  • bpo-28469:timeit 现在使用序列 1、2、5、10、20、50 ...,而不是 1、10、100 ...来进行自动调整。

  • bpo-28115:zipfile 模块的命令行界面现在使用 argparse。增加了对长选项的支持。

  • bpo-18219:针对大量列优化 csv.DictWriter。 Mariatta Wijaya 修补程序。

  • bpo-28448:Fix C 实现了 asyncio.Future 在 Windows 上不起作用。

  • bpo-23214:在“ io”模块中,BufferedReader 和 BytesIO 的 read1()方法的参数现在是可选的,并且可以为-1,与 BufferedIOBase 规范匹配。

  • bpo-28480:修复了禁用多线程时构建套接字模块的错误。

  • bpo-28240:timeit:删除自 Python 3.3 后不推荐使用的-c/--clock-t/--time命令行选项。

  • bpo-28240:timeit 现在将基准重复 5 次而不是 3 次,以使基准更加可靠。

  • bpo-28240:如果基准测试花费的时间少于 10 秒,则 timeit 自动调整范围现在将使用单循环迭代,而不是 10 次迭代。 “ python3 -m timeit -s'导入时间''time.sleep(1)'”现在需要 4 秒而不是 40 秒。

  • Distutils.sdist 现在查找区分大小写的 README 和 setup.py 文件。此行为与 Setuptools 6.0 及更高版本中发现的行为匹配。原理请参见setuptools 100

  • bpo-24452:使 Web 浏览器在 Mac OS X 上支持 Chrome。Ned Batchelder 修补。

  • bpo-20766:修复了在 SIGINT 处理程序的处理中 pdb 泄漏的引用。

  • bpo-27998:Windows 上的 os.scandir()中的固定字节路径支持。 Eryk Sun 修补程序。

  • bpo-28317:现在,反汇编程序将解码 FORMAT_VALUE 参数。

  • bpo-28380:unittest.mock 模拟自动规格函数现在可以正确地支持 assert_call,assert_not_drawn 和 assert_drawn_once。

  • bpo-28229:lzma 模块现在支持 pathlib。

  • bpo-28321:修复了在 plistlib 中以二进制格式写入非 BMP 字符的问题。

  • bpo-28225:bz2 模块现在支持 pathlib。 Ethan Furman 的最初补丁。

  • bpo-28227:gzip 现在支持 pathlib。 Ethan Furman 修补程序。

  • bpo-28332:socket.htons 和 socket.ntohs 中已弃用的静默截断。 Oren Milman 的原始补丁。

  • bpo-27358:优化了将 var-keyword 参数合并的Function,并改进了将非 Map 作为 var-keyword 参数传递时的错误消息。

  • bpo-28257:传递不可重复的 var-positional 参数时,改进了错误消息。添加了操作码 BUILD_TUPLE_UNPACK_WITH_CALL。

  • bpo-28322:修复了从错误的 pickle 数据中解开 itertools 对象时可能导致的崩溃。基于 John Leitch 的补丁。

  • bpo-28228:imghdr 现在支持 pathlib。

  • bpo-28226:compileall 现在支持 pathlib。

  • bpo-28314:修复 xml.etree.ElementTree.Element 的 getiterator()方法的函数语句(C 标志)。

  • bpo-28148:在时间模块中停止使用 localtime()和 gmtime()。引入了与平台无关的_PyTime_localtime API,与 POSIX localtime_r 类似,但在所有平台上都可用。 Ed Schouten 修补程序。

  • bpo-28253:极端月份的固定 calendar Function:0001-01 和 9999-12.重新实现了 itermonthdays()和 itermonthdays2()方法,以便它们不会调用 itermonthdates(),而这可能导致 datetime.date 不足/溢出。

  • bpo-28275:修复了在 LZMADecompressor 和 BZ2Decompressor 类的 decompress()方法中释放后可能使用的问题。 John Leitch 的原始补丁。

  • bpo-27897:修复了如果将无效的类似字符串的对象作为名称传递,则在 sqlite3.Connection.create_collation()中可能导致崩溃的问题。张翔的补丁。

  • bpo-18844:random.choices()现在将 k 作为仅关键字的参数,以提高常见情况的可读性,并与其他语言中使用的签名一致。

  • bpo-18893:修复了 Lib/ctypes/macholib/dyld.py 中无效的异常处理。麦迪逊·梅的修补程序。

  • bpo-27611:固定支持 tkinter.tix 模块中的默认根窗口。在 DisplayStyle 构造函数中添加了 master 参数。

  • bpo-27348:在回溯模块中,恢复异常消息的格式,例如“ Exception:None”。这修复了 3.5a2 中引入的回归。

  • bpo-25651:允许将 false 值用于 subTest()的 msg 参数。

  • bpo-27778:修复了 getrandom()被 signal break并且 signal 处理程序引发 Python 异常时 os.getrandom()中的内存泄漏的问题。

  • bpo-28200:修复 os 模块中 Windows 上的内存泄漏(修复 path_converter()函数)。

  • bpo-25400:现在,RobotFileParser 可以正确返回 crawl_delay 和 request_rate 的默认值。 Peter Wirtz 的最初补丁。

  • bpo-27932:防止 win32_ver()中的内存泄漏。

  • 修复 socket._sendfile_use_sendfile 中的 UnboundLocalError。

  • bpo-28075:在 Windows 实施 os.stat()中检查 ERROR_ACCESS_DENIED。 Eryk Sun 修补程序。

  • bpo-22493:pass在正则表达式中间使用内联标志发出的警告消息现在包含(截断的)正则表达式模式。 Tim Graham 的补丁。

  • bpo-25270:防止在传递空字节串时 codecs.escape_encode()引发 SystemError。

  • bpo-28181:pass HTTPS 获得反重力。 Kaartic Sivaraam 修补程序。

  • bpo-25895:在 urllib.parse.urljoin 中启用 WebSocket URL 方案。 Gergely Imreh 和 Markus Holtermann 制作的补丁。

  • bpo-28114:修复了 env 包含字节字符串时 parse_envlist()崩溃的问题。 Eryk Sun 修补程序。

  • bpo-27599:修复了 binascii.b2a_qp()和 binascii.a2b_qp()中的缓冲区溢出。

  • bpo-27906:修复套接字在 TCP 高流量期间接受耗尽的问题。凯文·康威(Kevin Conway)修补程序。

  • bpo-28174:未正确支持 SO_REUSEPORT 时处理。塞思·迈克尔·拉森(Seth Michael Larson)的补丁。

  • bpo-26654:检查 asyncio.Handle .__ repr_中的 functools.partial。 Iceboy 修补程序。

  • bpo-26909:修复 asyncio 中的慢速管道 IO。 INADA Naoki 的补丁。

  • bpo-28176:修复 asyncio.SelectorLoop.sock_connect 中的回调竞赛。

  • bpo-27759:修复 selectors 错误地保留了无效的文件 Descriptors。马克·威廉姆斯的补丁。

  • bpo-28325:删除残留的 MacOS 9 macurl2path 模块及其测试。

  • bpo-28368:如果 child 观察者未连接循环,则拒绝监视进程。 Vincent Michel 修补程序。

  • bpo-28369:将传输的 FD 与 add_reader,add_writer 等一起使用时,引发 RuntimeError。

  • bpo-28370:精确地加速 asyncio.StreamReader.read。 КоренбергМарк的补丁。

  • bpo-28371:弃用传递给 arun_in_executor 的 asyncio.Handle。

  • bpo-28372:修复 asyncio 以支持非 Python 协程的格式。

  • bpo-28399:绑定前,请从 FS 中删除 UNIX 套接字。 КоренбергМарк的补丁。

  • bpo-27972:禁止任务 await 自己。

  • bpo-24142:读取损坏的配置文件使 configparser 处于无效状态。 FlorianHöch 的原始补丁。

  • bpo-29581:ABCMeta .__ new_现在接受**kwargs,从而允许抽象 Base Class 在__init_subclass_中使用关键字参数。 Nate Soares 修补程序。

  • bpo-25532:inspect.unwrap()现在将仅try解包装对象 sys.getrecursionlimit()次,以防止对象在每次属性访问时创建一个新对象。

  • bpo-30177:path.resolve(strict = False)在文件系统中第一个不存在的元素之后不再剪切路径。 Antoine Pietri 修补程序。

Documentation

  • bpo-31294:修复 ZeroMQSocketListener 和 ZeroMQSocketHandler 示例中的不完整代码段,并将其改编为 Python 3.

  • bpo-21649:将 RFC 7525 和 Mozilla 服务器端 TLS 链接添加到 SSL 文档。

  • bpo-31128:允许 pydoc 服务器绑定到任意主机名。

  • bpo-30803:澄清有关真值测试的文档。彼得·托马森(Peter Thomassen)的原始补丁。

  • bpo-30176:在 curses 文档中添加与缺少属性有关的常量。

  • bpo-30052bytes()bytearray()的链接目标现在是它们各自的类型定义,而不是相应的内置函数条目。使用bytesbytearray引用后者。为了确保自动应用此交叉引用和以后的交叉引用更新,现在,日常文档版本会禁用 Sphinx 中的默认输出缓存Function。

  • bpo-26985:在检查文档中添加代码对象的缺失信息。

  • bpo-19824:pass强调模板字符串的国际化实用性并阐明一些用法约束,来改进模板字符串的文档和链接。 (另请参见:bpo-20314bpo-12518)

  • bpo-28929:将文档链接到其在 GitHub 上的源文件。

  • bpo-25008:已有效弃用 smtpd.py 文件,并添加了指向 aiosmtpd(基于异步的第三方替换)的指针。

  • bpo-26355:在每个页面上将规范标题链接添加到文档的相应主要版本。 Matthias Bussonnier 的补丁。

  • bpo-29349:修复了用于构建文档的代码中的 Python 2 语法。

  • bpo-23722:3.6 新增Function指南中的数据模型参考和移植部分现在涵盖了自定义元类以完全支持 PEP 487和零参数super()所需的其他__classcell__处理。

  • bpo-28513:已记录的 zipfile 命令行界面。

Tests

  • bpo-29639:test.support.HOST 现在为“ localhost”,已为您的127.0.0.1需求添加了新的 HOSTv4 常量,类似于现有的 HOSTv6 常量。

  • bpo-31320:test_ssl 中的沉默回溯

  • bpo-31346:对于 SSLContext,首选 PROTOCOL_TLS_CLIENT 和 PROTOCOL_TLS_SERVER 协议。

  • bpo-25674:删除 sha256.tbs-internet.com SSL 测试

  • bpo-30715:OpenSSL 1.1.0f 的地址 ALPN 回调更改。最新版本的行为类似于 OpenSSL 1.0.2,并且不再中止握手。

  • bpo-30822:regrtest:从 regrtest –all 中排除 tzdata。当使用–use = all/-u all 运行测试套件时,请排除 tzdata,因为它会使 test_datetime 太慢(在某些 buildbot 上为 15-20 分钟),然后在某些 buildbot 上超时。还修复了 regrtest 命令行解析器,以允许传递-u extralargefile 来运行 test_zipfile64.

  • bpo-30695:将set_nomemory(start, stop)remove_mem_hooks()函数添加到_testcapi 模块。

  • bpo-30357:test_thread:setUp()现在使用 support.threading_setup()和 support.threading_cleanup()等到线程完成后才能避免后续测试的随机副作用。 Grzegorz Grzywacz 编写的初始补丁。

  • bpo-30197:test.support 模块中的增强Function swap_attr()和 swap_item()。现在,在 with 语句中删除替换的属性或项时,它们可以工作。如果有属性或项目的旧值(如果不存在,则为 None)现在将分配给“ as”子句的目标。

  • bpo-24932:在_testembed 中使用正确的命令行解析

  • bpo-28950:在重新测试命令行参数中禁止将-j0 与-T/-l 组合使用。

  • bpo-28683:修复针对非 root 用户在 Android 上绑定()unix 套接字并引发 PermissionError 的测试。

  • bpo-26936:修复了 Android 上的 test_socket 错误-在某些 Android API 级别上,getservbyname(),getservbyport()和 getaddrinfo()损坏了。

  • bpo-28666:现在,test.support.rmtree 能够删除不可写或不可读的目录。

  • bpo-23839:现在,在运行每个测试文件之前,将清除各种缓存。

  • bpo-26944:修复了用于 Android 的 test_posix,其中“ id -G”完全错误或缺少有效的 gid。

  • bpo-28409:regrtest:修复命令行参数的解析器。

  • bpo-28217:添加_testconsole 模块以测试控制台 Importing。

  • bpo-26939:添加了 support.setswitchinterval()函数来修复挂在 Android armv7 qemu 仿真器上的 test_functools。

Build

  • bpo-31354:允许–with-lto 用于所有版本,而不仅是make profile-opt

  • bpo-31370:删除对无线程构建的支持。此选项在 21 世纪不再有用。除去许多条件路径可以使我们简化代码库,包括难以维护的低级内部代码。

  • bpo-31341:根据 PEP 11,已删除了对 IRIXos 的支持。

  • bpo-30854:修复无线程编译时的编译错误。山本雅之的补丁。

  • bpo-30687:在构建而不是 vcvarsall.bat 时在 Windows 上找到 msbuild.exe

  • bpo-20210:支持安装文件中的* disabled *标记。此标记后列出的扩展模块根本不是由 Makefile 或 setup.py 构建的。

  • bpo-29941:添加--with-assertions configure 标志以显式启用 C assert()检查。默认为关闭。 --with-pydebug表示--with-assertions

  • bpo-28787:使用--with--dtrace配置时,修复了 Python 的树外版本。

  • bpo-29243:使用--enable-optimizations配置时,防止在make testmake install和其他一些 make 目标期间不必要地重建 Python。

  • bpo-23404:不再基于文件修改时间重新生成生成的文件:该操作现在是明确的。将make touch替换为make regen-all

  • bpo-29643:修复--enable-optimization无效。

  • bpo-27593:sys.version 和平台模块 python_build(),python_branch()和 python_revision()函数现在从 repo 构建时使用 git 信息而不是 hg。

  • bpo-29572:更新 Windows 版本和 OS X 安装程序以使用 OpenSSL 1.0.2k。

  • bpo-27659:禁止隐式 C 函数语句:尽可能使用-Werror=implicit-function-declaration(GCC 和 Clang,但取决于编译器版本)。志轩 Y 撰写的补丁。

  • bpo-29384:删除旧的 Be OS 助手脚本。

  • bpo-26851:设置 Android 编译和链接标志。

  • bpo-28768:修复函数_setmode 的隐式语句。山本雅之补丁

  • bpo-29080:从 PCBuild/build.bat 中删除对 hg.exe 的硬依赖性

  • bpo-23903:向 PC/python3.def 添加了丢失的名称。

  • bpo-28762:lockf()在 Android API 级别 24 上可用,但 F_LOCK 宏未在 android-ndk-r13 中定义。

  • bpo-28538:修复由于 if_nameindex()在 Android API 级别 24 上可用但未定义 if_nameindex 结构而发生的编译错误。

  • bpo-20211:请勿将用于安装 C 头文件的目录和用于安装目标代码库的目录添加到交叉编译搜索路径。 Thomas Petazzoni 的原始补丁。

  • bpo-28849:请勿在 Android 上定义 sys.implementation._multiarch。

  • bpo-10656:修复 AIX 上的树外构建。 Tristan Carel 和 Michael Haubenwallner 的补丁。

  • bpo-26359:将–with-optimizations 重命名为–enable-optimizations。

  • bpo-28444:修正交叉编译时缺少的扩展模块。

  • bpo-28208:更新 Windows build 和 OS X 安装程序以使用 SQLite 3.14.2.

  • bpo-28248:更新 Windows 版本和 OS X 安装程序以使用 OpenSSL 1.0.2j。

  • bpo-21124:pass将NULL而不是&PyType_Type传递给 PyVarObject_HEAD_INIT 来修复在 Cygwin 上构建_struct 模块的问题。山本雅之的补丁。

  • bpo-13756:在 Cygwin 上修复构建扩展模块。 Roumen Petrov 的补丁程序,基于 Jason Tishler 的原始补丁程序。

  • bpo-21085:添加 Cygwin 不提供的 siginfo_t.si_band 的配置检查。由 Yamamoto Masayuki 修补的补丁,并由 Erik Bray 进行了重新设置。

  • bpo-28258:使用爱沙尼亚语言环境(Makefile 中的 python-config 和 distclean 目标)修复了构建。由 Arfrever Frehtes Taifersar Arahesis 修补的补丁。

  • bpo-26661:setup.py 现在使用多体系结构包装程序检测系统 libffi。

  • bpo-27979:在非 OSX UNIX 平台上构建_ctypes 时,不再 Bindinglibffi 的完整副本以供使用。在此类平台上构建_ctypes 时,现在需要 libffi 的已安装副本。

  • bpo-15819:删除多余的包含搜索目录选项,用于在源树之外进行构建。

  • bpo-28676:防止在 macOS 上丢失“ getentropy”语句警告。 Gareth Rees 的补丁。

Windows

  • bpo-31392:更新 Windows 版本以使用 OpenSSL 1.1.0f

  • bpo-30389:在 Windows 上的 distutils 中添加对 Visual Studio 2017 的检测。

  • bpo-31358:zlib 不再 Binding 在 CPython 源代码中,而是按需下载,就像 bz2,lzma,OpenSSL,Tcl/Tk 和 SQLite 一样。

  • bpo-31340:更改为使用 MSVC v141 构建(包括在 Visual Studio 2017 中)

  • bpo-30581:现在,当逻辑处理器的数量大于 64 时,os.cpu_count()返回 Windows 上正确的处理器数量。

  • bpo-30916:预构建 OpenSSL,Tcl 和 Tk,并将二进制文件包括在构建中。

  • bpo-30731:将缺失的 xmlns 添加到 python.manifest 中,以使其与模式匹配。

  • bpo-30291:允许使用-64 后缀从 py.exe 要求 64 位解释器。由 Steve(Gadget)Barnes 贡献。

  • bpo-30362:将列表选项(-0,-0p)添加到 py.exe 启动器。由史蒂夫·巴恩斯(Steve Barnes)提供。

  • bpo-23451:修复 socketmodule.c 中的套接字弃用警告。 Segev Finer 修补程序。

  • bpo-30450:Windows 上的构建过程不再依赖 Subversion,而是pass Python 脚本从 GitHub 中提取外部代码。如果在系统上(passpy -3.6)未找到 Python 3.6,则使用 NuGet 下载 32 位 Python 的副本。

  • bpo-29579:从安装程序中删除 readme.txt。

  • bpo-25778:winreg 无法正确截断字符串(Eryk Sun 修补程序)

  • bpo-28896:弃用 WindowsRegistryFinder 并默认将其禁用

  • bpo-28522:修复了 getpathp.c 中缓冲区处理不当的问题

  • bpo-28402:在 Windows 上为 stdlib 添加签名的目录文件。

  • bpo-28333:为 ps1/ps2 和 input()提示启用 Unicode。 (Eryk Sun 修补程序)

  • bpo-28251:改进了 Windows 上的帮助手册。

  • bpo-28110:launcher.msi 在 32 位和 64 位之间具有不同的产品代码

  • bpo-28161:打开 CON 进行写访问失败

  • bpo-28162:如果第一行以 Ctrl Z 开头,则 WindowsConsoleIO readall()失败

  • bpo-28163:WindowsConsoleIO fileno()将错误的标志传递给_open_osfhandle

  • bpo-28164:_ PyIO_get_console_type 针对各种路径失败

  • bpo-28137:将 Windows 路径文件重命名为._pth

  • bpo-28138:Windows ._pth 文件应允许导入站点

IDLE

  • bpo-31493:IDLE 代码上下文–修复代码更新和字体更新计时器。取消计时器可防止在 test_idle 完成时发出警告消息。

  • bpo-31488:IDLE-更新以前扩展类中的非关键选项。应用 configdialog 更改时,请为每个要素类调用.reload。更改 ParenMatch,以便更新的选项影响连接到现有编辑器窗口的现有实例。

  • bpo-31477:IDLE-改进 doc 中的 rstrip 条目。删除尾随空白比空白多。不跳过多行字符串 Literals。

  • bpo-31480:IDLE-使测试pass且默认情况下禁用 zzdummyextensions。

  • bpo-31421:记录 IDLE 如何运行 tkinter 程序。 IDLE 在后台调用 tcl/tk 更新,以便更轻松地进行 tkinter 应用程序的实时交互和实验。

  • bpo-31414:空闲–首先删除 tkImporting 框测试。添加到 int 条目与删除和插入不一样,因为 int('')将失败。

  • bpo-31051:将 IDLE configdialog GenPage 重新排列为“窗口”,“编辑器”和“帮助”部分。

  • bpo-30617:IDLE-为编辑器的突出子类添加文档字符串和测试。将一些数据和函数从类移动到模块级别。 Cheryl Sabella 修补程序。

  • bpo-31287:空闲-请勿在 test_configdialog 中修改 tkinter.message。

  • bpo-27099:将 IDLE 的内置“extensions”转换为常规Function。大约 10 个 IDLE Function被实现为所谓的可选扩展。它们的不同行为可能会使用户感到困惑甚至更糟,并且不利于维护。因此转换。用户的主要区别在于,现在可以统一处理内置Function的用户可配置键绑定。现在,在键集中编辑绑定只会影响其在键集中的值。所有绑定都在 config-extensions.def 中特定于系统的默认键集中定义在一起。所有自定义键集都作为一个整体保存在 config-extension.cfg 中。一旦单击“应用”或“确定”,所有这些都会立即生效。受影响的事件是“ <>”,“ <>”,“ <>”,“ <>”,“ <>”,“ <>”,“ <>”和“ <>”。在 3.6.3 之前进行的任何(全局)自定义设置均不会影响 3.6.3 之后的特定于键集的自定义设置。反之亦然。 Charles Wohlganger 的最初补丁。

  • bpo-31206:IDLE:ConfigDialog 中的 Factor HighPage(Frame)类。 Cheryl Sabella 修补程序。

  • bpo-31001:为 configdialog 高亮选项卡添加测试。 Cheryl Sabella 修补程序。

  • bpo-31205:IDLE:ConfigDialog 中的 Factor KeysPage(Frame)类。稍作修改的测试将 continue pass。 Cheryl Sabella 修补程序。

  • bpo-31130:IDLE –停止 test_configdialog 中的泄漏。 Victor Stinner 的最初补丁。

  • bpo-31002:为 configdialog 键选项卡添加测试。 Cheryl Sabella 修补程序。

  • bpo-19903:空闲:呼叫提示使用inspect.signature而不是inspect.getfullargspec。这可以改善转换为使用 Argument Clinic 的内置插件的提示。路易·卢的补丁。

  • bpo-31083:IDLE-在 configdialog 中添加 TabPage 类的轮廓。更新现有的类以匹配大纲。 Cheryl Sabella 的最初补丁。

  • bpo-31050:从 ConfigDialog 中分解 GenPage(Frame)类。稍作修改的测试将 continue pass。 Cheryl Sabella 修补程序。

  • bpo-31004:IDLE-ConfigDialog 中的 Factor FontPage(Frame)类。稍作修改的测试 continue pass。修复常规测试。主要由 Cheryl Sabella 修补。

  • bpo-30781:IDLE-在 ConfigDialog 中使用 ttk 小部件。 Terry Jan Reedy 和 Cheryl Sabella 的补丁。

  • bpo-31060:IDLE-完成与每个选项卡和按钮有关的 ConfigDialog 分组方法的重新排列方法,将有助于编写测试和改进选项卡,并将组划分为类。

  • bpo-30853:IDLE –从 ConfigDialog 中分解出 VarTrace 类。实例跟踪器 Management 由 tk 变量和回调函数组成的对。打开跟踪时,设置变量将调用该函数。新类的考试覆盖率为 100%。

  • bpo-31003:IDLE:为“常规”选项卡添加更多测试。

  • bpo-30993:IDLE-改进 configdialog 字体页面和测试。在 configdialog 中:在 create_font_tab 文档字符串中记录因果路径。简化一些属性名称。将 set_samples 调用移至 var_changed_font(来自 Cheryl Sabella 的想法)。在创建小部件Function之后,将相关Function移动到位置。在 test_configdialog 中:修复 test_font_set,以便不依赖于 Sequences。修复重命名的 test_indent_scale,以便它测试小部件。调整测试以测试 set_samples 调用的移动。添加负载Function测试。将所有字体测试放在一个类中,将制表符缩进测试放在另一个类中。除两行外,这些测试完全涵盖了相关Function。

  • bpo-30981:IDLE –添加更多的 configdialog 字体页面测试。

  • bpo-28523:IDLE:在 configdialog 中将“ colour”替换为“ color”。

  • bpo-30917:添加对 idlelib.config.IdleConf 的测试。覆盖率从 46%增加到 96%。路易·卢的补丁。

  • bpo-30934:记录 idlelib 测试的覆盖范围详细信息。将部分添加到 idlelib/idle-test/README.txt。包括检查是否同时采用了分支。排除在单元测试期间不会运行的特定于 IDLE 的代码。

  • bpo-30913:IDLE:文档 ConfigDialog tk 文档字符串中的变量,方法和小部件这将有助于改进对话框并拆分类。 Cheryl Sabella 的原始补丁。

  • bpo-30899:IDLE:在 config 中添加针对 ConfigParser 子类的测试。路易·卢的补丁。

  • bpo-30881:IDLE:将文档字符串添加到 browser.py。 Cheryl Sabella 修补程序。

  • bpo-30851:IDLE:删除 configdialog 中未使用的变量。一个是重复项,一个是重复项,但不能由用户更改。 Cheryl Sabella 修补程序。

  • bpo-30870:IDLE:在“设置”对话框中,使用向上,向下键以及鼠标选择字体。 Louie Lu 的最初补丁。

  • bpo-8231:IDLE:仅调用一次 config.IdleConf.GetUserCfgDir。

  • bpo-30779:IDLE:将 configdialog 中的 Factor ConfigChanges 类放入 config 中;测试。 *在配置中,将转储测试代码放入函数中;运行它并在'if name =='main'中进行单元测试。 *在 bpo 问题上基于 changes_class_v4.py 添加类 config.ConfigChanges。 *添加类 test_config.ChangesTest,部分使用 configdialog_tests_v1.py。 *修改 configdialog 以使用 ConfigChanges;请参阅追踪器 msg297804. *修改 test_configdialog 以匹配 configdialog 的更改。 *删除未使用或移至 ConfigChanges 的 configdialog 函数。 Cheryl Sabella 贡献了补丁的一部分。

  • bpo-30777:IDLE:configdialog-添加文档字符串并修复 Comments。 Cheryl Sabella 修补程序。

  • bpo-30495:IDLE:使用文档字符串,PEP8 名称和更多测试来改善 textview。 Cheryl Sabella 修补程序。

  • bpo-30723:IDLE:对 parenmatch 进行一些改进。添加“原谅”样式以突出打开者和关闭者。设置“默认”样式(不是默认样式),它是“打开器”的同义词。使所有样式的延时工作都相同。添加配置对话框扩展选项卡的帮助,包括 parenmatch 帮助。添加新测试。 Charles Wohlganger 的原始补丁。

  • bpo-30674:IDLE:将文档字符串添加到 grep 模块。 Cheryl Sabella 修补程序

  • bpo-21519:IDLE 的基本自定义密钥 Importing 对话框现在可以正确检测到重复项。 Saimadhav Heblikar 的原始补丁。

  • bpo-29910:pass快捷键 Comments 掉某个区域后,IDLE 不再删除字符。对于此 IDLE 和 IDLE 与默认键绑定之间的其他潜在冲突,请添加return 'break'

  • bpo-30728:查看并更改 idlelib.config 对话框名称。小写的方法和属性名称。将“颜色”替换为“颜色”,扩展过于神秘的名称,删除不需要的下划线。将import *替换为特定的导入。 Cheryl Sabella 的补丁。

  • bpo-6739:IDLE:trypass将其与 tk 绑定来验证用户 Importing 的键序列。为所有 3 个验证Function添加测试。 G Polo 制作的原始补丁。 Cheryl Sabella 添加的测试。

  • bpo-15786:修复了 IDLE 自动完成框的几个问题。现在应该可以进行以下操作:单击选择框项;使用滚动条;pass点击 Return 选择一个项目。不再挂在 MacOSX 上。路易·卢的补丁。

  • bpo-25514:添加有关 IDLE 失败的文档子小节以启动。弹出无连接消息将用户定向到此部分。

  • bpo-30642:修复 IDLE 测试中的参考泄漏。 Louie Lu 和 Terry Jan Reedy 的补丁。

  • bpo-30495:为 textview.py 添加文档字符串并使用 PEP8 名称。 Cheryl Sabella 和 Terry Jan Reedy 的补丁。

  • bpo-30290:帮助中心:使用 pep8 名称并添加测试。将覆盖率提高到 100%。 Louie Lu,Cheryl Sabella 和 Terry Jan Reedy 的补丁。

  • bpo-30303:在文本视图中添加_utest 选项;添加新测试。将覆盖率提高到 100%。 Louie Lu 和 Terry Jan Reedy 的补丁。

  • bpo-29071:IDLE 为 f 字符串添加前缀颜色(但不是无效的 ur 前缀)。

  • bpo-28572:将 10%的 IDLE 的 test_configdialog 覆盖率增加。更新和扩充配置系统的描述。

Tools/Demos

  • bpo-30983:gdb 集成命令(py-bt 等)现在也适用于优化的共享版本。 PEP 523引入了_PyEval_EvalFrameDefault,它可以在非调试共享版本上内联 PyEval_EvalFrameEx。这 break 了使用 py-bt,py-up 以及其他一些特定于 Python 的 gdb 集成的Function。仅在 python-gdb.py 中查找_PyEval_EvalFrameDefault 帧即可解决此问题。 Bruno“ Polaco” Penteado 的原始补丁。

  • bpo-29748:在 Argument Clinic 中添加了切片索引转换器。

  • bpo-24037:参数诊所现在将转换器bool(accept={int})而不是int用于语义布尔值。这样可以避免重复使用 Python 和 C 的默认值,并有助于将来转换为bool

  • bpo-29367:python-gdb.py 现在还支持method-wrapper(wrapperobject)个对象。

  • bpo-28023:修复了 python-gdb.py 不支持新的 dict 实现。

  • bpo-15369:pybench 和 pystone 微基准已从工具中删除。请使用更可靠的新 Python 基准测试套件https://github.com/python/performance,该套件包括可移植版本的 pybench,可在 Python 2 和 Python 3 上运行。

  • bpo-28102:zipfile 模块 CLI 现在将使用情况打印到 stderr。 Stephen J.Turnbull 的补丁。

C API

  • bpo-31338:添加了Py_UNREACHABLE()宏,用于无法预期到达的代码路径。现在,C API 手册中记录了此宏和其他一些有用的宏。

  • bpo-30832:删除自己的线程本地存储实现。 CPython 在 Python/thread.c 上提供了自己的线程本地存储(TLS)实现,用于平台未提供本机 TLS 的情况。但是,当前所有受支持的平台(Windows 和 pthreads)都提供了本机 TLS,并在任何情况下都无条件地定义了 Py_HAVE_NATIVE_TLS 宏。

  • bpo-30708:如果第二个参数为 NULL 且 wchar_t *字符串包含空字符,则 PyUnicode_AsWideCharString()现在引发 ValueError。

  • bpo-16500:弃用 PyOS_AfterFork()并添加 PyOS_BeforeFork(),PyOS_AfterFork_Parent()和 PyOS_AfterFork_Child()。

  • bpo-6532:PyThread_start_new_thread()和 PyThread_get_thread_ident()的结果类型以及 PyThreadState_SetAsyncExc()的 id 参数从“ long”更改为“ unsigned long”。

  • bpo-27867:如果未设置 Py_LIMITED_API 或将其设置为 0x03050400 和 0x03060000(不包括)或 0x03060100 或更高的值,则不建议使用函数 PySlice_GetIndicesEx(),并用宏替换。添加了函数 PySlice_Unpack()和 PySlice_AdjustIndices()。

  • bpo-29083:修复了一些公共 API 函数的语句。 PyArg_VaParse()和 PyArg_VaParseTupleAndKeywords()在受限 API 中不可用。定义 PY_SSIZE_T_CLEAN 时,PyArg_ValidateKeywordArguments(),PyArg_UnpackTuple()和 Py_BuildValue()在版本<3.3 的受限 API 中不可用。

  • bpo-28769:PyUnicode_AsUTF8AndSize()和 PyUnicode_AsUTF8()的结果现在是const char *类型,而不是char *类型。

  • bpo-29058:仅当 Py_LIMITED_API 设置为支持该 API 的最低 Python 版本的 PY_VERSION_HEX 值时,Python 3.2 之后添加的所有稳定 API 扩展现在都可用。

  • bpo-28822:现在已将 PyUnicode_FindChar()的索引参数* start end *调整为类似于str[start:end]

  • bpo-28808:PyUnicode_CompareWithASCIIString()现在永远不会引发异常。

  • bpo-28761:结构 PyMemberDef,PyGetSetDef,PyStructSequence_Field,PyStructSequence_Desc 和 wrapperbase 的字段名称和 doc 现在为const char *类型,而不是char *类型。

  • bpo-28748:私有变量_Py_PackageContext 现在的类型为const char *而不是char *

  • bpo-19569:现在,如果使用大多数不赞成使用的Function,则会发出编译器警告。

  • bpo-28426:不推荐使用的未记录Function PyUnicode_AsEncodedObject(),PyUnicode_AsDecodedObject(),PyUnicode_AsDecodedUnicode()和 PyUnicode_AsEncodedUnicode()。

Python 3.6.6 finally版

*发布日期:2018-06-27 *

版本 3.6.6 中没有新变化。

Python 3.6.6 版本候选 1

*发布日期:2018-06-11 *

核心和内建函数

  • bpo-33786:修复异步生成器以正确处理 athrow()中的 GeneratorExit

  • bpo-30654:修复了即使在之前设置了自定义处理程序的情况下,在解释器关闭时将 SIGINT 处理程序重置为 SIG_DFL 的问题。 Philipp Kerling 修补程序。

  • bpo-33622:修复了垃圾收集器无法使用__del__方法添加对象或将其引用到gc.garbage列表中时泄漏的问题。现在可以在设置了异常并保留该异常时调用PyGC_Collect()

  • bpo-31849:修复了 pyhash.c 中的有符号/无符号比较警告。

  • bpo-33391:修复 set_symmetric_difference()中的泄漏。

  • bpo-28055:修复 siphash24()中未对齐的访问。 Rolf Eike Beer 的补丁。

  • bpo-33231:修复normalizestring()中潜在的内存泄漏。

  • bpo-29922:当__aenter__()__aexit__()返回不可 await 的对象时,改进了“与...异步”中的错误消息。

  • bpo-33199:从密钥共享字典复制时,字典实现中的ma_version_tag未初始化。

  • bpo-33041:修复了函数包含async for循环时跳转的问题。

  • bpo-32282:修复 Windows 套接字模块中的 VersionHelpers.h 包含中不必要的 ifdef。

  • bpo-21983:如果 type 参数是 ctypes 结构化数据类型,则修复ctypes.cast()中的崩溃。 Eryk Sun 和 Oren Milman 的补丁。

Library

  • bpo-30167:如果设置了 PYTHONSTARTUP,则防止 site.main()异常。史蒂夫·韦伯(Steve Weber)的补丁。

  • bpo-33812:日期时间实例 d 具有非 None tzinfo,但 d.tzinfo.utcoffset(d)返回 None 的 astimezone()方法现在将其视为天真。

  • bpo-30805:pass调试日志记录避免竞争情况

  • bpo-33767:现在,对mmap.mmap个对象执行串联(+)和重复(*)序列操作会引发TypeError而不是SystemError。 Zackery Spytz 修补程序。

  • bpo-32684:修复聚集以传播自身的取消,即使使用 return_exceptions 也是如此。

  • bpo-33674:修复 asyncio.sslproto 的 SSLProtocol.connection_made()中的竞争条件:立即开始握手,而不要使用 call_soon()。以前,可以在握手开始之前调用 data_received(),从而导致握手挂起或失败。

  • bpo-31647:修复了已关闭_SelectorSocketTransport 后调用 write_eof()引发 AttributeError 的错误。

  • bpo-33672:使用 Cython 的虚假协程修复 Task .__ repr_崩溃

  • bpo-33469:在关闭使用 run_in_executor 的循环后修复 RuntimeError

  • bpo-11874:将用法分成可包装的部分时,请使用更好的正则表达式。避免来自自定义 metavar 字符串的虚假 assert 错误。

  • bpo-30877:修复了 JSON 解码器的 Python 实现中的一个错误,该错误阻止在完成解码后清除已解析字符串的缓存。基于 c-fos 的补丁。

  • bpo-33548:tempfile._candidate_tempdir_list 应该考虑常见的 TEMP 位置

  • bpo-33542:阻止uuid.get_node在 Windows 上使用 DUID 而不是 MAC。 Zvi Effron 的补丁

  • bpo-26819:在 Windows proactor 事件循环中使用ReadTransport.resume_reading修复了竞争条件。

  • bpo-28556:键入模块中的次要问题:向NamedTuple.__new__添加 Comments,在Generic.__new__中传递*args**kwds。 PauliusŠarka 和 Chad Dombrova 的原始 PR。

  • bpo-20087:使用 glibc 2.27 支持的语言环境更新了别名 Map。

  • bpo-33422:修复了在 pydoc 上查找字节/字符串 Literals 时尾随引号引起来的问题。 AndrésDelfino 修补程序。

  • bpo-33197:在构造无效的检查时更新错误消息。参数 Dong-hee Na 修补。

  • bpo-33383:修复了使用单个参数调用dbm.ndbm数据库对象的 get()方法时发生的崩溃。

  • bpo-33329:在较新的 glibcs 上修复 multiprocessing 回归

  • bpo-991266:固定引用http.cookies.SimpleCookieComment属性。

  • bpo-33131:将 Binding 点的 Binding 版本升级到 10.0.1.

  • bpo-33308:修复了将 ST 对象转换为具有line_info=Falsecol_info=True的 Tuples 树或列表树时在parser模块中发生的崩溃。

  • bpo-33263:修复 Vlad Starostin 在_SelectorSocketTransport补丁中的 FD 泄漏。

  • bpo-33256:修复了cgitb.html()产生的 html 中<module>调用的显示。 StéphaneBlondon 的补丁。

  • bpo-33203random.Random.choice()现在即使在没有getrandbits()实现的子类中调用时,也会连续为空序列提高IndexError

  • bpo-33224:更新 PEP 479的 difflib.mdiff()。将生成器中未捕获的 StopIteration 转换为返回语句。

  • bpo-33209:在pickle.Pickler.dump()的 C 实现结束时结束帧。

  • bpo-32861:urllib.robotparser 的__str__表示现在包括通配符条目以及“爬网延迟”和“请求速率”字段。 Michael Lazar 修补程序。

  • bpo-33096:允许 ttk.Treeview.insert 插入具有错误布尔值的 iid。注意,iid = 0 和 iid = False 相同。 Garvit Khatri 修补程序。

  • bpo-33127:ssl 模块现在可以使用 LibreSSL 2.7.1 进行编译。

  • bpo-33021:在 fstat()调用期间释放 GIL,避免在调用 mmap.mmap(),os.urandom()和 random.seed()时所有线程挂起。 Nir Soffer 的补丁。

  • bpo-27683:修复ipaddress中的回归,当网络由包含整数掩码且仅剩 1 位地址的 Tuples 构造时,hosts()的结果为空。

  • bpo-32844:如果关闭了另一个低 Descriptors,则在子进程中将低 Descriptors(0 或 1)错误地重定向到 stderr。

  • bpo-31908:修复trace模块命令行工具的封面文件输出。仅当使用--missing选项时,以前发出的封面文件。 Michael Selik 修补程序。

  • bpo-31457:如果使用嵌套日志适配器,则不再Ellipsis内部process()方法。

  • bpo-16865:在ctypes中支持> = 2GiB 的数组。 Segev Finer 修补程序。

  • bpo-31238:pydoc:私有 ServerThread 类的 stop()方法现在 await,直到 DocServer.serve_until_quit()完成,然后将其 docserver 属性显式设置为 None,以break引用周期。

Documentation

  • bpo-33503:修复损坏的 pypi 链接

  • bpo-33421:为typing.AsyncContextManager添加缺少的文档。

  • bpo-33378:为https://docs.python.org/3/添加韩语切换器

  • bpo-33276:说明模块上的__path__属性不能只是任何值。

  • bpo-33201:更新用于编写 C 扩展类型的文档。

  • bpo-33195:弃用c-api/arg文档中的Py_UNICODE用法。自 Python 3.3 起,不推荐使用Py_UNICODE相关的 API,但在文档中将其遗漏。

  • bpo-33126:文档 PyBuffer_ToContiguous()。

  • bpo-27212:修改islice()配方的文档以使用直到起始索引为止的初始值。

  • bpo-28247:更新zipapp文档,以描述如何制作独立应用程序。

  • bpo-18802:ipaddress 的文档更改。 Jon Foster 和 Berker Peksag 的补丁。

  • bpo-27428:更新文档以阐明WindowsRegistryFinder实现了MetaPathFinder。 (Himanshu Lakhara 的补丁)

  • bpo-8243:添加有关 curses.addch 和 curses.addstr 在窗口或垫外书写时的异常行为的 Comments。

  • bpo-31432:澄清 ssl.SSLContext.verify_mode 的 CERT_NONE,CERT_OPTIONAL 和 CERT_REQUIRED 标志的含义。

Tests

  • bpo-33655:忽略 BSD 平台上的 test_posix_fallocate 失败,这可能是由于在 ZFS 上运行而导致的。

  • bpo-19417:添加 test_bdb.py。

Build

  • bpo-5755:将-Wstrict-prototypes选项从OPT移到CFLAGS_NODIST。当构建用 C 编写的扩展模块时,此选项发出令人讨厌的警告。

  • bpo-33614:确保正确重新生成 Windows 上稳定的 ABI 的模块定义文件。

  • bpo-33522:在https://python.visualstudio.com/cpython的 Visual Studio Team Services 上启用 CI 构建

  • bpo-33012:为 gcc 8 添加-Wno-cast-function-type,以消除有关函数强制转换的警告,例如在方法定义列表中强制转换为 PyCFunction。

  • bpo-33394:当在命令行中将宏传递给 GNU make 时,为扩展模块启用详细构建。

Windows

  • bpo-33184:将 Windows 安装程序更新为 OpenSSL 1.0.2o。

macOS

  • bpo-33184:更新 macOS 安装程序版本以使用 OpenSSL 1.0.2o。

IDLE

  • bpo-33656:在 Windows 上,添加 API 调用,说 tk 可扩展为 DPI。在 Windows 8.1 或 10 上,Python 二进制文件的 DPI 兼容性属性未更改,并且监视器分辨率大于 96 DPI,这将使文本和线条更清晰。否则,它将无效。

  • bpo-33768:单击上下文行会将其移到编辑器窗口的顶部。

  • bpo-33763:IDLE:使用只读文本窗口小部件而不是标签窗口小部件进行代码上下文。

  • bpo-33664:逐行滚动 IDLE 编辑器文本。以前,鼠标滚轮和滚动条滑块将文本移动固定数量的像素,从而在编辑器框的顶部显示了部分行。该更改还适用于 Shell 和 grep 输出窗口,但不适用于只读文本视图。

  • bpo-33679:为“代码上下文”启用特定于主题的颜色配置。使用“突出显示”选项卡查看内置主题的设置或将设置添加到自定义主题。

  • bpo-33642:最多显示用于代码上下文的最大行非空白行。如果没有当前上下文,请显示一个空白行。

  • bpo-33628:IDLE:清理 codecontext.py 及其测试。

  • bpo-33564:IDLE 的代码上下文现在将异步识别为块打开器。

  • bpo-29706:IDLE 现在在 3.6 中为异步着色并 await 作为关键字。它们成为 3.7 中的完整关键字。

  • bpo-21474:将单词/标识符的定义从 ascii 更新为 unicode。在文本和 Importing 框中,这将pass双击影响选择,pass控制向左/向右移动向左/向右,以及pass控制-BACKSPACE/DEL 向左/向右删除,将影响选择。

  • bpo-33204:IDLE:始终为无效的字符串前缀上色。 “ u”字符串前缀不能与“ r”或“ f”配对。从右边开始,始终为有效地为所有前缀加上颜色。修订并扩展着色剂测试。

  • bpo-32831:添加文档字符串和代码上下文测试。

Tools/Demos

  • bpo-33189:pygettext.py 现在仅将 Literals 字符串识别为 docstrings 和可翻译字符串,并拒绝字节 Literals 和 f 字符串表达式。

  • bpo-31920:修复了将目录作为pygettext脚本中的参数进行处理的问题。基于 Oleg Krasnikov 的补丁。

  • bpo-29673:修复 pystackv 和 pystack gdbinit 宏。

  • bpo-32885:为Tools/scripts/pathfix.py添加-n标志以禁用自动备份创建(后缀为~的文件)。

  • bpo-31583:修复了 2to3,使其与–add-suffix 选项一起使用,但对于当前目录中文件的相对路径,没有–output-dir 选项。

C API

  • bpo-32374:证明可以使用 m_state = NULL 调用多阶段初始化模块的 m_traverse 并添加完整性检查

Python 3.6.5 finally版

*发布日期:2018-03-28 *

Tests

  • bpo-32872:避免名称空间软件包的兼容性问题。

Build

  • bpo-33163:将 pip 升级到 9.0.3,并将 setuptools 升级到 v39.0.1.

Python 3.6.5 发行候选 1

*发布日期:2018-03-13 *

Security

  • bpo-33001:用于防止 Windows 上 os.symlink 中的缓冲区溢出的最小修复

  • bpo-32981:difflib 和 poplib 中的正则表达式容易遭受灾难性的回溯。这些正则表达式形成了潜在的 DOS 向量(REDOS)。它们已被重构。这解决了 CVE-2018-1060 和 CVE-2018-1061. Jamie Davis 的补丁。

核心和内建函数

  • bpo-33026:pass设置 f_lineno 固定跳出“ with”块。

  • bpo-17288:防止从“返回”和“异常”跟踪事件跳转。

  • bpo-32889:更新 Valgrind 禁止列表以将Py_ADDRESS_IN_RANG重命名为address_in_range

  • bpo-32650:Pdb 和其他依赖 bdb.py 的调试器将正确跳过(下一命令)本机协程。 Pablo Galindo 修补程序。

  • bpo-32685:当 Python 2 形式的 print 语句与复合语句的标题位于同一行或以分号而不是换行符终止时,改进建议。 Nitish Chandra 修补程序。

  • bpo-32583:修复了使用自定义解码错误处理程序时,由于写越界错误而导致内置 Unicode 解码器崩溃的可能性。

  • bpo-26163:改进了 Frozenset()哈希值,以便在面对包含许多相似值的数据集时创建更多不同的哈希值。

  • bpo-27169__debug__常量现已在编译时优化。这也修复了bpo-22091

  • bpo-32329PYTHONHASHSEED=0关闭散列随机化后,现在已将sys.flags.hash_randomization正确设置为 0.

  • bpo-30416:现在可以避免优化器花费大量时间进行复杂的计算,也不必花费大量内存来在常量折叠中创建大常量。

  • bpo-18533repr()包含自己的values()items()的字典不再提高RecursionError; OrderedDict 与此类似。相反,与其他递归结构一样,使用...。 Ben North 的补丁。

  • bpo-32028:现在,在生成将 Py2 打印语句转换为 Py3 内置打印函数调用的建议时,可以正确地忽略前导空格。 Sanyam Khurana 修补程序。

  • bpo-32137:深度嵌套的 dict 的 repr 现在引发 RecursionError 而不是由于堆栈溢出而崩溃。

Library

  • bpo-33064:lib2to3 现在可以正确支持函数签名中*args**kwargs后的尾部逗号。

  • bpo-31804:避免多重处理失败。如果标准流关闭或退出时为 None,则进行处理。

  • bpo-33037:关闭 SSL 传输后,跳过发送/接收数据。

  • bpo-30353:修复了 64 位 Cygwin/MinGW 上的结构的 ctypes 值传递。

  • bpo-33009:针对单个参数的部分方法修复了 inspect.signature()。

  • bpo-32969:在 zlib 中公开几个缺少的常量,并修复相应的文档。

  • bpo-32713:修复了 tarfile.itn 对越界浮点值的处理。 Joffrey Fuhrer 修补程序。

  • bpo-30622:ssl 模块现在可以检测到 LibreSSL 中缺少 NPN 支持。

  • bpo-32922:dbm.open()现在使用文件系统编码而不是缺省编码来编码文件名。

  • bpo-32859:在os.dup2中,不要检查每个调用dup3 syscall 是否存在。

  • bpo-21060:将 setup.py 上传的混乱消息从“在先前命令中没有创建 dist 文件”重写为更有用的“必须在一个命令中创建和上传文件”。

  • bpo-32857:在tkinter中,after_cancel(None)现在提高ValueError而不是取消第一个计划的Function。 Cheryl Sabella 修补程序。

  • bpo-32852:确保在运行跟踪时 sys.argv 保留为列表。

  • bpo-32841:修复了asyncio.Condition问题,该问题在通知和取消条件锁定后默默地忽略了取消。由 Bar Harel 修补。

  • bpo-31787:修正了各种模块中__init__()方法的刷新。 (由 Oren Milman 提供)

  • bpo-30157:修复了仅引用最后一个字段时 csv.Sniffer.sniff()中的猜测引号和定界符。杰克·戴维斯(Jake Davis)的补丁。

  • bpo-32394:套接字:在运行时删除旧版本 Windows 上的 TCP_FASTOPEN 和 TCP_KEEPCNT 标志。

  • bpo-32777:在标记子进程中的 exec 上可继承的文件 Descriptors 时,修复了 POSIX 系统上子进程中罕见但潜在的 pre-exec 子进程死锁。此错误似乎已在 3.4 中引入。

  • bpo-32647:ctypes 模块过去依赖于 dlopen 的间接链接。现在,在带有 dl 的平台上,共享扩展已明确链接到 libdl。

  • bpo-32734:修复了asyncio.Lock()安全问题,该问题允许多次获取和锁定同一把锁,而无需释放它。由 Bar Harel 修补。

  • bpo-32727:不要在地址中的 SMTP 信封中包含名称字段。 StéphaneWirtel 修补程序

  • bpo-27931:修复用户名为空的带引号的字符串时电子邮件地址 Headers 解析错误。张翔的补丁。

  • bpo-32304:distutils 的上载命令不再破坏以 CR 字节结尾的 tar 文件,并且不再try在任何上载文本字段中将 CR 转换为 CRLF。

  • bpo-32502:如果遇到 64 位硬件地址,则 uuid.uuid1 不再引发异常。

  • bpo-31848:当找不到 SSND 块时,修复 Aifc_read.initfp()中的错误处理。 Zackery Spytz 修补程序。

  • bpo-32555:在 FreeBSD 和 Solaris 上,os.strerror()现在总是从当前的语言环境编码中解码字节字符串,而不是在某些情况下使用 ASCII/surrogateescape。

  • bpo-32521:nis 模块现在与新的 libnsl 和 Headers 位置兼容。

  • bpo-32473:提高 ABCMeta._dump_registry()输出的可读性

  • bpo-32521:glibc 已删除 Sun RPC。在 nis 模块中使用替换的 libtirpcHeaders 和库。

  • bpo-32228:确保truncate()在写入时间超过缓冲区大小后保留文件位置(由tell()报告)。

  • bpo-26133:不要在解释器关闭时在 asyncio UNIX 事件循环中取消订阅 signal。

  • bpo-32185:SSL 模块不再在具有 OpenSSL 1.0.2 或 inet_pton 的平台上以 SNI TLSextensions 发送 IP 地址。

  • bpo-32323urllib.parse.urlsplit()现在不会将主机名中范围内的 IPv6 地址的 zone-id(作用域)转换为小写。

  • bpo-32302:修复了 CRT v142 的 distutils 的 bdist_wininst:它与 CRT v140 二进制兼容。

  • bpo-32255:现在,将单个空字段写入 CSV 文件时总是用引号引起来。这样可以将空行与包含单个空字段的行区分开。 Licht Takeuchi 修补程序。

  • bpo-32277:在不支持chmod(..., follow_symlinks=False)的平台上提高NotImplementedError而不是SystemError。 Anthony Sottile 修补程序。

  • bpo-32199:getnode()ip getter 现在使用“ ip link”而不是“ ip link list”。

  • bpo-27456:确保在 Linux 上设置了 TCP_NODELAY。 Victor Stinner 的测试。

  • bpo-31900locale.localeconv()函数现在将LC_CTYPE区域设置临时设置为LC_NUMERIC区域设置,以解码decimal_pointthousands_sep字节字符串(如果它们是非 ASCII 或长于 1 个字节),并且LC_NUMERIC区域设置不同于LC_CTYPE区域设置。此临时更改会影响其他线程。格式化具有n类型(例如'{:n}'.format(1234))的数字(intfloatfloat和子类)时,str.format()方法的更改相同。

  • bpo-31802:即使仍未导入os模块,现在也可以导入本机路径模块(posixpathntpath)。

Documentation

  • bpo-17232:澄清-O 和-OO 的文档。特里·里迪(Terry Reedy)的补丁。

  • bpo-32800:更新到 w3c doc 的 xml 默认名称空间的链接。

  • bpo-8722:当属性get()方法引发AttributeError时,文档getattr()的行为。

  • bpo-32614:修改文档中的 RE 示例以使用原始字符串来防止DeprecationWarning并将文本添加到 REGEX HOWTO 中以突出显示不赞成使用的内容。

  • bpo-31972:改进pathlib.PurePath个子类的文档字符串。

  • bpo-17799:说明 sys.settrace 和 sys.setprofile 及其对应的 C-API 的真实行为,与每个函数中接收的事件类型有关。 Pablo Galindo Salgado 修补程序。

Tests

  • bpo-32517:修复由于未关闭KqueueSelector循环的传输而在 macOS 10.12.2 上失败test_asyncio的问题。

  • bpo-32721:如果未构建_md5 模块,则将 test_hashlib 修复为不会失败。

  • bpo-32252:修复了测试崩溃时用来防止核心转储文件的 faulthandler_suppress_crash_report()。 getrlimit()成功返回零。

  • bpo-31518:Debian Unstable 已为 SSLv23_METHOD()禁用 TLS 1.0 和 1.1. 将某些测试的 TLS/SSL 协议更改为 PROTOCOL_TLS 或 PROTOCOL_TLSv1_2,以使其pass Debian。

Build

  • bpo-32635:修复了在系统上提供 libxcrypt 而不是 libcrypt 时 crypt 模块的段错误。

Windows

  • bpo-33016:修复可能在 nt._getfinalpathname 中使用未初始化的内存的问题

  • bpo-32903:如果当前目录设置为 UNC 路径,则修复 Windows 上 os.chdir()中的内存泄漏。

  • bpo-31966:修复了 WindowsConsoleIO.write()用于写入空数据的问题。

  • bpo-32409:确保 activate.bat 可以处理 Unicode 内容。

  • bpo-32457:改进了启动 Python 时对非规范化可执行路径的处理。

  • bpo-32370:对 uuid 模块中的 ipconfig 输出使用正确的编码。 Segev Finer 修补程序。

  • bpo-29248:修复 Windows 上的os.readlink(),它错误地将重解析数据缓冲区的PrintNameOffset字段视为多个字符而不是字节。 Craig Holmquist 和 SSE4 的补丁。

  • bpo-32588:创建独立的_distutils_findvs 模块。

macOS

  • bpo-32726:提供其他更现代的 macOS 安装程序变体,仅支持 64 位模式下的 macOS 10.9 系统。将提供的第三方库升级到 OpenSSL 1.0.2n,XZ 5.2.3 和 SQLite 3.22.0. 10.9 安装程序现在与 Tcl/Tk 8.6.8 链接并提供其自己的副本。

IDLE

  • bpo-32984:运行启动文件时设置__file__。与 Python 一样,IDLE 可以选择在“Shell”窗口中运行一个启动文件,然后显示第一个交互式 Importing 提示。对于 IDLE,-s运行以环境变量 IDLESTARTUP PYTHONSTARTUP命名的文件; -r file运行file。 Python 在运行文件之前将__file__设置为启动文件名,并在第一个提示之前将其取消设置。现在,在没有-n选项的情况下,正常运行时,IDLE 会执行相同的操作。

  • bpo-32940:在 pyparse 中简化并重命名 StringTranslatePseudoMapping。

  • bpo-32916:将 pyparse 中的str更改为code

  • bpo-32905:删除 pyparse 模块中未使用的代码。

  • bpo-32874:添加 pyparse 测试。

  • bpo-32837:对 IDLE 的系统文件和与位置无关的文件,将系统和与位置有关的默认编码用于 open()是个坏主意。

  • bpo-32826:在 IDLE 的 test_help_about 中的 open()中添加“ encoding = utf-8”。 GUI 测试 test_file_buttons()仅查看仅以 ascii 开头的行,但在 open()默认为'ascii'的系统上失败,因为 readline()在内部进行了足够远的读取和解码,从而在 CREDITS.txt 中遇到了非 ascii 字符。

  • bpo-32765:更新 configdialog 的“常规”选项卡文档字符串,以将新的窗口小部件添加到窗口小部件列表中。

Tools/Demos

  • bpo-24960:2to3 和 lib2to3 现在可以使用 pkgutil.get_data()读取腌制的语法文件,而不是探测文件系统。从 zip 文件运行时,这可以使 2to3 和 lib2to3 正常工作。

  • bpo-32222:修复 pygettext 不会为带有类型 Comments 参数的函数提取文档字符串的问题。 Toby Harradine 修补程序。

C API

  • bpo-29084:有限 C API 中已排除了 OrderedDict 的未记录 C API。它是错误添加的,实际上在有限的 C API 中从未使用过。

Python 3.6.4 finally版

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

自 v3.6.4rc1 起,版本 3.6.4 中没有新的代码更改。

Python 3.6.4 发行候选 1

*发布日期:2017-12-05 *

核心和内建函数

  • bpo-32176:现在,代码对象构造函数始终可以基于 freevars 和 cellvars 正确设置 co_flags.CO_NOFREE,而不必由调用方正确设置。这样可以确保在将其他单元格引用注入到修改后的代码对象和函数中后,将自动清除它。

  • bpo-31949:修复了打印回溯(PyTraceBack_Print())中的几个问题。现在将 sys.tracebacklimit 设置为 0 或更小将抑制打印回溯。现在将 sys.tracebacklimit 设置为 None 将导致使用默认限制。将 sys.tracebacklimit 设置为大于 LONG_MAX 的整数现在意味着使用限制 LONG_MAX 而不是默认限制。修复了 Windows 上超过 2 ** 31 个回溯项的整数溢出问题。修复了输出错误处理。

  • bpo-30696:修复没有内存的情况下无限循环的交互式解释器。

  • bpo-20047:已记录,字节数组方法 partition()和 rpartition()现在仅接受类似字节的对象作为分隔符。特别是,当将整数作为分隔符传递时,它们现在引发 TypeError 而不是返回假结果。

  • bpo-31852:解决了由异步软关键字和连续行的组合引起的分段错误。

  • bpo-21720:当__import__()的* fromlist *参数或模块的__all__属性包含字节实例时,不再发出 BytesWarning。

  • bpo-31825:修复了对转义的非 ASCII 字节进行解码时,在'unicode-escape'编解码器和 codecs.escape_decode()中发生 OverflowError 的问题。

  • bpo-28603:即使解释器中的某个异常不可散列或与以后的异常比较,也可以在解释器 Export 上显示完整的上下文/原因异常链。 Zane Bitter 修补程序。

  • bpo-31786:修复选择模块中的超时舍入,以正确地在-1.0 到 0.0 之间舍入负超时。这些Function现在可以按预期阻止 await 事件。以前,该呼叫被错误地非阻塞。 Pablo Galindo 修补程序。

  • bpo-31642:pass将 sys.modules [“ package.module”]设置为 None,恢复了“从程序包导入模块”的阻止。

  • bpo-31626:修复了调试内存分配器中的错误。缩小内存块后,对释放的内存进行了写操作。

  • bpo-31619:修复了将带有大量下划线的字符串转换为具有二进制基数的整数时的 ValueError。

  • bpo-31592:修复了unicodedata.normalize()错误的情况下 Python 分析器中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31588:当由于元类的__prepare__()方法错误而导致类创建失败时,使用有用的错误消息引发TypeError。 Oren Milman 修补程序。

  • bpo-31566:修复__name__全局错误的情况下_warnings.warn()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31505:修复_json.make_encoder()收到错误的encoder()参数的情况下在json中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31492:在无法从具有错误__name__属性的模块中导入以及无法访问该模块的属性的情况下,修复 assert 失败。 Oren Milman 修补程序。

  • bpo-31490:修复了ctypes类定义中的 assert 失败的情况,以防该类具有在_anonymous_中但在_fields_中未指定名称的属性。 Oren Milman 修补程序。

  • bpo-31478:在自变量具有错误的__abs__()方法的情况下,修复_random.Random.seed()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31315:当 spec.name 不是字符串时,修复了 imp.create_dynamic()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31311:修复了__dict__错误的情况下ctypes._CData__setstate__()方法的崩溃。 Oren Milman 修补程序。

  • bpo-31293:修复了使用错误的 as_integer_ratio()方法对 float 进行 timedelta 对象的真实除法和乘法运算时崩溃的问题。 Oren Milman 修补程序。

  • bpo-31285:当接收到的加载器的 get_source()的返回值具有错误的 splitlines()方法时,修复warnings.warn_explicit中的 assert 失败。 Oren Milman 修补程序。

  • bpo-30817PyErr_PrintEx()现在清除_PySys_SetObjectId()可能引发的被忽略的异常,例如,当没有内存时。

Library

  • bpo-28556typing模块的两个较小修复:允许浅复制通用类的实例,改进__init_subclass__与通用的交互。 Ivan Levkivskyi 的原始 PR。

  • bpo-27240:新电子邮件策略的 Headers 折叠算法已被重写,还修复了bpo-30788bpo-31831bpo-32182。特别是,RFC2231 折叠现在可以正确完成。

  • bpo-32186:io.FileIO.readall()和 io.FileIO.read()现在在获取文件大小时释放 GIL。修复了无法访问的 NFS 服务器导致所有线程挂起的问题。 Nir Soffer 的补丁。

  • bpo-12239:当 property 的值为VT_EMPTY时,使msilib.SummaryInformation.GetProperty()返回None。 Mark Mc Mahon 的最初补丁。

  • bpo-31325:修复RobotFileParser.parse()方法中对collections.namedtuple()的错误使用。 Robin Wellner 的最初补丁。

  • bpo-12382msilib.OpenDatabase()现在无法打开或创建 MSI 文件时,会引发更好的异常消息。 WilliamTisäter 的最初补丁。

  • bpo-32110codecs.StreamReader.read(n)现在为非负* n 返回不超过 n *个字符/字节。这使其与其他类似文件的对象的read()方法兼容。

  • bpo-32072:解决了二进制 plists 的问题:修复了保存字节数组的问题。相同的对象将只保存一次。相等的引用将作为相同的对象加载。添加了对保存和加载递归数据结构的支持。

  • bpo-32034:使 asyncio.IncompleteReadError 和 LimitOverrunError 可腌制。

  • bpo-32015:修复了在 await 对套接字的异步读/写期间重新连接套接字的情况下异步循环。

  • bpo-32011:恢复了对使用 TYPE_INT64 代码加载封送文件的支持。这些文件可以在 Python 2.7 中生成。

  • bpo-31970:减少异步调试模式的性能开销。

  • bpo-9678:修复了在 uuid 模块中确定 MAC 地址的问题:在 NetBSD 和 OpenBSD 上使用 ifconfig。在 Linux,FreeBSD,NetBSD 和 OpenBSD 上使用 arp。基于 Shimizukawa Takayuki 的补丁。

  • bpo-30057:在 signal.signal()中修复潜在的丢失 signal。

  • bpo-31933:在大字节序平台上修复 Blake2 参数 leaf_size 和 node_offset。 Jack O'Connor 修补程序。

  • bpo-31927:修复了 NetBSD 8 上套接字模块的编译。修复了在 NetBSD 和 DragonFly BSD 上解析 AF_BLUETOOTH 地址时 assert 失败或读取任意数据的问题。

  • bpo-27666:当类型 chtype 或 mmask_t 的大小小于 C long 的大小时,修复了 curses.box()和 curses.ungetmouse()中的堆栈损坏。 curses.box()现在接受字符作为参数。基于 Steve Fink 的补丁。

  • bpo-31897:plistlib 现在在读取二进制文件时会捕获更多错误,并引发 InvalidFileException 而不是意外的异常。

  • bpo-25720:修复了检查 curses WINDOW 的填充状态的方法。山本雅之的补丁。

  • bpo-31893:修复了 OpenBSD 和 NetBSD 上 kqueue_event 结构的布局。修复了 kqueue_event 对象的比较。

  • bpo-31891:修复了在 NetBSD 上构建 curses 模块的问题。

  • bpo-28416:使用 persistent_id()方法的 pickle.Pickler 子类和使用 persistent_load()方法的 pickle.Unpickler 子类的实例不再创建参考周期。

  • bpo-28326:解决多重处理。关闭 stdout 和/或 stderr 或无时处理。

  • bpo-31457:如果使用嵌套日志适配器,则不再Ellipsis内部process()方法。

  • bpo-31457:现在可以正确设置 LoggerAdapter 对象的manager属性。

  • bpo-31806:修复了将 time.sleep(),threading.Lock.acquire()和 socket.socket.settimeout()的超时舍入为-1.0 至 0.0 之间的正确超时。这些Function现在可以按预期阻止 await 事件。以前,该呼叫被错误地非阻塞。 Pablo Galindo 修补程序。

  • bpo-28603:traceback:修复了当无法打印当前异常或其上下文/原因链中的异常时,在异常跟踪打印期间发生的 TypeError。 Zane Bitter 修补程序。

  • bpo-30058:修复了 select.kqueue.control()中的缓冲区溢出。

  • bpo-31770:防止多次调用sqlite3.Cursor对象的__init__()方法时发生崩溃。 Oren Milman 修补程序。

  • string.Template中的bpo-31672idpattern匹配了一些非 ASCII 字符。现在,它使用-i正则表达式本地标志来避免使用非 ASCII 字符。

  • bpo-31764:如果Cursor对象未初始化,则可以防止sqlite3.Cursor.close()崩溃。 Oren Milman 修补程序。

  • bpo-31752:修复了使用自定义整数调用的 timedelta 构造函数中可能发生的崩溃。

  • bpo-31701:在 Windows 上,faulthandler.enable()现在将忽略 MSC 和 COM 异常。

  • bpo-31728:防止由于不安全地清除Element.textElement.tail而在_elementtree中崩溃。 Oren Milman 修补程序。

  • bpo-31620:一个空的 asyncio.queue.get 轮询器超时时,Queue 现在不会泄漏内存

  • bpo-31632:修复 asyncio 模块中的_SSLProtocolTransport 类的 set_protocol()方法。该方法以前修改了对该协议的错误引用。

  • bpo-31675:传递大于 2 GiB 的字符串时,Tkinter 方法 splitlist()和 split()中的固定内存泄漏。

  • bpo-31673:修复了 Tkinter 方法 adderrorinfo()名称中的错字。

  • bpo-30806:修复 netrc 对象的字符串表示形式。

  • bpo-15037:在 ncurses 5.7 和更早版本的 curses 中为 getkey()添加了一种解决方法。

  • bpo-25351:避免使用未定义的变量进行 venv 激活失败

  • bpo-25532:inspect.unwrap()现在将仅try解包装对象 sys.getrecursionlimit()次,以防止对象在每次属性访问时创建一个新对象。

  • bpo-30347:同时迭代 itertools.groupby()迭代器时,Stop 崩溃。

  • bpo-31516threading.current_thread()在关闭时不应返回虚拟线程。

  • bpo-31351:如果 pip 引导失败,则 python -m surepip 现在将以非零退出代码退出。

  • bpo-31482random.seed()现在可以处理版本= 1 的字节

  • bpo-31334:修复select模块中的poll.poll([timeout]),以在所有 OS 上将其设置为只能是非负整数或-1 的任意负超时。 Riccardo Coccioli 的补丁。

  • bpo-31310:如果多进程的 signal 量跟踪器崩溃,则应再次启动。

  • bpo-31308:使 multiprocessing 的 forkserver 进程不受 Ctrl-C 和其他用户break的影响。如果崩溃,则在必要时重新启动它。

Documentation

  • bpo-32105:添加了 asyncio.BaseEventLoop.connect_accepted_socket 版本添加的标记。

  • bpo-31537:解决了 readline 文档示例代码中对get_history_length的错误使用。布拉德·史密斯(Brad Smith)的补丁。

  • bpo-30085:为清楚起见,不带双下划线的操作员Function是首选。带下划线的仅保留用于向后兼容。

Tests

  • bpo-31380:在 macOS 上跳过 test_httpservers test_undecodable_file:在 APFS 上失败。

  • bpo-31705:在低于 4.5 的 Linux 内核上跳过 test_socket.test_sha256()。测试在内核 3.10(在 ppc64le 上)上以 ENOKEY 失败。修复程序已合并到内核 4.5 中。

  • bpo-31174:修复 test_tools.test_unparse:DirectoryTestCase 现在存储名称 samples,以始终测试相同的文件。当搜寻参考泄漏时,它可以防止错误警报。

  • bpo-30695:将set_nomemory(start, stop)remove_mem_hooks()函数添加到_testcapi 模块。

Build

  • setup.py中的bpo-32059detect_modules()现在也可以在交叉编译时搜索 sysroot 路径。

  • bpo-31957:在为 Windows 构建时修复 Windows SDK 版本检测。

  • bpo-31609:修复 PCbuild/clean.bat 中的引号

  • bpo-31934:在不干净的源代码树中构建时中止构建。

  • bpo-31926:当.c 文件中具有相同名称的函数和/或方法不止一个时,固定参数诊所有时会导致编译错误。

  • bpo-28791:更新 Windows 版本以使用 SQLite 3.21.0.

  • bpo-28791:更新 OS X 安装程序以使用 SQLite 3.21.0.

  • bpo-22140:在 python-config.sh 中防止前缀的双重替换。

  • bpo-31536:如果没有任何变化,请避免在make regen-all之后进行批量重建。

Windows

  • bpo-1102:当View.Fetch()返回ERROR_NO_MORE_ITEMS而不是加注MSIError时返回None。 Anthony Tuininga 的最初补丁。

  • bpo-31944:修复了“应用程序和Function”对话框中的“修改”按钮。

macOS

  • bpo-31392:更新 macOS 安装程序以使用 OpenSSL 1.0.2m

IDLE

  • bpo-32207:改进 IDLE 中的 tk 事件异常回溯。当 IDLE 的运行循环驱动 tk 事件处理时,会产生混乱和分散注意力的队列。EMPTY 跟踪上下文不再添加到 tk 事件异常跟踪中。现在,回溯与用户代码驱动事件处理时相同。根据 Serhiy Storchaka 的建议进行修补。

  • bpo-32164:删除未使用的文件 idlelib/tabbedpages.py。在 configdialog 中使用 TabbedPageSet 替换为 ttk.Notebook。

  • bpo-32100:IDLE:修复路径浏览器中的新旧错误;改善测试。主要由 Cheryl Sabella 修补。

  • bpo-31858:IDLE –将 shell 提示操作限制在 shell 中。编辑器和输出窗口仅显示一个空的最后一个提示行。这样可以简化代码并修复插入换行符时的一个小错误。 Sys.ps1(如果存在)在 Shell 启动时读取,但未设置或更改。

  • bpo-31860:现在可以编辑“ IDLE 配置”对话框中的字体示例。 IDLE 保持打开状态时更改仍然存在

  • bpo-31836:现在,如果在 test_idle 之后运行,则 test_code_module pass,设置 ps1.代码模块使用 sys.ps1(如果存在)或将其设置为'>>>'。现在,Test_code_module 可以正确测试这两种行为。同上 PS2.

  • bpo-28603:修复了 TypeError,该 TypeError 在打印包含不可散列异常的回溯时导致 Shell 重新启动。 Zane Bitter 修补程序。

  • bpo-13802:在 IDLE 的字体设置示例中使用非拉丁字符。即使选择了定义 Unicode 基本多语言平面的有限子集的字体,tcl/tk 也会使用其他定义字符的字体。扩展后的示例使非拉丁字符的用户可以更好地了解他们在 IDLE 的 shell 和编辑器中看到的内容。为了为扩展的 samples 腾出空间,将重新排列“字体”选项卡上的框架。字体/标签帮助对添加内容进行了一些解释。

  • bpo-31460:简化 IDLE 的模块浏览器的 API。传递窗口小部件而不是带有根窗口小部件的列表将打开创建仅属于窗口一部分的浏览器框架的选项。传递完整的文件名而不是假定来自.py 文件的文件名,可以浏览以.py 结尾的 python 文件。

  • bpo-31649:IDLE-仅使_htest,_utest 参数为关键字。

  • bpo-31559:删除 idle_test.test_browser 中的测试订单依赖性。

  • bpo-31459:将 IDLE 的模块浏览器从类浏览器重命名为模块浏览器。几年前,最初的模块级类和方法浏览器成为模块浏览器,并添加了模块级Function。嵌套类和函数是昨天添加的。为了实现向后兼容,虚拟事件<>不会更改,该事件出现在“设置”对话框的“密钥”选项卡上。 Cheryl Sabella 修补程序。

  • bpo-31500:现在,默认字体在 HiDPI 显示屏上缩放。

  • bpo-1612262:IDLE 模块浏览器现在显示嵌套的类和函数。 Guilherme Polo 和 Cheryl Sabella 分别提供了代码和测试的原始补丁。

Tools/Demos

  • bpo-30722:使 redemo 与 Python 3.6 和更高版本一起使用。另外,请删除LOCALE选项,因为它不适用于 Python 3 中的字符串模式。Christoph Sarnowski 进行了修补。

C API

  • bpo-20891:修复 PyGILState_Ensure()。当在非 Python 线程中的 PyEval_InitThreads()之前调用 PyGILState_Ensure()时,仅在调用 PyThreadState_New()之后才能修复崩溃,然后再调用 PyEval_InitThreads()。

  • bpo-31532:修复由于 Py_GetPath()和 Py_SetPath()之间的 getpath.c 中的分配器混合而导致的内存损坏

  • bpo-30697:已删除PyExc_RecursionErrorInst单例,而PyErr_NormalizeException()不再使用它。该单例是持久性的,其成员永远不会被清除,可能会在解释程序完成期间导致段错误。另请参见bpo-22898

Python 3.6.3 finally版

*发布日期:2017-10-03 *

Library

Build

  • bpo-31662:修复 Windows uploadrelease.bat脚本中的错别字。解决Doc/make.bat中的 Windows Doc 构建问题。

  • bpo-31423:使用新版本的 Sphinx 修复了构建 PDF 文档的问题。

Python 3.6.3 发行候选 1

*发布日期:2017-09-18 *

Security

  • bpo-29781:当尚未pass BIO 进行握手时,SSLObject.version()现在正确返回 None。

  • bpo-30947:将 libexpat 嵌入式副本从 2.2.1 版本升级到 2.2.3,以获取安全修复程序。

核心和内建函数

  • bpo-31471:在 env 参数具有错误的 keys()方法的情况下,修复 Windows 上subprocess.Popen()的 assert 失败。 Oren Milman 修补程序。

  • bpo-31418:修复__module__属性错误的异常情况下PyErr_WriteUnraisable()中的 assert 失败。 Oren Milman 修补程序。

  • bpo-31416:修复警告,过滤器或警告.defaultaction 错误的情况下的 assert 失败。 Oren Milman 修补程序。

  • bpo-31411:如果警告。onceregistry 不是字典,请引发 TypeError 而不是 SystemError。 Oren Milman 修补程序。

  • bpo-31373:修复了由于浮点降级而导致的一些不确定行为的实例。

  • bpo-30465:f 字符串中的位置信息(linenocol_offset)现在(大部分)正确。这可以修复 flake8 之类的工具,避免在错误的行(通常是文件的第一行)上显示警告。

  • bpo-31343:为 major(),minor()和 makedev()包含 sys/sysmacros.h。 GNU C libray 计划从 sys/types.h 中删除Function。

  • bpo-31291:修复了pathname.replace('/','\\')的返回值不是字符串时 Windows 上zipimport.zipimporter.get_data的 assert 失败。 Oren Milman 修补程序。

  • bpo-31271:修复了编码器未返回字节对象时io.TextIOWrapper的 write()方法中的 assert 失败的情况。 Oren Milman 修补程序。

  • bpo-31243:修复解码器状态无效时某些io.TextIOWrapper方法的崩溃。 Oren Milman 修补程序。

  • bpo-30721print现在显示使用 Python 2 重定向语法的正确用法提示。 Sanyam Khurana 修补程序。

  • bpo-31070:修复 importlib _get_module_lock()中的竞争条件。

  • bpo-31095:修复了由tp_dealloc而不是PyObject_GC_UnTrack()引起的 GC 期间潜在的崩溃。

  • bpo-31071:在传递其他参数时,请避免在调用时使用*来掩盖原始 TypeError。

  • bpo-30978:str.format_map()现在pass传递键查找异常。以前,任何异常都被 KeyError 异常替换。

  • bpo-30808:将_Py_atomic API 用于并发敏感的 signal 状态。

  • bpo-30876:现在,从卸载的软件包的相对导入将重新导入该软件包,而不是出现 SystemError 失败。从非软件包的相对导入现在失败,出现 ImportError 而不是 SystemError。

  • bpo-30703:改善 signal 传递。避免从 signal 处理程序中使用 Py_AddPendingCall,以避免调用 signal 不安全的函数。在 Linux 和 OS X 上,如果没有其余补丁,我要在此处添加的测试将失败。这意味着我们的 signal 传递逻辑存在缺陷(某些 signal 可能会丢失)。

  • bpo-30765:当要求 PyThread_acquire_lock()不阻塞时,避免在 pthread_mutex_lock()中阻塞。

  • bpo-31161:确保“缺少括号”语法错误消息仅适用于 SyntaxError,而不适用于子类。 Martijn Pieters 修补程序。

  • bpo-30814:修复了从包中导入子模块时的竞争条件。

  • bpo-30597print现在用作 Python 2 语句时,会在自定义错误消息中显示预期的 Importing。 Sanyam Khurana 修补程序。

Library

  • bpo-31499:xml.etree:修复了解析器是参考周期的一部分时崩溃的问题。

  • bpo-28556:现在,默认情况下(当调用者未指定globalns时),types.get_type_hints 现在可以为类和模块找到正确的全局变量。

  • bpo-28556:加快了typing模块的速度。 Ivan Levkivskyi 和 Mitar 的原始 PR。

  • bpo-31544:ElementTree 的 C 加速器模块忽略了在 XMLParser()中查找 TreeBuilder 目标方法时引发的异常。

  • bpo-31234:socket.create_connection()现在手动修复了一个参考周期:清除成功后存储最后一个异常的变量。

  • bpo-31457:现在可以嵌套 LoggerAdapter 对象。

  • bpo-31400:改进了 SSL 错误处理以避免丢失错误编号。

  • bpo-28958:ssl.SSLContext()现在在无法实例化上下文时使用 OpenSSL 错误信息。

  • bpo-27340:SSLSocket.sendall()现在使用 memoryview 创建数据切片。这修复了对所有类似字节的对象的支持。它还更加高效,避免了昂贵的复制。

  • bpo-31178:修复 subprocess 模块中罕见错误路径中的字符串连接错误

  • bpo-31350:对asyncio._get_running_loop()进行微优化,使其速度提高 10%。

  • bpo-31170:expat:将 libexpat 从 2.2.3 更新到 2.2.4. 修复了 UTF-8Importing 的部分字符复制(libexpat 错误 115):https://github.com/libexpat/libexpat/issues/115

  • bpo-29136:添加 TLS 1.3 密码套件和 OP_NO_TLSv1_3.

  • bpo-29212:在未提供 thread_name_prefix 的情况下,默认情况下,将 current.futures.thread.ThreadPoolExecutor 线程修复为具有基于非 repr()的线程名称。他们现在将自己标识为“ ThreadPoolExecutor-y_n”。

  • bpo-9146:当链接的 OpenSSL 库中没有标准的哈希函数(例如 md5)时,修复了_hashopenssl 中的分段错误。在某些特殊的 FIPS-140 构建环境中。

  • bpo-27144concurrent.futures中的map()as_completed()迭代器现在避免保留对已产生对象的引用。

  • bpo-10746:修复 ctypes 会为整数类型生成错误的 PEP 3118类型代码。

  • bpo-22536:现在,由于找不到可执行文件或 cwd 而在 POSIX 系统上引发 FileNotFoundError 时,子进程模块将设置文件名。

  • bpo-31249:current.futures:ThreadPoolExecutor 使用的 WorkItem.run()现在 break 了异常对象与 WorkItem 对象之间的引用周期。

  • bpo-31247:现在,在代码处理异常中使用 sys.exc_info()时,xmlrpc.server 显式break参考周期。

  • bpo-30102:ssl 和 hashlib 模块现在在 OpenSSL <1.1.0 上调用 OPENSSL_add_all_algorithms_noconf()。该Function检测 CPU Function并启用对某些 CPU 体系结构(例如 POWER8)的优化。补丁基于 Gustavo Serra Scalet 的研究。

  • bpo-31185:修复了异步加速模块中的其他错误。

  • bpo-31135:ttk:修复 LabeledScale 和 OptionMenu 类的 destroy()方法。即使已使用的属性不存在,请调用父方法 destroy()方法。 LabeledScale.destroy()方法现在还显式清除 label 和 scale 属性,以帮助垃圾收集器销毁所有小部件。

  • bpo-31107:修复名称以下划线开头的类的copyreg._slotnames()损坏的属性计算。 Shane Harvey 的补丁。

  • bpo-31061:修复了使用异步和线程时崩溃的问题。

  • bpo-30502:修复了 ssl 中长形词的处理。基于 Christian Heimes 的补丁。

  • bpo-30119:ftplib.FTP.putline()现在在包含 CR 或 LF 的命令上引发 ValueError。罗东熙的补丁。

  • bpo-30595:具有超时的 multiprocessing.Queue.get()现在可以以非阻塞模式轮询其读取器,如果它成功获取了锁,但获取时间超过了超时。

  • bpo-29403:修复unittest.mock的自动指定不会在方法绑定的内置函数上失败。 Aaron Gallagher 的补丁。

  • bpo-30961:解决了在 tracemalloc 中减少借用引用的问题。

  • bpo-25684:将ttk.OptionMenu单选按钮更改为在OptionMenu的实例之间唯一。

  • bpo-30886:修复 multiprocessing.Queue.join_thread():它现在 await 直到线程完成,即使该线程是由创建队列的同一进程启动的。

  • bpo-29854:使用 readline 的历史记录大小选项修复了 readline 中的段错误。 Nir Soffer 的补丁。

  • bpo-30319:socket.close()现在忽略 ECONNRESET 错误。

  • bpo-30828:超出范围写在asyncio.CFuture.remove_done_callback()中。

  • bpo-30807:当传递一个很小的值时,signal.setitimer()可能会禁用计时器。微小的值(例如 1e-6)是 setitimer()的有效非零值,该值指定为微秒分辨率的间隔。但是,在某些平台上,我们的转换例程可以将 1e-6 转换为零间隔,因此禁用计时器,而不是(重新)安排计时器。

  • bpo-30441:修复在迭代 os.environ 时修改它的错误

  • bpo-30532:修复电子邮件 Headers 值解析器在某些情况下会丢弃折叠空格的情况。

  • bpo-30879:使用类似字节的参数调用时,os.listdir()和 os.scandir()现在发出字节名称。

  • bpo-30746:在os.putenv()os.spawn*()的环境变量名称中禁止使用'='字符。

  • bpo-29755:修复了 gettext 模块中的 lgettext()系列函数。现在,它们总是返回字节。

Documentation

  • bpo-31294:修复 ZeroMQSocketListener 和 ZeroMQSocketHandler 示例中的不完整代码段,并将其改编为 Python 3.

  • bpo-21649:将 RFC 7525 和 Mozilla 服务器端 TLS 链接添加到 SSL 文档。

  • bpo-30803:澄清有关真值测试的文档。彼得·托马森(Peter Thomassen)的原始补丁。

Tests

  • bpo-31320:test_ssl 中的沉默回溯

  • bpo-25674:删除 sha256.tbs-internet.com SSL 测试

  • bpo-30715:OpenSSL 1.1.0f 的地址 ALPN 回调更改。最新版本的行为类似于 OpenSSL 1.0.2,并且不再中止握手。

  • bpo-30822:regrtest:从 regrtest –all 中排除 tzdata。当使用–use = all/-u all 运行测试套件时,请排除 tzdata,因为它会使 test_datetime 太慢(在某些 buildbot 上为 15-20 分钟),然后在某些 buildbot 上超时。还修复了 regrtest 命令行解析器,以允许传递-u extralargefile 来运行 test_zipfile64.

Build

  • bpo-30854:修复无线程编译时的编译错误。山本雅之的补丁。

Windows

  • bpo-30389:在 Windows 上的 distutils 中添加对 Visual Studio 2017 的检测。

  • bpo-31340:更改为使用 MSVC v141 构建(包括在 Visual Studio 2017 中)

  • bpo-30581:现在,当逻辑处理器的数量大于 64 时,os.cpu_count()返回 Windows 上正确的处理器数量。

  • bpo-30731:将缺失的 xmlns 添加到 python.manifest 中,以使其与模式匹配。

IDLE

  • bpo-31493:IDLE 代码上下文–修复代码更新和字体更新计时器。取消计时器可防止在 test_idle 完成时发出警告消息。

  • bpo-31488:IDLE-更新以前扩展类中的非关键选项。应用 configdialog 更改时,请为每个要素类调用.reload。更改 ParenMatch,以便更新的选项影响连接到现有编辑器窗口的现有实例。

  • bpo-31477:IDLE-改进 doc 中的 rstrip 条目。删除尾随空白比空白多。不跳过多行字符串 Literals。

  • bpo-31480:IDLE-使测试pass且默认情况下禁用 zzdummyextensions。

  • bpo-31421:记录 IDLE 如何运行 tkinter 程序。 IDLE 在后台调用 tcl/tk 更新,以便更轻松地进行 tkinter 应用程序的实时交互和实验。

  • bpo-31414:空闲–首先删除 tkImporting 框测试。添加到 int 条目与删除和插入不一样,因为 int('')将失败。

  • bpo-31051:将 IDLE configdialog GenPage 重新排列为“窗口”,“编辑器”和“帮助”部分。

  • bpo-30617:IDLE-为编辑器的突出子类添加文档字符串和测试。将一些数据和函数从类移动到模块级别。 Cheryl Sabella 修补程序。

  • bpo-31287:空闲-请勿在 test_configdialog 中修改 tkinter.message。

  • bpo-27099:将 IDLE 的内置“extensions”转换为常规Function。大约 10 个 IDLE Function被实现为所谓的可选扩展。它们的不同行为可能会使用户感到困惑甚至更糟,并且不利于维护。因此转换。用户的主要区别在于,现在可以统一处理内置Function的用户可配置键绑定。现在,在键集中编辑绑定只会影响其在键集中的值。所有绑定都在 config-extensions.def 中特定于系统的默认键集中定义在一起。所有自定义键集都作为一个整体保存在 config-extension.cfg 中。一旦单击“应用”或“确定”,所有这些都会立即生效。受影响的事件是“ <>”,“ <>”,“ <>”,“ <>”,“ <>”,“ <>”,“ <>”和“ <>”。在 3.6.3 之前进行的任何(全局)自定义设置均不会影响 3.6.3 之后的特定于键集的自定义设置。反之亦然。 Charles Wohlganger 的最初补丁。

  • bpo-31206:IDLE:ConfigDialog 中的 Factor HighPage(Frame)类。 Cheryl Sabella 修补程序。

  • bpo-31001:为 configdialog 高亮选项卡添加测试。 Cheryl Sabella 修补程序。

  • bpo-31205:IDLE:ConfigDialog 中的 Factor KeysPage(Frame)类。稍作修改的测试将 continue pass。 Cheryl Sabella 修补程序。

  • bpo-31130:IDLE –停止 test_configdialog 中的泄漏。 Victor Stinner 的最初补丁。

  • bpo-31002:为 configdialog 键选项卡添加测试。 Cheryl Sabella 修补程序。

  • bpo-19903:空闲:呼叫提示使用inspect.signature而不是inspect.getfullargspec。这可以改善转换为使用 Argument Clinic 的内置插件的提示。路易·卢的补丁。

  • bpo-31083:IDLE-在 configdialog 中添加 TabPage 类的轮廓。更新现有的类以匹配大纲。 Cheryl Sabella 的最初补丁。

  • bpo-31050:从 ConfigDialog 中分解 GenPage(Frame)类。稍作修改的测试将 continue pass。 Cheryl Sabella 修补程序。

  • bpo-31004:IDLE-ConfigDialog 中的 Factor FontPage(Frame)类。稍作修改的测试 continue pass。修复常规测试。主要由 Cheryl Sabella 修补。

  • bpo-30781:IDLE-在 ConfigDialog 中使用 ttk 小部件。 Terry Jan Reedy 和 Cheryl Sabella 的补丁。

  • bpo-31060:IDLE-完成与每个选项卡和按钮有关的 ConfigDialog 分组方法的重新排列方法,将有助于编写测试和改进选项卡,并将组划分为类。

  • bpo-30853:IDLE –从 ConfigDialog 中分解出 VarTrace 类。实例跟踪器 Management 由 tk 变量和回调函数组成的对。打开跟踪时,设置变量将调用该函数。新类的考试覆盖率为 100%。

  • bpo-31003:IDLE:为“常规”选项卡添加更多测试。

  • bpo-30993:IDLE-改进 configdialog 字体页面和测试。在 configdialog 中:在 create_font_tab 文档字符串中记录因果路径。简化一些属性名称。将 set_samples 调用移至 var_changed_font(来自 Cheryl Sabella 的想法)。在创建小部件Function之后,将相关Function移动到位置。在 test_configdialog 中:修复 test_font_set,以便不依赖于 Sequences。修复重命名的 test_indent_scale,以便它测试小部件。调整测试以测试 set_samples 调用的移动。添加负载Function测试。将所有字体测试放在一个类中,将制表符缩进测试放在另一个类中。除两行外,这些测试完全涵盖了相关Function。

  • bpo-30981:IDLE –添加更多的 configdialog 字体页面测试。

  • bpo-28523:IDLE:在 configdialog 中将“ colour”替换为“ color”。

  • bpo-30917:添加对 idlelib.config.IdleConf 的测试。覆盖率从 46%增加到 96%。路易·卢的补丁。

  • bpo-30934:记录 idlelib 测试的覆盖范围详细信息。将部分添加到 idlelib/idle-test/README.txt。包括检查是否同时采用了分支。排除在单元测试期间不会运行的特定于 IDLE 的代码。

  • bpo-30913:IDLE:文档 ConfigDialog tk 文档字符串中的变量,方法和小部件这将有助于改进对话框并拆分类。 Cheryl Sabella 的原始补丁。

  • bpo-30899:IDLE:在 config 中添加针对 ConfigParser 子类的测试。路易·卢的补丁。

  • bpo-30881:IDLE:将文档字符串添加到 browser.py。 Cheryl Sabella 修补程序。

  • bpo-30851:IDLE:删除 configdialog 中未使用的变量。一个是重复项,一个是重复项,但不能由用户更改。 Cheryl Sabella 修补程序。

  • bpo-30870:IDLE:在“设置”对话框中,使用向上,向下键以及鼠标选择字体。 Louie Lu 的最初补丁。

  • bpo-8231:IDLE:仅调用一次 config.IdleConf.GetUserCfgDir。

  • bpo-30779:IDLE:将 configdialog 中的 Factor ConfigChanges 类放入 config 中;测试。 *在配置中,将转储测试代码放入函数中;运行它并在'if name =='main'中进行单元测试。 *在 bpo 问题上基于 changes_class_v4.py 添加类 config.ConfigChanges。 *添加类 test_config.ChangesTest,部分使用 configdialog_tests_v1.py。 *修改 configdialog 以使用 ConfigChanges;请参阅追踪器 msg297804. *修改 test_configdialog 以匹配 configdialog 的更改。 *删除未使用或移至 ConfigChanges 的 configdialog 函数。 Cheryl Sabella 贡献了补丁的一部分。

  • bpo-30777:IDLE:configdialog-添加文档字符串并修复 Comments。 Cheryl Sabella 修补程序。

  • bpo-30495:IDLE:使用文档字符串,PEP8 名称和更多测试来改善 textview。 Cheryl Sabella 修补程序。

  • bpo-30723:IDLE:对 parenmatch 进行一些改进。添加“原谅”样式以突出打开者和关闭者。设置“默认”样式(不是默认样式),它是“打开器”的同义词。使所有样式的延时工作都相同。添加配置对话框扩展选项卡的帮助,包括 parenmatch 帮助。添加新测试。 Charles Wohlganger 的原始补丁。

  • bpo-30674:IDLE:将文档字符串添加到 grep 模块。 Cheryl Sabella 修补程序

  • bpo-21519:IDLE 的基本自定义密钥 Importing 对话框现在可以正确检测到重复项。 Saimadhav Heblikar 的原始补丁。

  • bpo-29910:pass快捷键 Comments 掉某个区域后,IDLE 不再删除字符。对于此 IDLE 和 IDLE 与默认键绑定之间的其他潜在冲突,请添加return 'break'

  • bpo-30728:查看并更改 idlelib.config 对话框名称。小写的方法和属性名称。将“颜色”替换为“颜色”,扩展过于神秘的名称,删除不需要的下划线。将import *替换为特定的导入。 Cheryl Sabella 的补丁。

  • bpo-6739:IDLE:trypass将其与 tk 绑定来验证用户 Importing 的键序列。为所有 3 个验证Function添加测试。 G Polo 制作的原始补丁。 Cheryl Sabella 添加的测试。

Tools/Demos

  • bpo-30983:gdb 集成命令(py-bt 等)现在也适用于优化的共享版本。 PEP 523引入了_PyEval_EvalFrameDefault,它可以在非调试共享版本上内联 PyEval_EvalFrameEx。这 break 了使用 py-bt,py-up 以及其他一些特定于 Python 的 gdb 集成的Function。仅在 python-gdb.py 中查找_PyEval_EvalFrameDefault 帧即可解决此问题。 Bruno“ Polaco” Penteado 的原始补丁。

Python 3.6.2 finally版

*发布日期:2017-07-17 *

自候选发布版 2 以来没有更改

Python 3.6.2 发行候选 2

*发布日期:2017-07-07 *

Security

  • bpo-30730:防止在 Windows 的子进程中注入环境变量。防止传递其他环境变量和命令参数。

  • bpo-30694:将 expat copy 从 2.2.0 升级到 2.2.1,以修复多个安全漏洞,包括:CVE-2017-9233(外部实体无限循环 DoS),CVE-2016-9063(整数溢出,重新修复),CVE -2016-0718(修复了从 2.2.0 版修复到 CVE-2016-0718 的回归错误)和 CVE-2012-0876(使用 SipHash 进行计数器哈希泛洪)。注意:CVE-2016-5300(使用诸如 getrandom 之类的特定于 os 的熵源)不会影响 Python,因为 Python 已从 os 获取熵以使用XML_SetHashSalt()设置 maven 密码。

  • bpo-30500:修复 urllib.parse.splithost()以正确解析片段。例如,splithost('//127.0.0.1#@evil.com/')现在可以正确返回127.0.0.1主机,而不是将@evil.com作为身份验证中的主机(login@host)。

Python 3.6.2 发行候选 1

*发布日期:2017-06-17 *

核心和内建函数

  • bpo-30682:删除了对于某些 f 字符串失败的过于严格的 assert,例如 eval(“ f' n'”)和 eval(“ f' r'”)。

  • bpo-30604:将 co_extra_freefuncs 移至非每个线程,以避免崩溃

  • bpo-29104:修复了在 f 字符串中解析反斜杠的问题。

  • bpo-27945:在搜索,插入或比较期间更改 Importing 集合时,用 dict 修复了各种 segfault。基于 Duane Griffin 和 Tim Mitchell 的补丁。

  • bpo-25794:对于非实习属性名称,固定为 type .__ setattr ()和 type . delattr __()。基于 Eryk Sun 的补丁。

  • bpo-30039:如果当解释器在恢复嵌套的“ yield from”或“ await”调用嵌套的过程中发生 KeyboardInterrupt 时,它现在已正确传递到最里面的帧。

  • bpo-12414:现在,代码对象上的 sys.getsizeof()返回的大小包括代码结构和它引用的对象的大小。罗东熙的补丁。

  • bpo-29949:修复 set 和 Frozenset 对象的内存使用情况回归。

  • bpo-29935:修复了传递错误类型的索引时,在 Tuples,列表和 deque 的 index()方法中的错误消息。

  • bpo-29859:当 thread_pthread.h 中的任何 pthread_ *调用失败时,显示正确的错误消息。

  • bpo-28876bool(range)即使len(range)加注OverflowError也有效。

  • bpo-29600:修复 StopIteration 中包装的协程返回值。

  • bpo-28856:修复了以下问题:字节的%b 格式应支持对象遵循缓冲区协议。

  • bpo-29714:修复了以下回归问题:当内部包含零个字节时,字节格式可能会失败。

  • bpo-29478:如果在使用 Compat32 策略时未指定 max_line_length = None,则不再忽略它。 Mircea Cosbuc 的补丁。

Library

  • bpo-30616:枚举的Function性 API 允许创建空的枚举。罗东熙修补

  • bpo-30038:修复 signal 传递和唤醒文件 Descriptors 之间的竞争条件。纳撒尼尔·史密斯(Nathaniel Smith)的补丁。

  • bpo-23894:lib2to3 现在可以识别rb'...'f'...'字符串。

  • bpo-23890:现在,unittest.TestCase.assertRaises()手动break参考周期,以使对象的存活时间不超过预期的时间。

  • bpo-30149:inspect.signature()现在支持带有部分参数包装的可变参数参数的可调用对象。罗东熙的补丁。

  • bpo-30645:修复 imp.load_package()中的路径计算,以解决仅在打包时附带字节码的情况。 Alexandru Ardelean 修补程序。

  • bpo-29931:修复了 ipaddress.ip_interface 对象的比较检查。 Sanjay Sundaresan 的补丁。

  • bpo-30605:当使用错误的行内修饰符编译字节实例时,re.compile()不再引发 BytesWarning。 Roy Williams 修补程序。

Security

Library

  • bpo-24484:避免在 multiprocessing 清理中出现竞争状况(#2159)

  • bpo-28994:不再显示由 atexit 注册的回调中引发的 SystemExit 的 traceback。

  • bpo-30508:如果调用了 Task/Future“ cancel()”方法,则不要记录异常。

  • bpo-28556:更新了键入模块:添加通用 AsyncContextManager,在所有版本上添加对 ContextManager 的支持。 Jelle Zijlstra 和 Ivan Levkivskyi 的原始 PR

  • bpo-29870:修复在 asyncio/ssl 实现中中止连接时 ssl 套接字泄漏的问题。 MichaëlSghaïer 修补程序。

  • bpo-29743:在握手过程中关闭传输会泄漏打开的套接字。 Nikolay Kim 的补丁

  • bpo-27585:修复 asyncio.Lock 中的服务员取消。 Mathieu Sornay 的补丁。

  • bpo-30418:在 Windows 上,如果子进程仍在运行但关闭了管道,则 subprocess.Popen.communicate()现在也将忽略 stdin.write()上的 EINVAL。

  • bpo-29822:inspect.isabstract()现在可以在__init_subclass_期间运行。 Nate Soares 修补程序。

  • bpo-29581:ABCMeta .__ new_现在接受**kwargs,从而允许抽象 Base Class 在__init_subclass_中使用关键字参数。 Nate Soares 修补程序。

  • bpo-30557:故障处理程序现在可以正确过滤并在 Windows 上显示异常代码

  • bpo-30378:解决了 logging.handlers.SysLogHandler 无法处理 IPv6 地址的问题。

  • bpo-29960:_random.Random.setstate()引发异常时,保留生成器状态。 Bryan Olson 的补丁。

  • bpo-30414:出现异常时,后台运行线程不会从主循环中break。

  • bpo-30003:修复了在 HZ 编解码器中处理转义符的问题。根据马琳的补丁。

  • bpo-30301:在* spawn forkserver *启动方法下使用 SimpleQueue.empty()时,修复 AttributeError。

  • bpo-30329:imaplib 和 poplib 现在在关闭(SHUT_RDWR)时捕获 Windows 套接字 WSAEINVAL 错误(代码 10022):try了无效的操作。有时在 SSL 连接上会发生此错误。

  • bpo-30375:现在,在编译正则表达式时发出的警告始终指向用户代码中的行。以前,如果它们是从组或条件内部发出的,则它们可以指向 re 模块的内部。

  • bpo-30048:当任务正在运行协程并且协程返回时不再await时,可以忽略固定的Task.cancel()

  • bpo-30266:contextlib.AbstractContextManager 现在pass按照bpo-25958中引入的模式设置__enter__ = None 或__exit__ = None 来支持反注册。 Jelle Zijlstra 修补程序。

  • bpo-30298:减弱内联修饰符的弃用警告的条件。现在,在模式的开头(例如'(?i)(?s)...')允许使用多个后续的内联修饰符。在详细模式下,现在在内联修饰符(例如'(?x) (?i) (?s)...')之前和之间允许空格和 Comments。

  • bpo-29990:修复了 GB18030 解码器中的范围检查。由马琳制作的原始补丁。

  • bpo-26293:由于 zip 文件损坏导致更改。 (另请参见:bpo-29094)

  • bpo-30243:删除了_json 的扫描器和编码器的__init_方法。滥用它们可能会导致内存泄漏或崩溃。现在,扫描器和编码器对象已在__new_方法中完全初始化。

  • bpo-30185:收到 Ctrl-C 时,避免在 forkserver 帮助程序进程中进行 KeyboardInterrupttraceback。

  • bpo-28556:对键入模块进行了各种更新:添加了类型。NoReturn 类型,使用 WrapperDescriptorType,较小的错误修复。 Jim Fasarakis-Hilliard 和 Ivan Levkivskyi 的原始 PR。

  • bpo-30205:修复 Linux 上未绑定的 AF_UNIX 套接字的 getsockname()。

  • bpo-30070:修复了解析器模块中的错误处理中的泄漏和崩溃。

  • bpo-30061:修复了当 readline()或__next __()分别返回不可调整大小的对象时,IOBase 方法__next __()和 readlines()崩溃的问题。修复了由于不检查 PyObject_Size(),PySequence_Size()或 PyMapping_Size()结果而导致的其他可能的错误。

  • bpo-30017:允许多次调用 zip 条目编写器对象的 close()方法。现在,写给封闭的 Writer 总是会产生 ValueError。

  • bpo-30068:_io._IOBase.readlines 将检查是否在提示存在时首先关闭。

  • bpo-29694:已修复 pathlib mkdir 中带有标志 parents = True 的竞争条件。 Armin Rigo 修补程序。

  • bpo-29692:修复了 contextlib.contextmanager 中 RuntimeError 异常的任意取消链接。 Siddharth Velankar 修补程序。

  • bpo-29998:Pickling 和复制 ImportError 现在将保留名称和路径属性。

  • bpo-29953:固定绑定日期参数传递时,datetime 和 time 对象的 replace()方法中的固定内存泄漏。

  • bpo-29942:修复了长期遇到空的可迭代对象时 itertools.chain.from_iterable 崩溃的问题。

  • bpo-27863:修复了由于竞争条件和错误类型导致的 ElementTree 多次崩溃。

  • bpo-28699:修复了 multiprocessing.pool 中的池中的一个错误,该错误在可迭代对象的第一个位置引发异常可能会吞噬该异常或使程序挂起。达文·波茨和张翔的补丁。

  • bpo-25803:当 OS 优先处理诸如 EACCES 而不是 EEXIST 之类的错误时,请避免 Path.mkdir(exist_ok = True)引发的错误错误。

  • bpo-29861:在 multiprocessing.Pool 中完成后,请立即释放对任务,其参数和结果的引用。

  • bpo-29884:故障处理程序:拆卸期间恢复旧的 sigaltstack。 Christophe Zeitouny 的补丁。

  • bpo-25455:修复了递归缓冲的类似文件的对象崩溃的问题。

  • bpo-29800:如果 partial.keywords 的键不是字符串,则修复会在 partial .__ repr_中崩溃。 Michael Seifert 的补丁。

  • bpo-29742:如果在封闭的 ssl 传输上被调用,get_extra_info()会引发异常。 Nikolay Kim 的补丁。

  • bpo-8256:修复了如果未设置 sys.stdin 或 sys.stdout 的属性“ encoding”或“ errors”或不是字符串,则 input()可能失败或崩溃的问题。

  • bpo-28298:修复了一个错误,该错误使数组'Q','L'和'I'不能接受大的 intable(具有__int_的对象)作为元素。 Oren Milman 修补程序。

  • bpo-28231:zipfile 模块现在接受外部路径的类似路径的对象。

  • bpo-26915:collections.abc。的 index()和 count()方法现在在进行比较时,在检查相等性之前先检查身份。

  • bpo-29615:SimpleXMLRPCDispatcher 不再将 KeyError(或任何其他异常)链接到分派方法中引发的异常。 Petr Motejlek 修补程序。

  • bpo-30177:path.resolve(strict = False)在文件系统中第一个不存在的元素之后不再剪切路径。 Antoine Pietri 修补程序。

IDLE

  • bpo-15786:修复了 IDLE 自动完成框的几个问题。现在应该可以进行以下操作:单击选择框项;使用滚动条;pass点击 Return 选择一个项目。不再挂在 MacOSX 上。路易·卢的补丁。

  • bpo-25514:添加有关 IDLE 失败的文档子小节以启动。弹出无连接消息将用户定向到此部分。

  • bpo-30642:修复 IDLE 测试中的参考泄漏。 Louie Lu 和 Terry Jan Reedy 的补丁。

  • bpo-30495:为 textview.py 添加文档字符串并使用 PEP8 名称。 Cheryl Sabella 和 Terry Jan Reedy 的补丁。

  • bpo-30290:帮助中心:使用 pep8 名称并添加测试。将覆盖率提高到 100%。 Louie Lu,Cheryl Sabella 和 Terry Jan Reedy 的补丁。

  • bpo-30303:在文本视图中添加_utest 选项;添加新测试。将覆盖率提高到 100%。 Louie Lu 和 Terry Jan Reedy 的补丁。

C API

  • bpo-27867:如果未设置 Py_LIMITED_API,则函数 PySlice_GetIndicesEx()不再由宏替换。

Build

  • bpo-29941:添加--with-assertions configure 标志以显式启用 C assert()检查。默认为关闭。 --with-pydebug表示--with-assertions

  • bpo-28787:使用--with--dtrace配置时,修复了 Python 的树外版本。

  • bpo-29243:使用--enable-optimizations配置时,防止在make testmake install和其他一些 make 目标期间不必要地重建 Python。

  • bpo-23404:不再基于文件修改时间重新生成生成的文件:该操作现在是明确的。将make touch替换为make regen-all

  • bpo-29643:修复--enable-optimization无效。

Documentation

  • bpo-30176:在 curses 文档中添加与缺少属性有关的常量。

  • bpo-30052bytes()bytearray()的链接目标现在是它们各自的类型定义,而不是相应的内置函数条目。使用bytesbytearray引用后者。为了确保自动应用此交叉引用和以后的交叉引用更新,现在,日常文档版本会禁用 Sphinx 中的默认输出缓存Function。

  • bpo-26985:在检查文档中添加代码对象的缺失信息。

Tools/Demos

  • bpo-29367:python-gdb.py 现在还支持method-wrapper(wrapperobject)个对象。

Tests

  • bpo-30357:test_thread:setUp()现在使用 support.threading_setup()和 support.threading_cleanup()等到线程完成后才能避免后续测试的随机副作用。 Grzegorz Grzywacz 编写的初始补丁。

  • bpo-30197:test.support 模块中的增强Function swap_attr()和 swap_item()。现在,在 with 语句中删除替换的属性或项时,它们可以工作。如果有属性或项目的旧值(如果不存在,则为 None)现在将分配给“ as”子句的目标。

Windows

  • bpo-30687:在构建而不是 vcvarsall.bat 时在 Windows 上找到 msbuild.exe

  • bpo-30450:Windows 上的构建过程不再依赖 Subversion,而是pass Python 脚本从 GitHub 中提取外部代码。如果在系统上(passpy -3.6)未找到 Python 3.6,则使用 NuGet 下载 32 位 Python 的副本。

Python 3.6.1 finally版

*发布日期:2017-03-21 *

核心和内建函数

  • bpo-29723bpo-29139sys.path[0]初始化更改pass揭示从 zipfile,目录或其他导入位置执行__main__时 sys.path 的初始化方式不一致而导致回归。现在,解释器始终避免将导入位置的父目录添加到sys.path,并确保在插入命令行上命名的导入位置时不会无意间修改其他sys.path条目。

Build

  • bpo-27593:修复 sys.version 中使用的 git 信息的格式

  • 修复 python.h 中不兼容的 Comments

Python 3.6.1 发行候选 1

*发布日期:2017-03-04 *

核心和内建函数

  • bpo-28893:针对从__aiter_和__anext_返回的无效 await 项的错误,设置正确的__cause__。

  • bpo-29683:修复了_PyCode_SetExtra 中的内存分配。 Brian Coleman 修补程序。

  • bpo-29684:修复 PyEval_CallObjectWithKeywords 的次要回归。当 kwargs 不是命令时,它应该引发 TypeError。但是当 args = NULL 且 kwargs 不是命令时,可能会导致 segv。

  • bpo-28598:对于在 str .__ mod_之前调用的 str 的子类,支持__rmod__。 Martijn Pieters 修补程序。

  • bpo-29607:修复 CALL_FUNCTION_EX 的 stack_effect 计算。 Matthieu Dartiailh 修补程序。

  • bpo-29602:修复了复杂构造函数中对复杂子类和具有__complex_方法的 Importing 的带符号零的错误处理。 Serhiy Storchaka 修补程序。

  • bpo-29347:修复了在创建 weakref 对象时可能取消引用未定义指针的问题。

  • bpo-29438:修复了密钥共享字典中的“售后使用”问题。

  • bpo-29319:防止 RunMainFromImporter 覆盖 sys.path [0]。

  • bpo-29337:修复了比较代码对象时可能出现的 BytesWarning。警告可能在编译时发出。

  • bpo-29327:修复了将可迭代的关键字参数传递给 sorted()时崩溃的问题。

  • bpo-29034:修复内存泄漏和 os 模块(path_converter)中的可用后使用问题。

  • bpo-29159:当 x .__ index __()引发 Exception 时,以字节(x)为单位修复回归。

  • bpo-28932:如果不存在,则不包括<sys/random.h>。

  • bpo-25677:更正缩进块的语法错误插入符号的位置。基于 Michael Layzell 的补丁。

  • bpo-29000:八进制的固定字节格式,零填充为备用格式。

  • bpo-26919:在 Android 上,现在始终将 os 数据编码到 UTF-8 或从 UTF-8 解码,而不是使用区域设置编码,以避免与已经使用 UTF-8 的 os.fsencode()和 os.fsdecode()不一致。

  • bpo-28991:functools.lru_cache()容易受到由猴子修补的 len()函数触发的模糊重入错误的影响。

  • bpo-28739:f 字符串表达式不再被 docstring 和 ast.literal_eval()接受,即使它们不包含表达式也是如此。

  • bpo-28512:固定pass PyErr_SyntaxLocationEx()和 PyErr_SyntaxLocationObject()设置 SyntaxError 的偏移属性。

  • bpo-28918:修复使用定义的 Py_DEBUG 构建 Python 时 xxlimited 的交叉编译。

  • bpo-28731:优化_PyDict_NewPresized()以创建正确的尺寸字典。使用恒定键将字典 Literals 的速度提高 30%。

Library

  • bpo-29169:将 zlib 更新到 1.2.11.

  • bpo-29623:允许在 ConfigParser.read()中将类似路径的对象用作单个参数。 David Ellis 修补程序。

  • bpo-28963:修复了用 C 实现的 asyncio.Future.remove_done_callback 的边界迭代。

  • bpo-29704:asyncio.subprocess.SubprocessStreamProtocol 不再在关闭所有管道之前关闭。

  • bpo-29271:修复用 C 实现的 Task.current_task 和 Task.all_tasks 接受 None 参数作为其纯 Python 实现。

  • bpo-29703:修复了异步问题,以支持在子进程中实例化新事件循环。

  • bpo-29376:修复 threading._DummyThread.is_alive()中的 assert 错误。

  • bpo-28624:添加一个测试,以检查 Popen()的 cwd 参数是否接受 PathLike 对象。 Sayan Chowdhury 修补程序。

  • bpo-28518:在 DML 语句之前隐式启动事务。 Aviv Palivoda 修补程序。

  • bpo-29532:更改传递给 functools.partial()的 kwarg 字典在创建后不再影响部分对象。

  • bpo-29110:当文件作为文件系统路径给出并且不是有效的 AIFF 格式时,修复 aifc.open()中的文件对象泄漏。 Anthony Zhang 修补程序。

  • bpo-28556:键入模块的各种更新:键入。计数器,键入.ChainMap,改进的 ABC 缓存等。Jelle Zijlstra,Ivan Levkivskyi,Manuel Krebber 和ŁukaszLanga 的原始 PR。

  • bpo-29100:修复了 Python 3.6.0 中引入的 datetime.fromtimestamp()回归:检查最小和最大年份。

  • bpo-29519:与罕见的 multiprocessing 和自定义编解码器组合使用时,修复了解释器关闭期间弱引用喷溅异常。

  • bpo-29416:防止 pathlib.Path.mkdir 中出现无限循环

  • bpo-29444:修复了匹配对象的 group()方法中的越界缓冲区访问。基于 WGH 的补丁。

  • bpo-29335:当子进程退出到停止状态而不是终止状态时(例如:处于 ptrace 下时),修复 subprocess.Popen.wait()。

  • bpo-29290:修复 argparse 中的回归,该回归将帮助消息包装在不间断的空格处。

  • bpo-28735:修复了模拟 ock.MagickMock 与模拟 ock.ANY 的比较。

  • bpo-29316:恢复键入模块的临时状态,在文档中添加相应的 Comments。 Ivan L.的补丁

  • bpo-29219:修复了未初始化的 ctypes.CDLL 实例的 repr 中的无限递归。

  • bpo-29011:pass将 Deque 添加到键入模块来解决重要的遗漏。

  • bpo-28969:修复了 functools.lru_cache 的 C 实现中的竞争条件。当从具有相同未缓存参数的不同线程中同时调用具有完全缓存的缓存Function时,可能会引发 KeyError。

  • bpo-29142:在 urllib.request 中,no_proxy 环境变量中带有后缀点的后缀可以再次匹配相关的主机名(例如.b.c 匹配 a.b.c)。 Milan Oberkirch 修补程序。

  • bpo-28961:修复 unittest.mock._Call 助手:不再忽略 name 参数。黄佳俊撰写的补丁。

  • bpo-29203:functools.lru_cache()现在尊重 PEP 468并保留关键字参数的 Sequences。现在 f(a = 1,b = 2)与 f(b = 2,a = 1)分开缓存,因为两个调用都可能给出不同的结果。

  • bpo-15812:inspect.getframeinfo()现在可以正确显示上下文的第一行。由 Sam Breese 修补。

  • bpo-29094:现在,使用外部文件对象以及模式“ w”和“ x”创建的 ZIP 文件中的偏移量是相对于文件开头的。

  • bpo-29085:允许 random.Random.seed()使用高质量的 os 随机性,而不是 pid 和时间。

  • bpo-29061:修复了 secrets.randbelow()中的错误,如果 Importing 为负,该错误会挂起。 Brendan Donegan 修补程序。

  • bpo-29079:在 Windows 上防止 pathlib.resolve()中的无限循环

  • bpo-13051:修复了较大或调整大小的 curses.textpad.Textbox 中的递归错误。基于 Tycho Andersen 的补丁。

  • bpo-29119:修复纯 Python 版本的 collections.OrderedDict move_to_end()方法中的弱引用。由 Andra Bogildea 提供。

  • bpo-9770:curses.ascii 谓词现在可以正确使用负整数。

  • bpo-28427:从另一个线程进行收集时,旧键不应从 WeakValueDictionary 中删除新值。

  • bpo-28923:从 Tix.py 中删除编辑器工件。

  • bpo-29055:pass抑制上游异常,消除 random.choice()上的空填充错误。

  • bpo-28871:修复了释放深层 ElementTree 时发生的崩溃。

  • bpo-19542:修复了 GC 收集发生在另一个线程中时,WeakValueDictionary.setdefault()和 WeakValueDictionary.pop()中的错误。

  • bpo-20191:修复了传递不拥有其元素作为限制的序列时,resource.prlimit()崩溃的问题。

  • bpo-28779:如果预加载的模块实例化了诸如锁之类的一些 multiprocessing 对象,则 multiprocessing.set_forkserver_preload()将使 forkserver 进程崩溃。

  • bpo-28847:dbm.dumb 现在支持读取只读文件,并且在不更改索引文件的情况下不再写入索引文件。

  • bpo-26937:当无法导入 grp 模块时,例如在 Android 平台上,tarfile.TarFile 类的 chown()方法现在不会失败。

IDLE

  • bpo-29071:IDLE 为 f 字符串添加前缀颜色(但不是无效的 ur 前缀)。

  • bpo-28572:将 10%的 IDLE 的 test_configdialog 覆盖率增加。更新和扩充配置系统的描述。

Windows

  • bpo-29579:从安装程序中删除 readme.txt

  • bpo-29326:忽略._pth 文件中的空白行(Alexey Izbyshev 的补丁)

  • bpo-28164:正确处理特殊的控制台文件名(由 Eryk Sun 修补)

  • bpo-29409:为 io.FileIO 实现 PEP 529(由 Eryk Sun 修补)

  • bpo-29392:防止在将无效参数传递到 msvcrt 模块时崩溃。

  • bpo-25778:winreg 无法正确截断字符串(Eryk Sun 修补程序)

  • bpo-28896:弃用 WindowsRegistryFinder 并默认禁用它。

C API

  • bpo-27867:如果未设置 Py_LIMITED_API 或将其设置为 0x03050400 和 0x03060000(不包括)或 0x03060100 或更高的值,则函数 PySlice_GetIndicesEx()将被宏替换。

  • bpo-29083:修复了一些公共 API 函数的语句。 PyArg_VaParse()和 PyArg_VaParseTupleAndKeywords()在受限 API 中不可用。定义 PY_SSIZE_T_CLEAN 时,PyArg_ValidateKeywordArguments(),PyArg_UnpackTuple()和 Py_BuildValue()在版本<3.3 的受限 API 中不可用。

  • bpo-29058:仅当 Py_LIMITED_API 设置为支持该 API 的最低 Python 版本的 PY_VERSION_HEX 值时,Python 3.2 之后添加的所有稳定 API 扩展现在都可用。

Documentation

  • bpo-28929:将文档链接到其在 GitHub 上的源文件。

  • bpo-25008:已有效弃用 smtpd.py 文件,并添加了指向 aiosmtpd(基于异步的第三方替换)的指针。

  • bpo-26355:在每个页面上将规范标题链接添加到文档的相应主要版本。 Matthias Bussonnier 的补丁。

  • bpo-29349:修复了用于构建文档的代码中的 Python 2 语法。

Tests

  • bpo-28087:跳过 macOS 上的 test_asyncore 和 test_eintr 轮询失败。由于某些 macOS 版本上的基础系统轮询Function未解决的问题,因此在 macOS 上运行时,请跳过 select.poll 的某些测试。

  • bpo-29571:为了匹配re.LOCALE标志的行为,test_re.test_locale_flag 现在使用locale.getpreferredencoding(False)来确定测试正则表达式的候选编码(当默认语言环境编码是多字节编码时,它可以正确跳过测试)

  • bpo-28950:在重新测试命令行参数中禁止将-j0 与-T/-l 组合使用。

  • bpo-28683:修复针对非 root 用户在 Android 上绑定()unix 套接字并引发 PermissionError 的测试。

  • bpo-26939:添加了 support.setswitchinterval()函数来修复挂在 Android armv7 qemu 仿真器上的 test_functools。

Build

  • bpo-27593:sys.version 和平台模块 python_build(),python_branch()和 python_revision()函数现在从 repo 构建时使用 git 信息而不是 hg。

  • bpo-29572:更新 Windows 版本和 OS X 安装程序以使用 OpenSSL 1.0.2k。

  • bpo-26851:设置 Android 编译和链接标志。

  • bpo-28768:修复函数_setmode 的隐式语句。山本雅之补丁

  • bpo-29080:从 PCBuild/build.bat 中删除对 hg.exe 的硬依赖性

  • bpo-23903:向 PC/python3.def 添加了丢失的名称。

  • bpo-28762:lockf()在 Android API 级别 24 上可用,但 F_LOCK 宏未在 android-ndk-r13 中定义。

  • bpo-28538:修复由于 if_nameindex()在 Android API 级别 24 上可用但未定义 if_nameindex 结构而发生的编译错误。

  • bpo-20211:请勿将用于安装 C 头文件的目录和用于安装目标代码库的目录添加到交叉编译搜索路径。 Thomas Petazzoni 的原始补丁。

  • bpo-28849:请勿在 Android 上定义 sys.implementation._multiarch。

Python 3.6.0 finally版

*发布日期:2016-12-23 *

自候选发布版 2 以来没有更改

Python 3.6.0 发行候选 2

*发布日期:2016-12-16 *

核心和内建函数

  • bpo-28147:修复拆分表字典中的内存泄漏:setattr()不得将组合表转换为拆分表。 INADA Naoki 编写的补丁。

  • bpo-28990:如果在握手完成之前关闭了连接,请修复 asyncio SSL 挂起的问题。 (HoHo-Ho 修补程序)

Tools/Demos

  • bpo-28770:修复 python-gdb.py 进行快速调用。

Windows

  • bpo-28896:弃用 WindowsRegistryFinder。

Build

  • bpo-28898:防止由于重新定义 HAVE_LONG_LONG 而导致 gdb 构建错误。

Python 3.6.0 发行候选 1

*发布日期:2016-12-06 *

核心和内建函数

  • bpo-23722:不是在方法中无提示地生成不支持零参数super()的类,而是现在不将新的__classcell__命名空间条目传递至type.__new__,从而导致DeprecationWarning和支持零参数super()的类。

  • bpo-28797:修改在该类内部使用的 Descriptors 的__set_name_方法内的类__dict_不再阻止调用其他 Descriptors 的__set_name_方法。

  • bpo-28782:检查下一条指令是否为 YIELD_FROM 时,修复实现yield from中的错误。 WORDCODE(bpo-26647)引入的回归。

Library

  • bpo-27030:再次允许在 re.sub()替换模板中进行未知转义。但是它们仍然被弃用,并且将在 3.7 中禁用。

  • bpo-28835:修复在 warnings.catch_warnings()中引入的回归:如果上下文 Management 器中重写了警告,请调用 warnings.showwarning()。

  • bpo-27172:为了帮助从 2.7 升级,已撤销了先前记录的inspect.getfullargspec()的弃用。在不再正式支持 Python 2.7 分支之后,可以再次重新考虑该决定。

  • bpo-26273:添加新的socket.TCP_CONGESTION(Linux 2.6.13)和socket.TCP_USER_TIMEOUT(Linux 2.6.37)常量。 Omar Sandoval 写的补丁。

  • bpo-24142:读取损坏的配置文件使 configparser 处于无效状态。 FlorianHöch 的原始补丁。

  • bpo-28843:修复 asyncio C 任务以处理异常__traceback__。

C API

  • bpo-28808:PyUnicode_CompareWithASCIIString()现在永远不会引发异常。

Documentation

  • bpo-23722:“新增Function”指南中的数据模型参考和移植部分现在涵盖了自定义元类以完全支持 PEP 487和零参数super()所需的其他__classcell__处理。

Tools/Demos

  • bpo-28023:修复了 python-gdb.py 不支持新的 dict 实现。

Python 3.6.0 beta 4

*发布日期:2016-11-21 *

核心和内建函数

  • bpo-28532:两次提供-V 选项时,显示 sys.version。

  • bpo-27100:现在,with 语句在检查__exit_之前先检查__enter__。当缺少这两种方法时,这将减少混乱消息。乔纳森·埃灵顿的补丁。

  • bpo-28746:在没有 ioctl FIOCLEX 和 FIONCLEX 命令的平台上修复 set_inheritable()文件 Descriptors 方法。

  • bpo-26920:修复了在没有 langinfo 的平台上初始化解释器时未获取语言环境的字符集的问题。

  • bpo-28648:修复了在解码星体字符时在 Mac OS X 上的调试版本中 Py_DecodeLocale()崩溃的问题。张翔的补丁。

  • bpo-19398:如果编译时 PYTHONPATH 组件为空,则不再向 sys.path 组件添加额外的斜杠。

  • bpo-28665:将 STORE_DEREF 操作码的速度提高 40%。

  • bpo-28583:PyDict_SetDefault 在需要时未合并拆分表。张翔的补丁。

  • bpo-27243:更改 PendingDeprecationWarning-> DeprecationWarning。按照问题中的约定,__ aiter_返回一个 await 值将导致 3.5 中的 PendingDeprecationWarning 和 3.6 中的 DeprecationWarning。

  • bpo-26182:修复了引发 DeprecationWarning 的代码中的问题。

  • bpo-28721:修复异步生成器 aclose()和 athrow()以正确处理 StopAsyncIteration 传播。

Library

  • bpo-28752:恢复了日期时间对象的__reduce __()方法。

  • bpo-28727:正则表达式模式,即由 re.compile()创建的_sre.SRE_Pattern 对象,具有可比性(仅 x == y 和 x!= y 运算符)。此更改应修复bpo-18383:重新加载警告模块时,请勿重复使用警告过滤器(通常仅在单元测试中执行此操作)。

  • bpo-20572:subprocess.Popen.wait 方法的未记录的 endtime 参数现在引发 DeprecationWarning。

  • bpo-25659:在 ctypes 中,防止在诸如 Array 之类的抽象类上调用 from_buffer()和 from_buffer_copy()方法时发生崩溃。

  • bpo-19717:使 Path.resolve()在不存在的路径上成功。 Vajrasky Kok 的补丁

  • bpo-28563:修复了在 gettext 模块中处理多种形式选择时可能执行的 DoS 和任意代码执行的问题。表达式解析器现在支持 GNU gettext 支持的确切语法。

  • bpo-28387:修复了在其他线程中调用垃圾回收器时_io.TextIOWrapper 释放器可能崩溃的问题。基于 Sebastian Cufre 的补丁。

  • bpo-28600:优化 loop.call_soon。

  • bpo-28613:如果从协程/回调调用,则修复 get_event_loop()返回当前循环。

  • bpo-28634:修复 asyncio.isfuture()以支持 unittest.Mock。

  • bpo-26081:修复_asyncio.Future .__ iter __()。throw 中的 refleak。

  • bpo-28639:修复 inspect.isawaitable 以始终返回 Justin Mayfield 的 bool 补丁。

  • bpo-28652:make 循环方法拒绝它们不支持的套接字类型。

  • bpo-28653:修复 functools.lru_cache 中的刷新。

  • bpo-28703:修复 asyncio.iscoroutine 函数以处理 Mock 对象。

  • bpo-28704:修复 create_unix_server 以支持类似路径的对象(PEP 519)。

  • bpo-28720:添加 collections.abc.AsyncGenerator。

Documentation

  • bpo-28513:已记录的 zipfile 命令行界面。

Tests

  • bpo-28666:现在,test.support.rmtree 能够删除不可写或不可读的目录。

  • bpo-23839:现在,在运行每个测试文件之前,将清除各种缓存。

Build

  • bpo-10656:修复 AIX 上的树外构建。 Tristan Carel 和 Michael Haubenwallner 的补丁。

  • bpo-26359:将–with-optimizations 重命名为–enable-optimizations。

  • bpo-28676:防止在 macOS 上丢失“ getentropy”语句警告。 Gareth Rees 的补丁。

Python 3.6.0 beta 3

*发布日期:2016-10-31 *

核心和内建函数

  • bpo-28128:无效的 str 和字节转义序列的弃用警告现在可以输出有关错误发生位置的更好信息。 Serhiy Storchaka 和 Eric Smith 的补丁。

  • bpo-28509:dict.update()不再分配不必要的大内存。

  • bpo-28426:修复了调试版本中 PyUnicode_AsDecodedObject()中潜在的崩溃。

  • bpo-28517:修复了窥孔优化器中的一个错误,该错误导致保持代码无法访问。

  • bpo-28214:改进了有问题的__set_name_属性的异常报告。

  • bpo-23782:修复了_PyTraceback_Add()中可能的内存泄漏和 PyTraceBack_Here()中的异常丢失。

  • bpo-28471:修复了 socket.setblocking 中的“在没有保持 GIL 的情况下调用了 Python 内存分配器”崩溃。

Library

  • bpo-27517:如果两次给空数据,LZMA 压缩器和解压缩器将不再引发异常。 Benjamin Fogle 修补程序。

  • bpo-28549:使用 ncurses6 修复了 curses 的 addch()中的段错误。

  • bpo-28449:模式为“ r”或“ r:”的 tarfile.open()现在try在未压缩的情况下打开压缩后的 tar 文件。否则,它有 50%的机会失败,并且 ignore_zeros = True。

  • bpo-23262:Web 浏览器模块现在支持 Firefox 36 和派生的浏览器。基于 Oleg Broytman 的补丁。

  • bpo-27939:修复了 tkinter.ttk.LabeledScale 和 tkinter.Scale 中的错误,该错误是由于在 Tk 内部将比例表示为 float 值而引起的。如果将 float 值设置为基础 Tk 变量,则 tkinter.IntVar 现在可以工作。

  • bpo-18844:现在,为 random.choices()指定权重的各种方法产生的结果序列相同。

  • bpo-28255:calendar.TextCalendar()。prmonth()在打印一个月的 calendar 后不再在新行的开头打印空格。张翔的补丁。

  • bpo-20491:textwrap.TextWrapper 类现在使用不间断空格。基于 Kaarle Ritvanen 的补丁。

  • bpo-28353:os.fwalk()在断开的链接上不再失败。

  • bpo-28430:修复了 C 实现的 asyncio 迭代器。Future 不接受传递给它的 non-None 值。send(val)。

  • bpo-27025:Tkinter 小部件的生成名称现在以“!”开头。可读性的前缀。

  • bpo-25464:pass添加解决 Tix 库错误的方法,在 tkinter.tix 模块中修复了 HList.header_exists()。

  • bpo-28488:shutil.make_archive()不再将条目“ ./”添加到 ZIP 存档中。

  • bpo-25953:re.sub()现在会在替换模板中为无效的数字组引用引发错误,即使在字符串中未找到模式也是如此。现在,无效组引用的错误消息包括组索引和引用位置。基于 SilentGhost 的补丁。

  • bpo-18219:针对大量列优化 csv.DictWriter。 Mariatta Wijaya 修补程序。

  • bpo-28448:Fix C 实现了 asyncio.Future 在 Windows 上不起作用。

  • bpo-28480:修复了禁用多线程时构建套接字模块的错误。

  • bpo-24452:使 Web 浏览器支持 Mac OS X 上的 Chrome。

  • bpo-20766:修复了在 SIGINT 处理程序的处理中 pdb 泄漏的引用。

  • bpo-28492:修复_asyncio.Future 中如何引发 StopIteration 异常。

  • bpo-28500:修复 asyncio 以处理来自另一个线程的异步 gens GC。

  • bpo-26923:修复 asyncio.Gather 拒绝所有子项完成后被取消。 Johannes Ebke 的补丁。

  • bpo-26796:不要配置默认线程池执行程序的工作程序数量。 Hans Lawrenz 的最初补丁。

  • bpo-28544:在 C 中实现 asyncio.Task。

Windows

  • bpo-28522:修复了 getpathp.c 中缓冲区处理不当的问题

Build

  • bpo-28444:修正交叉编译时缺少的扩展模块。

  • bpo-28208:更新 Windows build 和 OS X 安装程序以使用 SQLite 3.14.2.

  • bpo-28248:更新 Windows 版本和 OS X 安装程序以使用 OpenSSL 1.0.2j。

Tests

  • bpo-26944:修复了用于 Android 的 test_posix,其中“ id -G”完全错误或缺少有效的 gid。

  • bpo-28409:regrtest:修复命令行参数的解析器。

Python 3.6.0 beta 2

*发布日期:2016-10-10 *

核心和内建函数

  • bpo-28183:优化和清理字典迭代。

  • bpo-26081:添加了 asyncio.Future 的 C 实现。 Yury Selivanov 的原始补丁。

  • bpo-28379:添加了对 PyUnicode_CopyCharacters()的完整性检查和测试。张翔的补丁。

  • bpo-28376:远程迭代器的类型现已注册为迭代器。 Oren Milman 修补程序。

  • bpo-28376:现在不建议pass调用 range_iterator 类型来创建 range_iterator 的实例。 Oren Milman 修补程序。

  • bpo-28376:range_iterator 的构造函数现在检查步骤是否为 0.Oren Milman 进行了修补。

  • bpo-26906:解决未初始化类型的特殊方法现在将导致该类型的隐式初始化,而不是失败。

  • bpo-18287:PyType_Ready()现在检查 tp_name 不为 NULL。 Niklas Koep 的原始补丁。

  • bpo-24098:修复了在编译过程中更改 AST 时可能发生的崩溃。

  • bpo-28201:当哈希具有相同的低位时,Dict 减少了哈希表中第二个冲突的可能性。

  • bpo-28350:不再保留具有空字符的字符串常量。

  • bpo-26617:修复了当 GC 在弱引用回调期间运行时崩溃的问题。

  • bpo-27942:现在,字符串常量递归地插入到 Tuples 和 Frozensets 中。

  • bpo-21578:修复了使用无效关键字 args 调用 ImportError 时产生的误导性错误消息。

  • bpo-28203:修复复杂(1.0, {2:3})错误消息中的错误类型。 Soumya Sharma 修补程序。

  • bpo-28086:将 Tuples 子类型的单个 var-positional 参数毫不费力地传递给 C 定义的函数。现在将其转换为精确的 Tuples。

  • bpo-28214:现在,在类而不是实例上查找__set_name__。

  • bpo-27955:当 getrandom()系统调用因 EPERM 而失败时(例如,被 SECCOMP 阻止时),在读取/ dev/urandom 设备时回退。

  • bpo-28192:不要在隔离模式下导入 readline。

  • 将内部 unicode 数据库升级到 Unicode 版本 9.0.0.

  • bpo-28131:修复 zipimport 的 compile_source()中的回归。 zipimport 应该使用与解释器相同的优化级别。

  • bpo-28126:用 memcpy()替换 Py_MEMCPY。 Visual Studio 可以正确优化 memcpy()。

  • bpo-28120:在try删除“待处理键”(尚未插入拆分表)时,修复了拆分字典的 dict.pop()。张翔的补丁。

  • bpo-26182:在将 async 和 await 关键字用作变量/属性/类/函数名称时,引发 DeprecationWarning。

Library

  • bpo-27998:Windows 上的 os.scandir()中的固定字节路径支持。 Eryk Sun 修补程序。

  • bpo-28317:现在,反汇编程序将解码 FORMAT_VALUE 参数。

  • bpo-26293:修复了写入不是从文件开头开始的 ZIP 文件的问题。现在,ZIP 文件中的偏移量相对于符合规范的存档开始位置而言。

  • bpo-28380:unittest.mock 模拟自动规格函数现在可以正确地支持 assert_call,assert_not_drawn 和 assert_drawn_once。

  • bpo-27181:删除 statistics.geometric_mean 并推迟到 3.7.

  • bpo-28229:lzma 模块现在支持 pathlib。

  • bpo-28321:修复了在 plistlib 中以二进制格式写入非 BMP 字符的问题。

  • bpo-28225:bz2 模块现在支持 pathlib。 Ethan Furman 的最初补丁。

  • bpo-28227:gzip 现在支持 pathlib。 Ethan Furman 修补程序。

  • bpo-27358:优化了将 var-keyword 参数合并的Function,并改进了将非 Map 作为 var-keyword 参数传递时的错误消息。

  • bpo-28257:传递不可重复的 var-positional 参数时,改进了错误消息。添加了操作码 BUILD_TUPLE_UNPACK_WITH_CALL。

  • bpo-28322:修复了从错误的 pickle 数据中解开 itertools 对象时可能导致的崩溃。基于 John Leitch 的补丁。

  • bpo-28228:imghdr 现在支持 pathlib。

  • bpo-28226:compileall 现在支持 pathlib。

  • bpo-28314:修复 xml.etree.ElementTree.Element 的 getiterator()方法的函数语句(C 标志)。

  • bpo-28148:在时间模块中停止使用 localtime()和 gmtime()。引入了与平台无关的_PyTime_localtime API,与 POSIX localtime_r 类似,但在所有平台上都可用。 Ed Schouten 修补程序。

  • bpo-28253:极端月份的固定 calendar Function:0001-01 和 9999-12.重新实现了 itermonthdays()和 itermonthdays2()方法,以便它们不会调用 itermonthdates(),而这可能导致 datetime.date 不足/溢出。

  • bpo-28275:修复了在 LZMADecompressor 和 BZ2Decompressor 类的 decompress()方法中释放后可能使用的问题。 John Leitch 的原始补丁。

  • bpo-27897:修复了如果将无效的类似字符串的对象作为名称传递,则在 sqlite3.Connection.create_collation()中可能导致崩溃的问题。张翔的补丁。

  • bpo-18844:random.choices()现在将 k 作为仅关键字的参数,以提高常见情况的可读性,并与其他语言中使用的签名一致。

  • bpo-18893:修复了 Lib/ctypes/macholib/dyld.py 中无效的异常处理。麦迪逊·梅的修补程序。

  • bpo-27611:固定支持 tkinter.tix 模块中的默认根窗口。在 DisplayStyle 构造函数中添加了 master 参数。

  • bpo-27348:在回溯模块中,恢复异常消息的格式,例如“ Exception:None”。这修复了 3.5a2 中引入的回归。

  • bpo-25651:允许将 false 值用于 subTest()的 msg 参数。

  • bpo-27778:修复了 getrandom()被 signal break并且 signal 处理程序引发 Python 异常时 os.getrandom()中的内存泄漏的问题。

  • bpo-28200:修复 os 模块中 Windows 上的内存泄漏(修复 path_converter()函数)。

  • bpo-25400:现在,RobotFileParser 可以正确返回 crawl_delay 和 request_rate 的默认值。 Peter Wirtz 的最初补丁。

  • bpo-27932:防止 win32_ver()中的内存泄漏。

  • 修复 socket._sendfile_use_sendfile 中的 UnboundLocalError。

  • bpo-28075:在 Windows 实施 os.stat()中检查 ERROR_ACCESS_DENIED。 Eryk Sun 修补程序。

  • bpo-22493:pass在正则表达式中间使用内联标志发出的警告消息现在包含(截断的)正则表达式模式。 Tim Graham 的补丁。

  • bpo-25270:防止在传递空字节串时 codecs.escape_encode()引发 SystemError。

  • bpo-28181:pass HTTPS 获得反重力。 Kaartic Sivaraam 修补程序。

  • bpo-25895:在 urllib.parse.urljoin 中启用 WebSocket URL 方案。 Gergely Imreh 和 Markus Holtermann 制作的补丁。

  • bpo-28114:修复了 env 包含字节字符串时 parse_envlist()崩溃的问题。 Eryk Sun 修补程序。

  • bpo-27599:修复了 binascii.b2a_qp()和 binascii.a2b_qp()中的缓冲区溢出。

  • bpo-27906:修复套接字在 TCP 高流量期间接受耗尽的问题。凯文·康威(Kevin Conway)修补程序。

  • bpo-28174:未正确支持 SO_REUSEPORT 时处理。塞思·迈克尔·拉森(Seth Michael Larson)的补丁。

  • bpo-26654:检查 asyncio.Handle .__ repr_中的 functools.partial。 Iceboy 修补程序。

  • bpo-26909:修复 asyncio 中的慢速管道 IO。 INADA Naoki 的补丁。

  • bpo-28176:修复 asyncio.SelectorLoop.sock_connect 中的回调竞赛。

  • bpo-27759:修复 selectors 错误地保留了无效的文件 Descriptors。马克·威廉姆斯的补丁。

  • bpo-28368:如果 child 观察者未连接循环,则拒绝监视进程。 Vincent Michel 修补程序。

  • bpo-28369:将传输的 FD 与 add_reader,add_writer 等一起使用时,引发 RuntimeError。

  • bpo-28370:精确地加速 asyncio.StreamReader.read。 КоренбергМарк的补丁。

  • bpo-28371:弃用传递给 arun_in_executor 的 asyncio.Handle。

  • bpo-28372:修复 asyncio 以支持非 Python 协程的格式。

  • bpo-28399:绑定前,请从 FS 中删除 UNIX 套接字。 КоренбергМарк的补丁。

  • bpo-27972:禁止任务 await 自己。

Windows

  • bpo-28402:在 Windows 上为 stdlib 添加签名的目录文件。

  • bpo-28333:为 ps1/ps2 和 input()提示启用 Unicode。 (Eryk Sun 修补程序)

  • bpo-28251:改进了 Windows 上的帮助手册。

  • bpo-28110:launcher.msi 在 32 位和 64 位之间具有不同的产品代码

  • bpo-28161:打开 CON 进行写访问失败

  • bpo-28162:如果第一行以 Ctrl Z 开头,则 WindowsConsoleIO readall()失败

  • bpo-28163:WindowsConsoleIO fileno()将错误的标志传递给_open_osfhandle

  • bpo-28164:_ PyIO_get_console_type 针对各种路径失败

  • bpo-28137:将 Windows 路径文件重命名为._pth

  • bpo-28138:Windows ._pth 文件应允许导入站点

C API

  • bpo-28426:不推荐使用的未记录Function PyUnicode_AsEncodedObject(),PyUnicode_AsDecodedObject(),PyUnicode_AsDecodedUnicode()和 PyUnicode_AsEncodedUnicode()。

Build

  • bpo-28258:使用爱沙尼亚语言环境(Makefile 中的 python-config 和 distclean 目标)修复了构建。由 Arfrever Frehtes Taifersar Arahesis 修补的补丁。

  • bpo-26661:setup.py 现在使用多体系结构包装程序检测系统 libffi。

  • bpo-15819:删除多余的包含搜索目录选项,用于在源树之外进行构建。

Tests

  • bpo-28217:添加_testconsole 模块以测试控制台 Importing。

Python 3.6.0 beta 1

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

核心和内建函数

  • bpo-23722:零参数 super()所使用的__class_单元格现在是从 type .__ new_而不是__build_class_初始化的,因此,在类创建期间从元类方法调用时,依赖于此的类方法现在可以正常工作。 Martin Teichmann 的补丁。

  • bpo-25221:当使用 NSMALLPOSINTS = 0 编译 Python 时,修复了 PyLong_FromLong(0)的错误结果。

  • bpo-27080:实现对 PEP 515的格式支持。 Chris Angelico 的最初补丁。

  • bpo-27199:在 tarfile 中,公开 copyfileobj bufsize 以提高吞吐量。杰森·弗里德(Jason Fried)的补丁。

  • bpo-27948:在 f 字符串中,只允许在括号(表达式所在的位置)内使用反斜杠。与 3.6 alpha 版本相比,这是一个重大变化,在 f 字符串中的任何位置都允许使用反斜杠。此外,还要求将 f 字符串内的表达式括在大括号内,并且不能像f'\x7b"hi"\x7d'那样转义。

  • bpo-28046:从 sys.path 中删除特定于平台的目录。

  • bpo-28071:添加较早的值以区别于空集。

  • bpo-25758:防止 zipimport 不必要地编码文件名(由 Eryk Sun 修补)

  • bpo-25856:现在可以扩展模块和函数的__module_属性。这将使协议 4 的 pickle 数据更加紧凑。

  • bpo-27213:返工 CALL_FUNCTION *操作码以产生更短和更有效的字节码。由 Demur Rumed 制作的补丁程序,由 Serhiy Storchaka 设计,并由 Serhiy Storchaka 和 Victor Stinner 进行了审查。

  • bpo-26331:为 PEP 515实现标记化支持。 Georg Brandl 的补丁。

  • bpo-27999:将“使用后全局”设置为 SyntaxError,将 nonlocal 设置为同上。 Ivan Levkivskyi 的补丁。

  • bpo-28003:实现 PEP 525 –异步生成器。

  • bpo-27985:实施 PEP 526 –变量 Comments 的语法。 Ivan Levkivskyi 的补丁。

  • bpo-26058:将新的私有版本添加到内置 dict 类型,在每次创建字典和每次更改字典时都会增加。 PEP 509 的实施。

  • bpo-27364:现在,不是有效转义序列的反斜杠字符对将生成 DeprecationWarning。伊曼纽尔·巴里(Emanuel Barry)的补丁。

  • bpo-27350dict的实现方式与 PyPy 一样。它更紧凑,并保留插入 Sequences。 (由 Raymond Hettinger 开发的概念,由 Inada Naoki 开发的补丁.)

  • bpo-27911:删除exec_builtin_or_dynamic()中不必要的错误检查。

  • bpo-27078:添加了 BUILD_STRING 操作码。优化的 f 弦评估。

  • bpo-17884:Python 现在需要具有 inttypes.h 和 stdint.h 的系统

  • bpo-27961:需要平台支持long long。 Python 多年没有long long就没有编译过,因此这基本上是一种形式。

  • bpo-27355:删除了对 Windows CE 的支持。它从未完成过,Windows CE 不再是 Python 的相关平台。

  • Implement PEP 523.

  • bpo-27870:左移零大整数将不再try分配大量内存。

  • bpo-25402:从 int 到十进制字符串的转换中,改善所需的中间存储器的估计,并删除不必要的严格溢出检查。 Serhiy Storchaka 修补程序。

  • bpo-27214:在 long_invert 中,请小心修改 long_add 返回的对象,并删除不必要的小长整形检查。感谢 Oren Milman 的分析和补丁。

  • bpo-27506:支持pass关键字传递 bytes/bytearray.translate()“ delete”参数。

  • bpo-27812:正确清除生成器框架对生成器的后向引用,以防止 frame.clear()崩溃。

  • bpo-27811:修复了在未启用 await 的协程启用了警告作为错误的情况下完成的崩溃。

  • bpo-27587:解决了 PVS-Studio 发现的另一个问题:在_PyState_AddModule()中使用'def'后,对空指针进行检查。 Christian Heimes 的最初补丁。

  • bpo-27792:现在,应用于bool和其他int子类的模运算始终返回int。以前,返回类型取决于 Importing 值。张翔的补丁。

  • bpo-26984:int()现在始终返回精确 int 的实例。

  • bpo-25604:修复整数整除的小错误;在没有可靠 ldexp 实现的平台上,此错误可能会导致一字不清的结果。

  • bpo-24254:使类定义名称空间默认情况下排序。

  • bpo-27662:修复List_New中的溢出检查:原始代码正在针对Py_SIZE_MAX进行检查,而不是针对Py_SSIZE_T_MAX的正确上限。张翔的补丁。

  • bpo-27782:现在可以正确导入多阶段扩展模块,使用m_methods字段将模块级别的Function添加到从Py_create_mod返回的非模块类型的实例中。张翔的补丁。

  • bpo-27936:round()函数对某些类型接受第二个 None 参数,但对其他类型则不接受。pass接受所有数字类型的 None 来解决不一致问题。

  • bpo-27487:如果在导入父包之后但在执行子模块之前,在 sys.modules 中找到了“ python -m”或 runpy.run_module()的子模块参数,则发出警告。

  • bpo-27157:仅使 type()本身接受单参数形式。 Eryk Sun 和 Emanuel Barry 的补丁。

  • bpo-27558:修复“ raise”语句执行中的 SystemError。在一个全新的线程中,引发 RuntimeError,因为没有要引发的活动异常。张翔写的补丁。

  • bpo-28008:实施 PEP 530 –异步理解。

  • bpo-27942:修复 codeobject.c 中的内存泄漏

Library

  • bpo-28732:修复了 os.spawnv()中的错误,该错误在 args 中没有任何元素

  • bpo-28485:即使多线程不可用,也始终为负的 compileall.compile_dir(workers = ...)参数引发 ValueError。

  • bpo-28037:使用 sqlite3_get_autocommit()代替手动设置 Connection-> inTransaction。

  • bpo-25283:属性 tm_gmtoff 和 tm_zone 现在在所有平台上都可以使用 time.localtime()和 time.gmtime()的返回值。

  • bpo-24454:现在可以使用__getitem_访问正则表达式匹配对象组。 “ mo [x]”等效于“ mo.group(x)”。

  • bpo-10740:sqlite3 不再在 DDL 语句之前隐式提交打开的事务。

  • bpo-17941:向 collections.namedtuple()添加一个* module *参数。

  • bpo-22493:现在仅应在正则表达式的开头使用内联标志。如果在正则表达式的中间使用弃用警告,则会发出警告。

  • bpo-26885:xmlrpc 现在支持解组 Apache XML-RPC 实现使用的用于数字和 None 的其他数据类型。

  • bpo-28070:修复了在正则表达式中解析内联详细标志的问题。

  • bpo-19500:将 Client 端 SSL 会话恢复添加到 ssl 模块。

  • bpo-28022:弃用与 ssl 相关的参数,而支持 SSLContext。弃用方法包括在 ftplib,httplib,imaplib,smtplib,poplib 和 urllib 中手动创建 SSLSocket 和 certfile/keyfile(或类似文件)。

  • bpo-28043:SSLContext 改进了默认设置:OP_NO_SSLv2,OP_NO_SSLv3,OP_NO_COMPRESSION,OP_CIPHER_SERVER_PREFERENCE,OP_SINGLE_DH_USE,OP_SINGLE_ECDH_USE 和无 MD5 的高密码。

  • bpo-24693:将 zipfile 模块中的一些 RuntimeError 更改为更合适的类型。改进了一些错误消息和调试输出。

  • bpo-17909json.loadjson.loads现在支持将二进制 Importing 编码为 UTF-8,UTF-16 或 UTF-32. Serhiy Storchaka 修补程序。

  • bpo-27137functools.partial的纯 Python 后备实现现在可以与它的加速 C 对应类的行为匹配,以实现子类化,Pickling 和文本表示目的。 Emanuel Barry 和 Serhiy Storchaka 的补丁。

  • 使用异常的使用模式,修复 mmap 模块中可能发生的整数溢出和崩溃。

  • bpo-1703178:修复了将–link-objects 选项传递给 distutils build_ext 命令的Function。

  • bpo-28019:itertools.count()不再舍入 1.0 到 2.0 到 1 之间的非整数步。

  • bpo-18401:Pdb 现在支持'readrc'关键字参数,以控制是否应读取.pdbrc 文件。 Martin Matusiak 和 Sam Kimbrel 的补丁。

  • bpo-25969:更新 lib2to3 语法,以处理 3.5 中添加的拆包概括。

  • bpo-14977:mailcap 现在遵守 RFC 1542 要求的 mailcap 文件中各行的 Sequences(“第一个匹配项”)。Michael Lazar 进行了修补。

  • bpo-28082:将 re 标志常量转换为 IntFlag。

  • bpo-28025:将所有 ssl 模块常量转换为 IntEnum 和 IntFlags。 SSLContext 属性现在返回标志和枚举。

  • bpo-23591:将 Flag,IntFlag 和 auto()添加到枚举模块。

  • bpo-433028:在正则表达式中增加了对修饰符范围的支持。

  • bpo-24594:在打开 MSI 数据库时验证持久性参数

  • bpo-17582:xml.etree.ElementTree 现在保留属性中的空白(由 Duane Griffin 修补.由 Stefan Behnel 审核并批准.)

  • bpo-28047:固定计算新电子邮件策略中用于 base64 CTE 的行长。

  • bpo-27576:在 OrderedDict .__ init __()中修复呼叫 Sequences。

  • email.generator.DecodedGenerator 现在支持 policy 关键字。

  • bpo-28027:从Lib/plat-*中删除未记录的模块:IN,CDROM,DLFCN,TYPES,CDIO 和 STROPTS。

  • bpo-27445:不要将 str(_charset)传递给 MIMEText.set_payload()。由 Claude Paroz 修补。

  • bpo-24277:新的电子邮件 API 不再是临时的,并且文档已重新组织和重写以强调新的 API。

  • bpo-22450:urllib 现在在默认标题中包括Accept: */*标题。这使得 REST API 请求的结果更加一致和可预测,尤其是在涉及代理服务器时。

  • lib2to3.pgen3.driver.load_grammar()现在在给定相同 Grammar.txtImporting 的情况下,在两次运行之间创建一个稳定的缓存文件,而与哈希随机化设置无关。

  • bpo-28005:允许传播编码实施中的 ImportErrors。

  • bpo-26667:在 importlib.util 中支持类似路径的对象。

  • bpo-27570:避免在“ ctypes”和“ array”模块中使用空源指针对零长度的 memcpy()等进行调用。

  • bpo-22233:仅在 RFC 指定的 CR 和 LF 字符上打断电子邮件 Headers 行,而不能在任意 unicode 换行符上打断。这也修复了 HTTPHeaders 解析中的错误。

  • bpo-27331:email.mime 类现在都接受一个可选的策略关键字。

  • bpo-27988:修复了电子邮件 iter_attachments 不正确的有效载荷列表突变。

  • bpo-16113:向 hashlib 模块添加 SHA-3 和 SHAKE 支持。

  • 消除_scproxy.c 中的重言指针比较警告。

  • bpo-27776os.urandom()函数现在在 Linux 3.17 和更高版本上会阻止,直到初始化系统 urandom 熵池以提高安全性为止。此更改是 PEP 524的一部分。

  • bpo-27778:将 Linux getrandom() syscall 公开为新的os.getrandom()函数。此更改是 PEP 524的一部分。

  • bpo-27691:修复了 X.509 证书中 ssl 模块对 GEN_RID 使用者替代名称字段的解析。

  • bpo-18844:添加 random.choices()。

  • bpo-25761:改进了有关在无 Pickling 程序的 C 实现中对被截断的 pickle 数据进行错误报告的Function。在某些情况下,现在引发 UnpicklingError 而不是 AttributeError 和 ValueError。

  • bpo-26798:将 BLAKE2(blake2b 和 blake2s)添加到 hashlib。

  • bpo-26032:使用 os.scandir();优化 pathlib 中的 glob 现在快了 1.5 到 4 倍。

  • bpo-25596:在 glob 模块中优化了 glob()和 iglob()函数;现在它们的速度提高了 3 到 6 倍。

  • bpo-27928:将 scrypt(基于密码的密钥派生Function)添加到 hashlib 模块中(需要 OpenSSL 1.1.0)。

  • bpo-27850:从 ssl 模块的默认密码列表中删除 3DES,以应对措施 sweet32 攻击(CVE-2016-2183)。

  • bpo-27766:将 ChaCha20 Poly1305 添加到 ssl 模块的默认密码列表中。 (必需的 OpenSSL 1.1.0 或 LibreSSL)。

  • bpo-25387:检查 winsound.MessageBeep 的返回值。

  • bpo-27866:添加 SSLContext.get_ciphers()方法以获取所有已启用密码的列表。

  • bpo-27744:将 AF_ALG(Linux 内核加密)添加到套接字模块。

  • bpo-26470:将 ssl 和 hashlib 模块移植到 OpenSSL 1.1.0.

  • bpo-11620:修复了 winsound.PlaySound 中对 SND_MEMORY 的支持。基于 Tim Lesher 的补丁。

  • bpo-11734:将对 IEEE 754 半精度浮点数的支持添加到 struct 模块。基于 Eli Stevens 的补丁。

  • bpo-27919:distutils 包装中已弃用的extra_path发行选项。

  • bpo-23229:添加新的cmath常量:cmath.infcmath.nan匹配math.infmath.nan,还添加cmath.infjcmath.nanj匹配复杂 repr 使用的格式。

  • bpo-27842:csv.DictReader 现在返回 OrderedDict 类型的行。 (由史蒂夫·霍尔顿(Steve Holden)贡献。)

  • 删除对将文件 Descriptors 传递给 os.access 的支持。它从未奏效,但以前没有提出。

  • bpo-12885:修复 distutils 遇到符号链接时的错误。

  • bpo-27881:修复了设置 sqlite3.Connection.isolation_level 时可能出现的错误。基于张翔的补丁。

  • bpo-27861:修复了工厂创建非游标时 sqlite3.Connection.cursor()崩溃的问题。张翔的补丁。

  • bpo-19884:避免pass Gnu Readline 在 OS X 上进行虚假输出。

  • bpo-27706:使用种子版本 1 恢复字符串种子的 random.Random()。seed()的确定性行为。允许对 random()的调用序列与 Python 2 中获得的序列完全匹配。Nofar Schnider 修补。

  • bpo-10513:修复 Connection.commit()中的回归。提交后不应重置语句。

  • bpo-12319:已向 http.client.HTTPConnection 请求中添加了块传输编码支持。 urllib.request.AbstractHTTPHandler 类不再强制执行 Content-LengthHeaders。如果 HTTP 请求具有文件或可迭代的正文,但没有 Content-Length 头,则该库现在将退回以使用分块传输编码。

  • https://github.com/python/typing开始的新版本 type.py:-集合(仅适用于 3.6)(bpo-27598)-将 FrozenSet 添加到__all __(上游#261)-修复_get_type_vars()崩溃(上游#259)-删除 ForwardRef 中的 dict 约束。 _eval_type(上游#252)

  • bpo-27832:将_normalize参数设置为Fraction构造函数(仅关键字),以便Fraction(2, 3, 4)现在引发TypeError

  • bpo-27539:在负指数和负基数的情况下修复未归一化的Fraction.__pow__结果。

  • bpo-21718:cursor.description 现在可用于使用 CTE 的查询。

  • bpo-27819:在 distutils sdists 中,除非提供“ formats”,否则只需在所有平台上生成“ gztar”(gzipped tar 格式)发行版即可。

  • bpo-2466:posixpath.ismount 现在可以正确识别用户没有访问权限的安装点。

  • bpo-9998:在 Linux 上,ctypes.util.find_library 现在在 LD_LIBRARY_PATH 中查找共享库。

  • bpo-27573:代码的退出消息。现在可以配置交互。

  • bpo-27930:改进了 logging.handlers.QueueListener 的行为。感谢 Paulo Andrade 和 Petr Viktorin 的分析和补丁。

  • bpo-6766:将分布式引用计数添加到 multiprocessing 中,以支持共享值/代理对象的嵌套。

  • bpo-21201:提高了 multiprocessing 错误消息的可读性。感谢 Wojciech Walczak 的补丁程序。

  • 异步:将 set_protocol/get_protocol 添加到传输中。

  • bpo-27456:异步:默认情况下设置 TCP_NODELAY。

IDLE

  • bpo-15308:在 Shell 菜单中添加“break执行”(^ C)。 Roger Serwy 修补程序,Bayard Randel 更新。

  • bpo-27922:从屏幕上的“闪烁” GUI 小部件停止 IDLE 测试。

  • bpo-27891:始终在 idlelib 模块内对导入进行分组和排序。

  • bpo-17642:为教室投影添加更大的字体。

  • 将版本添加到“ IDLE 帮助”窗口的标题。

  • bpo-25564:在“ IDLE –控制台差异”部分中,提到使用 exec 意味着为每个语句定义了__builtins__。

  • bpo-27821:修复了 3.6.0a3 回归,该回归防止在未定义自定义主题时选择自定义键集。

C API

  • bpo-26900:有限 API 中不包括带下划线的名称和其他私有 API。

  • bpo-26027:在 PyUnicode_FSConverter()和 PyUnicode_FSDecoder()中添加对类似路径的对象的支持。

Tests

  • bpo-27427:math 模块的其他测试。 Francisco Couzo 修补程序。

  • bpo-27953:由于 tan 的 libm 实现不佳而导致 OS X 10.4 上的 math 和 cmath 测试失败。

  • bpo-26040:提高 test_math 和 test_cmath 的覆盖率和严格度。杰夫·艾伦的补丁。

  • bpo-27787:在检查每个测试是否有“悬挂线程”之前,请调用 gc.collect(),因为悬挂线程是弱引用。

Build

  • bpo-27566:修复冻结的 makefile 中的干净目标(Lisa Roach 修补程序)

  • bpo-27705:validate_ucrtbase.py 中的更新消息

  • bpo-27976:在非 OSX UNIX 平台上,不建议使用 libffi 的 Binding 副本构建_ctypes。

  • bpo-27983:当按要求使用 clang 来使 PGO 链接成为配置时间错误而不是启用--with-optimizations时花费时间时,会导致缺少 llvm-profdata 工具。还可以提高我们在 MacOS 和某些 Linux 上查找 llvm-profdata 工具的能力。

  • bpo-21590:支持 DTrace 和 SystemTap 探针。

  • bpo-26307:现在,profile-opt 构建将 PGO 应用于内置模块。

  • bpo-26359:添加–with-optimizations 标志以在可用时打开 LTO 和 PGO 构建支持。

  • bpo-27917:为 Android 构建设置平台三胞胎。

  • bpo-25825:更新对 AIX 上$(LIBPL)安装路径的引用。此路径在 3.2a4 中已更改。

  • 更新 OS X 安装程序以使用 SQLite 3.14.1 和 XZ 5.2.2.

  • bpo-21122:修复 LTO 构建在 OS X 上。

  • bpo-17128:使用 OpenSSL 的专用副本构建 OS X 安装程序。还提供一个示例“安装证书”命令脚本,以从第三方 certifi 模块安装一组根证书。

Tools/Demos

  • bpo-27952:获取可与 Python 3 和当前“ re”模块一起使用的 Tools/scripts/fixcid.py,避免使用无效的 Python 反斜杠转义符,并修复解析转义的 C 引号引起的错误。

Windows

  • bpo-28065:将 xz 依赖关系更新为 5.2.2 并从源代码进行构建。

  • bpo-25144:在 continue 自定义安装之前,请确保已设置 TargetDir。

  • bpo-1602:Windows 控制台不 Importing 或打印 Unicode(PEP 528)

  • bpo-27781:将 Windows 上的文件系统编码更改为 UTF-8(PEP 529)

  • bpo-27731:在 Windows 10 上选择退出 MAX_PATH

  • bpo-6135:将编码和错误参数添加到子流程。

  • bpo-27959:将 oem 编码,别名 ansi 添加到 mbcs,将 aliasmbcs 移动到编解码器查找。

  • bpo-27982:winsound 模块的Function现在接受关键字参数。

  • bpo-20366:在 Windows 的 SQLite 中构建全文搜索支持。

  • bpo-27756:在 Windows 上为 Python 文件和进程添加新图标。王樱桃的设计。

  • bpo-27883:在 Windows 上将 sqlite 更新为 3.14.1.0.

Python 3.6.0 alpha 4

*发布日期:2016-08-15 *

核心和内建函数

  • bpo-27704:优化了从类似字节的对象和可迭代对象创建字节和字节数组的过程。短物体的速度提高 3 倍。稻田直树(Naoki Inada)的原始补丁。

  • bpo-26823:内置的回溯渲染现在将回溯中大部分重复行缩写为“ [上一条重复行重复次]”。伊曼纽尔·巴里(Emanuel Barry)的补丁。

  • bpo-27574:减少了使用 Argument Clinic 实现的函数中解析关键字参数的开销。

  • bpo-22557:现在,导入已导入的模块的速度提高了 2.5 倍。

  • bpo-17596:包括<wincrypt.h>以帮助构建 Min GW。

  • bpo-17599:在 Windows 上,重命名私有定义的 REPARSE_DATA_BUFFER 结构,以避免与 Min GW 中的定义冲突。

  • bpo-27507:在 bytearray.extend()中添加整数溢出检查。张翔的补丁。

  • bpo-27581:不要依赖包装在 PySequence_Tuple()中进行溢出检查。张翔的补丁。

  • bpo-1621:避免列表和 Tuples 操作中的有符号整数溢出。张翔的补丁。

  • bpo-27419:标准__import __()不再在全局变量或内置函数中查找“ import”以导入子模块或“从导入”。修复了当引发关于无法从__spec_或__package_解析软件包的警告时崩溃的问题。

  • bpo-27083:在 Windows 下遵守 PYTHONCASEOK 环境变量。

  • bpo-27514:使太多静态嵌套的块成为 SyntaxError 而不是 SystemError。

  • bpo-27366:已实现 PEP 487(类创建的简单自定义)。子类化后,在 Base Class 上调用__init_subclass_类方法。创建类后,使用__set_name_初始化 Descriptors。

Library

  • bpo-26027:向 os 和 os.path 模块添加 PEP 519/__ fspath __()支持。包括来自 Jelle Zijlstra 的代码。 (另请参见:bpo-27524)

  • bpo-27598:将收藏集添加到 collections.abc。由 Ivan Levkivskyi 撰写的补丁程序,由 Neil Girdhar 撰写的文档。

  • bpo-25958:支持来自各种 ABC(例如__hash iter_或__len__)的特殊方法的“反注册”。所有这些(以及更多其他)都可以在实现类中设置为 None,并且其行为就像完全没有定义该方法一样。 (以前,此机制仅在__hash_中存在,以使可变类无法散列.)代码由 Andrew Barnert 和 Ivan Levkivskyi 提供。

  • bpo-16764:zlib.decompress()的支持关键字参数。张翔的补丁。

  • bpo-27736:防止由于 3.6.0a3 中bpo-27038的代码中引入的引用计数问题而导致解释器重新初始化后出现段错误。张翔的补丁。

  • bpo-25628:collections.namedtuple 的* verbose rename *参数现在仅用作关键字。

  • bpo-12345:在 math 和 cmath 中添加 math 常数 tau。另请参见 PEP 628

  • bpo-26823:traceback.StackSummary.format 现在将重复行的大部分缩写为“ [[上一行重复\ 更多次]]”(此更改随后会进一步影响模块中的其他回溯显示操作)。伊曼纽尔·巴里(Emanuel Barry)的补丁。

  • bpo-27664:向并发.futures.thread.ThreadPoolExecutor()添加了指定线程名称前缀的Function。

  • bpo-27181:将 geometric_mean 和谐波_mean 添加到统计信息模块。

  • bpo-27573:code.interact 现在在退出时显示一条消息。

  • bpo-6422:将自动调整范围方法添加到 timeit.Timer 对象。

  • bpo-27773:更正_ssl.wrap_socket()中的一些内存 Management 错误 server_hostname。

  • bpo-26750:unittest.mock.create_autospec()现在可以正确地用于 property()的子类和其他数据 Descriptors。删除从未公开使用,从未记录过的 unittest.mock.DescriptorTypesTuples。

  • bpo-26754:现在已弃用对 undefined 的通用字节状对象作为 compile()和类似函数中的路径的支持。

  • bpo-26800:不建议使用未记录的对类似于字节的常规对象的支持,因为 os 函数中的路径已被弃用。

  • bpo-26981:将_order 兼容性填充程序添加到枚举。对于 Python 2/3 代码库,应为 Enum。

  • bpo-27661:在 datetime.combine 中添加了 tzinfo 关键字参数。

  • 在 curses 模块中,如果将 window.getstr()或 window.instr()传递为负值,则会引发错误。

  • bpo-27783:修复了 operator.methodcaller 中未初始化内存的可能使用情况。

  • bpo-27774:修复_sre 中未拥有对象的可能的 Py_DECREF。

  • bpo-27760:修复 binascii.b2a_qp 中可能的整数溢出。

  • bpo-27758:修复了_csv 模块中大记录长度可能发生的整数溢出。

  • bpo-27568:防止 HTTPoxy 攻击(CVE-2016-1000110)。设置 REQUEST_METHOD 环境时,将忽略 HTTP_PROXY 变量,该环境指示脚本处于 CGI 模式。

  • bpo-7063:从“数组”模块的切片处理中删除无效代码。 Chuck 修补。

  • bpo-27656:不要假设 sched.h 定义了任何 SCHED_ *常量。

  • bpo-27130:在“ zlib”模块中,修复压缩和解压缩时对大缓冲区(通常为 4 GiB)的处理。以前,Importing 限制为 4 GiB,并且压缩和解压缩操作无法正确处理 4 GiB 的结果。

  • bpo-24773:已实现 PEP 495(本地时间消除歧义)。

  • 在选择模块中公开 EPOLLEXCLUSIVE 常数(定义时)。

  • bpo-27567:在选择模块中公开 EPOLLRDHUP 和 POLLRDHUP 常量。

  • bpo-1621:避免在“ audioop”模块中进行有符号的 int 取反溢出。

  • bpo-27533:在 nt._isdir 中释放 GIL

  • bpo-17711:pass协议 0 的持久性 ID 进行的取消固定。AlexanderVassalotti 的原始修补程序。

  • bpo-27522:避免在 email.feedparser 中意外的参考周期。

  • bpo-27512:当 os.fspath()调用引发异常的__fspath __()方法时,修复了段错误。张翔的补丁。

IDLE

  • bpo-27714:现在,在同一进程中重新运行时,text_textview 和 test_autocomplete pass。如果在使用-w 选项但不使用-jn 的情况下运行 test_idle 失败,则会发生这种情况。修复来自 test_config 的警告。

  • bpo-27621:将查询响应验证错误消息放在查询框本身而不是单独的消息框中。重做测试以匹配。添加 Mac OSX 改进。马克·罗斯曼(Mark Roseman)的原始补丁。

  • bpo-27620:退出键现在已关闭,已取消。

  • bpo-27609:IDLE:初始空格后的 Tab 应该制表,而不是自动完成。这解决了至少写入两次缩进的文档字符串的问题。

  • bpo-27609:当也有非无返回时,显式返回无。在某些情况下,可逆转条件并消除回报。

  • bpo-25507:IDLE 不再由于其 tkinter 导入而运行错误代码。用户必须包含直接在 Python 中运行所需的相同导入。

  • bpo-27173:将“ IDLE Modern Unix”添加到内置密钥集中。使默认密钥集取决于平台。将更改的测试添加到 config 模块。

  • bpo-27452:将行计数器和 crc 添加到 IDLE configHandler 测试转储中。

Tests

  • bpo-25805:根据需要跳过 test_pkgutil 中的测试,该测试在__name__ == __main__时不起作用。 SilentGhost 修补程序。

  • bpo-27472:添加 test.support.unix_shell 作为默认 Shell 的路径。

  • bpo-27369:在 test_pyexpat 中,避免测试在 Expat 2.2.0 中更改的错误消息详细信息。

  • bpo-27594:在启用 coverage 的情况下运行 test_ast 时,避免 assert 错误:确保代码对象具有有效的第一行号。 Ivan Levkivskyi 建议的补丁。

Windows

  • bpo-27647:将 Binding 的 Tcl/Tk 更新为 8.6.6.

  • bpo-27610:将 PEP 514元数据添加到 Windows 安装程序

  • bpo-27469:将 Shell 扩展添加到启动器,以便正确进行拖放。

  • bpo-27309:在 python [w] .exeLists 中启用正确的 Windows 样式。

Build

  • bpo-27713:在更新 importlib 的引导文件时,禁止虚假生成警告。张翔的补丁

  • bpo-25825:更正对 AIX 上必需的对 Modules/python.exp 的引用。参考在 3.5.0a1 中意外更改。

  • bpo-27453:configure 中的 CPP 调用必须使用 CPPFLAGS。志轩 Y 的补丁。

  • bpo-27641:配置脚本现在将 Comments 插入到 makefile 中,以防止 pgen 和_freeze_importlib 可执行文件被交叉编译。

  • bpo-26662:在配置中将 PYTHON_FOR_GEN 设置为在生成过程中用于文件生成的 Python 程序。

  • bpo-10910:避免在 FreeBSD 和 OS X 上出现 C 编译错误。还要更新 FreedBSD 版本检查以获取原始 ctype UTF-8 解决方法。

Python 3.6.0 alpha 3

*发布日期:2016-07-11 *

核心和内建函数

  • bpo-27473:修复了字节和字节数组串联中可能出现的整数溢出。张翔的补丁。

  • bpo-23034:默认情况下,带有定义的 COUNT_ALLOCS,SHOW_ALLOC_COUNT 或 SHOW_TRACK_COUNT 个宏的特殊 Python 构建的输出现已关闭。可以使用“ -X showalloccount”选项重新启用它。现在,它输出到 stderr 而不是 stdout。

  • bpo-27443:字节数组迭代器的__length_hint __()不再为已调整大小的字节数组返回负整数。

  • bpo-27007:字节和字节数组子类的 fromhex()类方法现在返回相应子类的实例。

Library

  • bpo-26844:修复了 imp.find_module()引用“路径”而不是“名称”的错误消息。 Lev Maximov 修补程序。

  • bpo-23804:修复 SSL 零长度 recv()调用,使其不会阻塞并且不会引发有关 EOF 异常的错误。

  • bpo-27466:更改 http.cookie.time2netscape 返回的时间格式,确认 netscape cookie 格式并使其与文档一致。

  • bpo-21708:已过时的 dbm.dumb 行为不同于常见的 dbm 行为:以“ r”和“ w”模式创建数据库,并以“ r”模式修改数据库。

  • bpo-26721:更改 socketserver.StreamRequestHandler.wfile 属性以实现 BufferedIOBase。特别是,write()方法不再进行部分写入。

  • bpo-22115:在 tkinter.Variable 类中添加了 trace_add,trace_remove 和 trace_info 方法。它们替换了使用过时的 Tcl 命令的旧方法 trace_variable,trace,trace_vdelete 和 trace_vinfo,并且可能在以后的 Tcl 版本中不起作用。修复了旧的跟踪方法:模式错误的 trace_vdelete()不再break跟踪,trace_vinfo()现在始终返回字符串对列表,以“ u”模式进行跟踪现在有效。

  • bpo-26243:现在,只有 zlib.compress()的 level 参数是关键字参数。第一个参数是仅位置的。

  • bpo-27038:将 DirEntry 类型公开为 os.DirEntry。 Jelle Zijlstra 的代码补丁。

  • bpo-27186:更新 os.fspath()/ PyOS_FSPath()以检查__fspath __()的返回值是 str 还是字节。

  • bpo-18726:json 模块中的 dump(),dumps(),load()和 load()函数以及 JSONEncoder 和 JSONDecoder 类构造函数的所有可选参数现在仅是关键字。

  • bpo-27319:ttk.TreeView 的方法 selection_set(),selection_add(),selection_remove()和 selection_toggle()现在允许将多个项目作为多个参数传递,而不是将它们作为 Tuples 传递。不推荐使用的无参数调用带有参数的 selection()方法的Function。

  • bpo-27079:修复了 curses.ascii 函数的 isblank(),iscntrl()和 ispunct()的问题。

  • bpo-27294:现在将 Tkinter 事件对象的 repr 中的数字状态表示为已知标志的组合。

  • bpo-27177:re 模块中的 match 对象现在支持类似索引的对象作为组索引。基于 Jeroen Demeyer 和 Xiang Zhang 的补丁。

  • bpo-26754:某些函数(compile()等)接受了编码为整数可迭代的文件名参数。现在只接受字符串和类似字节的对象。

  • bpo-26536:socket.ioctl 现在支持 SIO_LOOPBACK_FAST_PATH。 Daniel Stokes 修补程序。

  • bpo-27048:当环境变量包含非 ASCII 字符时,防止 distutils 在 Windows 上失败

  • bpo-27330:修复了 ctypes 模块中可能的泄漏。

  • bpo-27238:删除了turtle 模块中的裸露物品。 Jelle Zijlstra 的原始补丁。

  • bpo-27122:当在由 contextlibManagement 的上下文中引发异常时,ExitStack()和其中一个退出堆栈生成器捕获并引发链中的异常,退出时不要重新引发原始异常,让新的链接异常pass。这避免了 issue25782 中描述的 PEP 479错误。

Security

  • bpo-27278:在 Linux 上使用 getrandom()修复 os.urandom()实现。将大小截断为 INT_MAX 并循环,直到我们收集到足够的随机字节为止,而不是直接将 Py_ssize_t 强制转换为 int。

Library

  • bpo-16864:sqlite3.Cursor.lastrowid 现在支持 REPLACE 语句。 Alex LordThorsen 的最初补丁。

  • bpo-26386:修复了带有项目 ID 包含空格的 ttk.TreeView 选择操作。

  • bpo-8637:尊重 env var MANPAGER 设置的寻呼机(优先于 env var PAGER 设置的寻呼机)。

Security

  • bpo-22636:避免使用 ctypes.util.find_library()进行 Shell 注入问题。

Library

  • bpo-16182:修复“ readline”模块中的各种Function以使用语言环境编码,并修复 get_begidx()和 get_endidx()以返回代码点索引。

  • bpo-27392:添加 loop.connect_accepted_socket()。吉姆·富尔顿的补丁。

IDLE

  • bpo-27477:IDLE 搜索对话框现在使用 ttk 小部件。

  • bpo-27173:将“ IDLE Modern Unix”添加到内置密钥集中。使默认密钥集取决于平台。将更改的测试添加到 config 模块。

  • bpo-27452:使命令行“ idle-test> python test_help.py”起作用。当在文件目录中启动 python 时,__file_是相对的。

  • bpo-27452:将行计数器和 crc 添加到 IDLE configHandler 测试转储中。

  • bpo-27380:IDLE:使用基本的“查询”对话框和 ttk 小部件添加 query.py。模块具有子类 SectionName,ModuleName 和 HelpSource,这些子类用于pass configdialog 和 file => Load Module 从用户那里获取信息。每个子类都有自己的有效性检查。使用 ModuleName 允许用户编辑错误的模块名称,而不必重新开始。添加测试并删除合并到新文件中的两个文件。

  • bpo-27372:Test_idle 不再更改语言环境。

  • bpo-27365:允许 IDLE NEWS.txt 中的非 ASCII 字符用作贡献者名称。

  • bpo-27245:IDLE:干净删除自定义主题和按键绑定。以前,从控制台或pass导入启动 IDLE 时,会发出一系列警告。 Serhiy Storchaka 修补程序。

  • bpo-24137:在禁用 tkinter 默认 root 的情况下运行 IDLE,test_idle 和 htest。修复由于此限制而失败的代码和测试。修复 htest,以免创建第二个冗余的 root 和 mainloop。

  • bpo-27310:修复了由于残留导入而导致 IDLE.app 无法在 OS X 上启动的问题。

C API

  • bpo-26754:PyUnicode_FSDecoder()接受了编码为整数可迭代的文件名参数。现在只接受字符串和类似字节的对象。

Build

  • bpo-28066:修复了在源代码树之外进行构建时在生成目录中搜索生成的包含文件的逻辑。

  • bpo-27442:在 sysconfig.get_config_vars()中以'ANDROID_API_LEVEL'公开针对 python 构建的 Android API 级别。

  • bpo-27434:运行在 PATH 中的交叉构建的解释器现在必须与要构建的源具有相同的Function版本(例如 3.6)。

  • bpo-26930:更新 Windows 版本以使用 OpenSSL 1.0.2h。

  • bpo-23968:将平台目录从 plat-$(MACHDEP)重命名为 plat-$(PLATFORM_TRIPLET)。将配置目录(LIBPL)从 config-$(LDVERSION)重命名为 config-$(LDVERSION)-$(PLATFORM_TRIPLET)。将特定于平台的_sysconfigdata 模块安装到平台目录中,并将其重命名为包含 ABIFLAGS。

  • 不要对 GNU/Hurd 使用大文件支持。

Tools/Demos

  • bpo-27332:修复了由 Argument Clinic 生成的模块级函数的第一个参数的类型。 Petr Viktorin 修补程序。

  • bpo-27418:修复了 Tools/importbench/importbench.py。

Documentation

  • bpo-19489:将搜索框从侧边栏移动到每个页面的页眉和页脚。由 Ammar Askar 修补。

  • bpo-27285:更新文档以反映pyvenv的弃用,并规范化“虚拟环境”一词。史蒂夫·皮尔西(Steve Piercy)的补丁。

Tests

  • bpo-27027:添加了 test.support.is_android,当它是 Android 版本时为 True。

Python 3.6.0 alpha 2

*发布日期:2016-06-13 *

核心和内建函数

  • bpo-27095:简化了 MAKE_FUNCTION 并删除了 MAKE_CLOSURE 操作码。 Demur Rumed 的补丁。

  • bpo-27190:如果 sqlite3 早于 3.3.1,则引发 NotSupportedError。 Dave Sawyer 的补丁。

  • bpo-27286:修复了编译 BUILD_MAP_UNPACK_WITH_CALL 操作码的问题。具有广义拆包(PEP 448)和关键字名称冲突的调用函数可能会导致未定义的行为。

  • bpo-27140:添加了 BUILD_CONST_KEY_MAP 操作码。

  • bpo-27186:将对 os.PathLike 对象的支持添加到 open()( PEP 519的一部分)。

  • bpo-27066:如果自定义打开器(对于 open())返回负数而未设置异常,则修复了 SystemError。

  • bpo-26983:float()现在始终返回精确 float 的实例。如果__float_返回 float 的严格子类的实例,则发出弃用警告。在将来的 Python 版本中,这可能是一个错误。

  • bpo-27097:由于优化了指令解码,Python 解释器现在的速度提高了约 7%。基于 Demur Rumed 的补丁。

  • bpo-26647:Python 解释器现在使用 16 位字代码而不是字节码。 Demur Rumed 的补丁。

  • bpo-23275:允许在圆括号中分配给空的目标列表:()=可迭代。

  • bpo-27243:更新__aiter_协议:应该直接返回异步迭代器,而不是返回解析为异步迭代器的 awaitable。前者将触发 PendingDeprecationWarning。

Library

  • Comments 掉 API 上公开的套接字(SO_REUSEPORT)和 posix(O_SHLOCK,O_EXLOCK)常量,这些常量未在 GNU/Hurd 上实现。它们无论如何都不会在运行时工作。

  • bpo-27025:Tkinter 小部件的生成名称现在更有意义和可识别。

  • bpo-25455:修复了递归 ElementTree.Element 和 functools.partial 对象的崩溃。

  • bpo-27294:改进了 Tkinter 事件对象的 repr。

  • bpo-20508:改进 IPv{4,6} Network .__ getitem_的异常消息。 Gareth Rees 的补丁。

Security

  • bpo-26556:将 expat 更新为 2.1.1,修复了 CVE-2015-1283.

  • 修复 smtplib 中的 TLS 剥离漏洞 CVE-2016-0772. Oststrom 团队报道。

Library

  • bpo-21386:实现缺少的 IPv4Address.is_global 属性。自 07a5610bae9d 起已记录在案。 Roger Luethi 的最初补丁。

  • bpo-27029:从 ZipFile.open()中删除了对通用换行模式的弃用支持。

  • bpo-27030:由正则表达式中的'\'和 ASCII 字母组成的未知转义符现在是错误。现在,re.LOCALE 标志只能与字节模式一起使用。

  • bpo-27186:向 DirEntry( PEP 519的一部分)添加 os.PathLike 支持。 Jelle Zijlstra 的最初补丁。

  • bpo-20900:distutils register 命令现在可以正确解码 HTTP 响应。最初的补丁来自 ingrid。

  • bpo-27186:将 os.PathLike 支持添加到 pathlib,删除其临时状态(PEP 519 的一部分)。 Dusty Phillips 的最初补丁。

  • bpo-27186:将对 os.PathLike 对象的支持添加到 os.fsencode()和 os.fsdecode()( PEP 519的一部分)。

  • bpo-27186:介绍 os.PathLike 和 os.fspath()( PEP 519的一部分)。

  • 新版本的 Typeing.py 提供了一些新的类和Function:存根之外的@overload,可逆,DefaultDict,文本,ContextManager,Type [],NewType(),TYPE_CHECKING 和许多错误修复(请注意,一些新Function是在 mypy 或其他静态分析器中尚未实现)。还添加了 PEP 492的类(Awaitable,AsyncIterable,AsyncIterator)(实际上,它们已进入 3.5.1,但从未提及)。

  • bpo-25738:阻止 http.server.BaseHTTPRequestHandler.send_error()发送 205 重置内容的消息正文。另外,不要在没有正文的响应中发送 ContentHeaders 字段。 Susumu Koshiba 修补程序。

  • bpo-21313:修复 sys.version 包含截断的构建信息时允许的“平台”模块。

Security

  • bpo-26839:在 Linux 上,如果尚未初始化 urandom 熵池,则os.urandom()现在用GRND_NONBLOCK调用getrandom()以退回/dev/urandom。由 Colm Buckley 编写的补丁。

Library

  • bpo-23883:向__all_添加了缺少的 API,以匹配以下模块的文档化 API:cgi,邮箱,mimetypes,plistlib 和 smtpd。 JacekKołodziej 的补丁。

  • bpo-27164:在 zlib 模块中,允许使用 sched 义的 zdict 解压缩原始 Deflate 流。基于张翔的补丁。

  • bpo-24291:修复 wsgiref.simple_server.WSGIRequestHandler 以将数据完全写入 Client 端。以前,它可以进行部分写入和截断数据。此外,wsgiref.handler.ServerHandler 现在可以处理 stdout 进行部分写入,但是已弃用此方法。

  • bpo-21272:使用_sysconfigdata.py 初始化 distutils.sysconfig。

  • bpo-19611inspect现在报告编译器为理解和生成器表达式范围生成的隐式.0参数,就好像它们是称为implicit0的仅位置参数一样。 Jelle Zijlstra 修补程序。

  • bpo-26809:将__all__添加到string。伊曼纽尔·巴里(Emanuel Barry)的补丁。

  • bpo-26373:现在,在更多/所有情况下调用.communicate()之前,子进程死亡时,subprocess.Popen.communicate 现在可以正确忽略 BrokenPipeError。

  • signal,套接字和 ssl 模块 IntEnum 常量名称查找现在为具有多个名称的值返回一致的名称。例如:signal.Signals(6)现在将自身称为 signal.SIGALRM,而不是在解释器和 hash.SIGIOT 之间进行切换,这是基于解释器的哈希随机种子。

  • bpo-27167:当子进程由于 signal 而死亡时,请澄清 subprocess.CalledProcessError 错误消息文本。

  • bpo-25931:不要在不支持 os.fork()的 Windows 等平台上定义 socketserver.Forking *名称。

  • bpo-21776:distutils.upload 现在可以正确处理 HTTPError。 Claudiu Popa 的最初补丁。

  • bpo-26526:使用简单的 DFA 验证器替换解析器模块中的自定义解析树验证。

  • bpo-27114:修复 SSLContext._load_windows_store_certs 失败,并出现 PermissionError

  • bpo-18383:在使用 filterwarnings 和 simplefilter 时,避免创建重复的过滤器。基于 Alex Shkop 的补丁。

  • bpo-23026:winreg.QueryValueEx()现在返回 REG_QWORD 类型的整数。

  • bpo-26741:subprocess.Popen 析构函数现在会在子进程仍在运行时发出 ResourceWarning 警告。

  • bpo-27056:优化 pickle.load()和 pickle.loads()的速度提高了 10%,以反序列化许多小对象。

  • bpo-21271:reset_mock 调用中仅使用新关键字的参数。

IDLE

  • bpo-5124:粘贴了所选文本的粘贴现在替换 X11 上的选择。这与粘贴在 Windows,Mac,大多数现代 Linux 应用程序和 ttk 小部件上的工作方式匹配。 Serhiy Storchaka 的原始补丁。

  • bpo-24750:将 IDLE 中的所有滚动条切换为 ttk 版本。在需要的地方,添加最少的测试以涵盖更改。

  • bpo-24759:IDLE 需要 tk 8.5 和可用性 ttk 小部件。现在删除不需要的 tk 版本测试和旧版本的代码。添加 IDLE 语法着色器测试。

  • bpo-27239:idlelib.macosx.isXyzTk 函数根据需要初始化。

  • bpo-27262:将启用上下文菜单的 Aqua 取消绑定代码移至 macosx。

  • bpo-24759:在 idlelib.idle_test .__ init_中明确说明该目录是 test.test_idle 的私有实现,也是维护人员的工具。

  • bpo-27196:运行 IDLE 测试时停止“ ThemeChanged”警告。在其他警告在#20567 中被取消后,这些问题仍然存在。将 Serhiy Storchaka 的 update_idletasks 解决方案应用于四个测试文件。将此其他建议记录在 idle_test/README.txt 中

  • bpo-20567:修改 idle_test/README.txt,其中包含有关避免测试中出现 tk 警告消息的建议。将建议应用于几个 IDLE 测试。

  • bpo-24225:使用新文件名和事件处理程序更新 idlelib/README.txt。

  • bpo-27156:删除 IDLE 不使用的过时代码。

  • bpo-27117:使着色器 htest 和 turtledemo 与深色主题配合使用。将用于配置文本小部件颜色的代码移动到新Function。

  • bpo-24225:重命名许多idlelib/*.pyidle_test/test_*.py文件。当旧名称引用模块而不是模块所包含的类时,请编辑文件以将旧名称替换为新名称。有关更多信息,请参阅“ 3.6 新增Function”中的“问题和 IDLE”部分。

  • bpo-26673:当 tk 报告字体大小为 0 时,更改为大小 10.在 Linux 上,此类字体阻止打开配置对话框。

  • bpo-21939:添加对 IDLE 渗滤器的测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-21676:添加 IDLE 替换对话框的测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-18410:为 IDLE 的搜索对话框添加测试。 WestleyMartínez 的原始补丁。

  • bpo-21703:为撤消委派者添加测试。主要由 Saimadhav Heblikar 修补。

  • bpo-27044:添加 ConfigDialog.remove_var_callbacks 以停止内存泄漏。

  • bpo-23977:向 test_delegator 添加更多 assert。

Documentation

  • bpo-16484:将默认的 PYTHONDOCS URL 更改为“ https:”,然后将结果链接固定为小写。 Sean Rodman 的补丁,Kaushik Nadikuditi 的测试。

  • bpo-24136:记录新的 PEP 448解包语法 3.5.

  • bpo-22558:将其余文档链接添加到 Python 编码模块的源代码。 Yoni Lavi 修补程序。

Tests

  • bpo-25285:现在,当使用-j1 命令行选项时,regrtest 使用子进程:每个测试文件都在新的子进程中运行。以前,-j1 选项被忽略。

  • bpo-25285:现在,默认情况下 Tools/buildbot/test.bat 脚本使用-j1 在新的子进程中运行每个测试文件。

Windows

  • bpo-27064:py.exe 启动器现在默认为 Python3.与启动器交互使用时,Windows 启动器py.exe不再默认使用已安装的 Python 2 版本而不是 Python 3.

Build

  • bpo-27229:修复了树内构建的交叉编译 pgen 规则。 Xavier de Gaye 的补丁。

  • bpo-26930:更新 OS X 10.5 仅 32 位安装程序以构建并与 OpenSSL 1.0.2h 链接。

Windows

C API

  • bpo-27186:添加 PyOS_FSPath()函数( PEP 519的一部分)。

  • bpo-26282:PyArg_ParseTupleAndKeywords()现在支持仅位置参数。

Tools/Demos

  • bpo-26282:Argument Clinic 现在在同一函数中支持仅位置和关键字参数。

Python 3.6.0 alpha 1

*发布日期:2016-05-16 *

核心和内建函数

  • bpo-20041:固定 frame.f_trace 设置为“无”时发生 TypeError。 Xavier de Gaye 的补丁。

  • bpo-26168:修复了使用“ N”格式单位的 Py_BuildValue()失败时可能发生的刷新。

  • bpo-26991:在创建带 Comments 的函数时修复可能的刷新。

  • bpo-27039:固定的 bytearray.remove()值大于 127.基于 Joe Jevnik 的补丁。

  • bpo-23640:int.from_bytes()不再绕过子类的构造函数。

  • bpo-27005:针对精确浮点数优化了 float.fromhex()类方法。现在快了 2 倍。

  • bpo-18531:dict 子类型的单个 var-keyword 参数毫不费力地传递给 C 定义的函数。现在将其转换为精确的字典。

  • bpo-26811:gc.get_objects()不再包含带有 NULL 指针的损坏的 Tuples。

  • bpo-20120:使用 RawConfigParser 进行.pypirc 解析,删除对插入到 Python 3 中无意添加的插值的支持。行为不再对.pypirc 文件进行任何插值,在 Python 2.7 和 Setuptools 19.0 中匹配行为。

  • bpo-26249PyMem_Malloc()域(PYMEM_DOMAIN_MEM)的存储Function现在使用pymalloc allocator而不是系统malloc()。现在,不持有 GIL 的情况下调用PyMem_Malloc()的应用程序可能会崩溃:使用PYTHONMALLOC=debug环境变量来验证应用程序中内存分配器的使用。

  • bpo-26802:仅像func(*tuple)一样使用拆包来优化函数调用(没有其他位置参数,没有关键字):避免复制 Tuples。 Joe Jevnik 编写的补丁。

  • bpo-26659:使内置切片类型支持循环收集。

  • bpo-26718:super .__ init_如果多次调用,将不再泄漏内存。注意:不支持直接调用 super .__ init__!

  • bpo-27138:修复 FileFinder.find_spec()的文档 Comments。

  • bpo-27147:在 importlib 文档中提及 PEP 420

  • bpo-25339:在为 stdin 和 stdout 设置错误处理程序时,PYTHONIOENCODING 现在具有优先于语言环境的权限。

  • bpo-26494:修复了迭代耗尽的迭代器时的崩溃。受影响的类是通用序列迭代器,str,字节,字节数组,列表,Tuples,集合,frozenset,dict,OrderedDict,对应视图和 os.scandir()迭代器的迭代器。

  • bpo-26574:优化bytes.replace(b'', b'.')bytearray.replace(b'', b'.')。 Josh Snider 编写的补丁。

  • bpo-26581:如果在 Python 源代码文件中的一行上多次指定了编码 cookie,则仅考虑第一个。

  • bpo-19711:添加用于重新加载名称空间包的测试。

  • bpo-21099:将适用的 importlib 测试切换为使用 PEP 451 API。

  • bpo-26563:如果在不保存 GIL 的情况下调用PyMem_Malloc()系列的函数,则 Python 内存分配器上的调试钩子会引发致命错误。

  • bpo-26564:发生错误时,Python 内存分配器上的调试钩子现在使用tracemalloc模块获取分配内存块的回溯。

  • bpo-26558:现在,Python 内存分配器PyObject_Malloc()上的调试钩子可以检测何时调用函数而无需保存 GIL。

  • bpo-26516:添加 PYTHONMALLOC环境变量以设置 Python 内存分配器和/或安装调试钩子。

  • bpo-26516:现在也可以在以发布模式编译的 Python 上使用PyMem_SetupDebugHooks()函数。

  • bpo-26516 PYTHONMALLOCSTATS环境变量现在也可以在以发布模式编译的 Python 上使用。如果设置为空字符串,则现在无效。

  • bpo-26516:在调试模式下,当配置了不带 pymalloc 的 Python 时,调试钩子现在也安装在 Python 内存分配器上。

  • bpo-26464:当字符串为 ASCII 且第一次替换将删除字符时修复 str.translate(),但下一次替换将使用非 ASCII 字符或长度超过 1 个字符的字符串。 Python 3.5.0 中引入的回归。

  • bpo-22836:即使格式化它们会产生次要错误,也要确保来自 PyErr_Display()和 PyErr_WriteUnraisable()的异常报告是合理的。这会影响 sys .__ excepthook __()以及__del __()引发异常时生成的报告。

  • bpo-26302:纠正行为以拒绝逗号作为 cookie 名称的合法字符。

  • bpo-26136:当生成器将 StopIteration 从 PendingDeprecationWarning 提升到 DeprecationWarning 时,升级警告。由 Anish Shah 修补。

  • bpo-26204:编译器现在将忽略所有常量语句:字节,str,int,float,complex,名称常量(None,False,True),Ellipsis号和 ast.Constant;不仅是 str 和 int。例如,现在在def f(): 1.0中忽略1.0

  • bpo-4806:在函数调用中使用星号(*)拆包时,避免掩盖原始 TypeError 异常。基于 HagenFürstenau 和 Daniel Urban 的补丁。

  • bpo-26146:添加一种新的 AST 节点:ast.Constant。外部 AST 优化器可以使用它,但是编译器不会直接发出此类节点。

  • bpo-23601:使用 Python 的小对象分配器加快 dict 键对象的分配。 (由朱利安·泰勒(Julian Taylor)提供。)

  • bpo-18018:如果try在没有已知父程序包的情况下进行相对导入,则 Import 引发 ImportError 而不是 SystemError。

  • bpo-25843:在编译代码时,如果常量相等但类型不同,则不要合并常量。例如,现在已将f1, f2 = lambda: 1, lambda: 1.0正确编译为两个不同的函数:f1()返回1(int)和f2()返回1.0(float),即使11.0相等。

  • bpo-26107:代码对象的co_lnotab属性的格式更改为支持负行号增量。

  • bpo-26154:添加一个新的私有_PyThreadState_UncheckedGet()函数以获取当前的 Python 线程状态,但是如果它为 NULL,则不会发出致命错误。必须使用此新函数,而不是直接访问_PyThreadState_Current 变量。从 Python 3.5.1 开始,不再隐藏该变量以隐藏原子 C 类型的确切实现,以避免编译器问题。

  • bpo-25791:如果__package__!= __spec 。parent 或未定义__package_或__spec,则将引发 ImportWarning。

  • bpo-22995:[更新]由于在基于 Cython 的项目中观察到了回归,因此请 Comments 掉_PyObject_GetState()中的一种可腌制性测试。

  • bpo-25961:类型名称中不允许使用空字符。

  • bpo-25973:修复无效的 nonlocal 语句绑定以两个下划线开头的名称时的段错误。

  • bpo-22995:状态类型不是 list 或 dict 的子类并且没有实现任何与 pickle 相关的方法(reduce reduce_ex getnewargs getnewargs_ex_或__getstate)的扩展类型实例,将无法再被腌制。包括 memoryview。

  • bpo-20440:用特殊宏 Py_SETREF 大量替换不安全的属性设置代码。

  • bpo-25766:特殊方法__bytes __()现在可在 str 子类中使用。

  • bpo-25421:内置类型的__sizeof_方法现在使用动态基本大小。这使 sys.getsize()可以正确地使用已定义__slots_的子类。

  • bpo-25709:修复了就地字符串连接和 utf-8 缓存的问题。

  • bpo-5319:新的 Py_FinalizeEx()API,允许 Python 在刷新缓冲流失败时将退出状态设置为 120.

  • bpo-25485:telnetlib.Telnet 现在是上下文 Management 器。

  • bpo-24097:如果在__getattr_中释放了插槽名称,则修复了 object .__ reduce __()崩溃的问题。

  • bpo-24731:修复了使用特殊方法__bytes trunc_和__float_转换对象时将崩溃的问题,这些返回方法将 byte,int 和 float 的子类的实例返回到 byte,int 和 float 的子类。

  • bpo-25630:修复在接受文件系统路径的函数中的参数解析期间可能出现的段错误。

  • bpo-23564:修复了_posixsubprocess 内部的部分破坏的健全性检查,该检查关于如何将 fds_to_pass 传递给孩子。该错误没有实际影响,因为 subprocess.py 已经避免了它。

  • bpo-25388:修复了在处理带有空字节的无法解码的源代码时令牌生成器崩溃的问题。

  • bpo-25462:现在,在 OrderedDict 的 C 实现中的大多数操作中,密钥的哈希仅计算一次。

  • bpo-22995:__reduce_和__reduce_ex_的默认实现现在拒绝未定义__new_的内置类型。

  • bpo-24802:在将 int(),float(),compile(),exec()和 eval()传递给类似字节的对象时,避免缓冲区溢出。这些对象不一定以空字节终止,但是函数假定它们为空。

  • bpo-25555:修复了解析器和 AST:从 Python 对象编译 AST 时,填写“ arg”节点的 lineno 和 col_offset。

  • bpo-24726:修复了由直接调用 dict 方法导致突变的 OrderedDict 的 repr()中的崩溃和泄漏 NULL 的问题。

  • bpo-25449:现在,使用具有不稳定哈希值的键迭代 OrderedDict 会在 C 实现以及 Python 实现中引发 KeyError。

  • bpo-25395:修复了当高度嵌套的 OrderedDict 结构被垃圾回收时崩溃的问题。

  • bpo-25401:优化 bytes.fromhex()和 bytearray.fromhex():它们现在快了 2 到 3.5 倍。

  • bpo-25399:使用新的专用_PyBytesWriter API 优化 bytearray%args。现在,格式化速度提高了 2.5 到 5 倍。

  • bpo-25274:如果新的递归限制取决于当前递归深度,则 sys.setrecursionlimit()现在会引发 RecursionError。还要修改“低水位线”公式以使其单调。该标记用于确定何时重置线程状态的溢出标志。

  • bpo-24402:修复 sys.stdout.fileno()失败时,input()提示 Importing 重定向的 stdout 的问题。

  • bpo-25349:使用新的专用_PyBytesWriter API 优化字节%args。现在,格式化速度提高了 2 倍。

  • bpo-24806:禁止pass多重继承对不允许子类化的内置类型进行子类化。

  • bpo-25301:对于错误处理程序ignorereplacesurrogateescape,UTF-8 解码器的速度现在提高了 15 倍。

  • bpo-24848:修复了格式错误的数据的 UTF-7 解码中的许多错误。

  • bpo-25267:对于错误处理程序ignorereplacesurrogateescapesurrogatepass,UTF-8 编码器的速度现在提高了 75 倍。与 Serhiy Storchaka 共同编写的补丁。

  • bpo-25280:以详细(-v)模式发出的导入跟踪消息不再格式化两次。

  • bpo-25227:使用surrogateescape错误处理程序优化 ASCII 和 latin1 编码器:编码器的速度现在提高了 3 倍。 Serhiy Storchaka 编写的初始补丁。

  • bpo-25003:在 Solaris 11.3 或更高版本上,os.urandom()现在使用 getrandom()函数而不是 getentropy()函数。 getentropy()函数正在阻塞以生成非常好的质量熵,os.urandom()不需要这种高质量的熵。

  • bpo-9232:修改 Python 的语法,以允许在函数语句的参数列表中尾随逗号。例如,“ def f(*,a = 3,):pass”现在合法。 Mark Dickinson 的补丁。

  • bpo-24965:实施 PEP 498“Literals 字符串插值”。这使您可以将表达式嵌入 f 字符串中,然后在运行时将其转换为普通字符串。给定 x = 3,则 f'value ={}'=='value = 3'。埃里克·史密斯(Eric V.Smith)的补丁。

  • bpo-26478:修复在字典视图和 Tuples 中使用二进制运算符时的语义错误。

  • bpo-26171:修复 zipimporter.get_data()中可能的整数溢出和堆损坏。

  • bpo-25660:使用 readline 修复 REPL 中的 TAB 键行为。

  • bpo-26288:优化 PyLong_AsDouble。

  • bpo-26289:针对一位数的多头优化底价和模数除法。微基准测试显示提高了 2-2.5 倍。内置的“ divmod”Function现在也快了 10%。 (另请参见:bpo-26315)

  • bpo-25887:多次 await 协程对象时引发 RuntimeError。

Library

  • bpo-27057:修复了 Android 上的 os.set_inheritable(),ioctl()被 SELinux 阻止了,并因 EACCESS 而失败。该函数现在回退到 fcntl()。 MichałBednarski 撰写的补丁。

  • bpo-27014:使用 typing。py 修复无限递归。感谢 Kalle Tuure!

  • bpo-27031:在 Tkinter 小部件类 tk_menuBar()和 tk_bindForTraversal()中删除了伪方法。

  • bpo-14132:当目标仅具有查询字符串时,修复 urllib.request 重定向处理。 JánJanech 的原始修复程序。

  • bpo-17214:“ urllib.request”模块现在对在重定向目标 URL 中找到的非 ASCII 字节进行百分比编码。一些服务器使用非 ASCII 字节发送位置 Headers 字段,但是“ http.client”要求请求目标必须是 ASCII 编码的,否则会引发 UnicodeEncodeError。基于 Christian Heimes 的补丁。

  • bpo-27033:smtpd.SMTPChannel 和 smtpd.SMTPServer 构造函数的 encode_data 参数的默认值更改为 False。

  • bpo-27034:删除了弃用的类 asynchat.fifo。

  • bpo-26870:添加了 readline.set_auto_history(),可以阻止将条目自动添加到历史记录列表中。基于 Tyler Crompton 的补丁。

  • bpo-26039:zipfile.ZipFile.open()现在可用于将数据写入 ZIP 文件以及提取数据。 Thomas Kluyver 修补程序。

  • bpo-26892:urllib.request.HTTPHandler 中的 Honor debuglevel 标志。智轩颜贡献的补丁。

  • bpo-22274:在子流程模块中,即使未重定向 stdout,也允许将 stderr 重定向到 stdout。李晃晃的补丁。

  • bpo-26807:文件末尾的 readline 上的 mock_open'files'不再错误。来自 Yolanda Robla 的补丁。

  • bpo-25745:修复了 curses 面板析构函数中的 userptr 泄漏。

  • bpo-26977:删除了不必要的,并忽略了对 statistics.pvariance 中的平方和助手的调用。

  • bpo-26002:在 statistics.median 中使用二等分,而不是线性搜索。 Upendra Kuma 修补程序。

  • bpo-25974:在统计信息模块中使用新的 Decimal.as_integer_ratio()方法。 Stefan Krah 的补丁。

  • bpo-26996:如 PEP 506中所述添加机密模块。

  • bpo-26881:modulefinder 模块现在支持扩展的操作码参数。

  • bpo-23815:修复了与直接在_tkinter 和 curses.panel 模块中创建的类型的实例有关的崩溃。

  • bpo-17765:weakref.ref()不再静默忽略关键字参数。 Georg Brandl 的补丁。

  • bpo-26873:xmlrpc 现在在不受支持的类型标记上引发 ResponseError,而不是静默返回错误结果。

  • bpo-26915:现在,集合 ABC 中的__contains_方法会在检查相等性之前检查身份。这样可以更好地匹配具体类的行为,允许对 NaN 进行明智的处理,并使对容器不变式的推理更加容易。

  • bpo-26711:修复了 plistlib.Data 与其他类型的比较。

  • bpo-24114:修复ctypes.util中的未初始化变量。仅当 ctypes 实现搜索crle程序时,该错误才出现在 SunOS 上。张翔的补丁。 Kees Bos 在 SunOS 上进行了测试。

  • bpo-26864:在 urllib.request 中,将对 no_proxy 进行检查的代理绕过主机更改为不区分大小写,并且不匹配碰巧以绕过主机名作为后缀的不相关主机名。张翔的补丁。

  • bpo-24902:在 http.server 启动时打印服务器 URL。 Felix Kaiser 的最初补丁。

  • bpo-25788:fileinput.hook_encoded()现在支持传递“打开”的“错误”参数。 Joseph Hackman 的原始补丁。

  • bpo-26634:recursive_repr()现在设置包装器的__qualname__。张翔的补丁。

  • bpo-26804:urllib.request 将优先使用小写的代理环境变量,而不是 UPPER_CASE 或 Mixed_Case 变量。补丁由 Hans-Peter Jansen 提供。

  • bpo-26837:assertSequenceEqual()现在可以正确输出非字符串化的不同项目(例如-b 模式中的字节)。这会影响 assertListEqual()和 assertTupleEqual()。

  • bpo-26041:从 platform.dist()和 platform.linux_distribution()的弃用消息中删除“将在 Python 3.7 中删除”。 Kumaripaba Miyurusara Athukorala 修补程序。

  • bpo-26822:itemgetter,attrgetter 和 methodcaller 对象不再静默忽略关键字参数。

  • bpo-26733:现在,拆卸类将拆卸类和静态方法。张翔的补丁。

  • bpo-26801:修复shutil.get_terminal_size()中的错误处理,捕获AttributeError而不是NameError。伊曼纽尔·巴里(Emanuel Barry)编写的补丁。

  • bpo-24838:tarfile 的 ustar 和 gnu 格式现在可以正确计算 utf-8 等多字节字符编码的名称和链接字段限制。

Security

  • bpo-26657:在 Windows 上使用 http.server 修复目录遍历漏洞。这修复了在 3.3.4rc1 和 3.4.0rc1 中引入的回归。基于 Philipp Hagemeister 的补丁。

Library

  • bpo-26717:停止使用 UTF-8 编码拉丁文 1 化的 WSGI 路径。 Anthony Sottile 修补程序。

  • bpo-26782:将 STARTUPINFO 添加到子进程。__all_在 Windows 上。

  • bpo-26404:将上下文 Management 器添加到套接字服务器。 Aviv Palivoda 修补程序。

  • bpo-26735:读取超过 1,024 字节时,在 Solaris 11.3 和更高版本上修复os.urandom():多次调用getrandom(),每次调用限制为 1024 字节。

  • bpo-26585:消除 http.server._quote_html()并使用 html.escape(quote = False)。张翔的补丁。

  • bpo-26685:如果关闭套接字失败,则引发 OSError。

  • bpo-16329:将.webm 添加到 mimetypes.types_map。 Giampaolo Rodola 发布的补丁。

  • bpo-13952:将.csv 添加到 mimetypes.types_map。 Geoff Wilson 的补丁。

  • bpo-26587:站点模块现在允许.pth 文件指定要添加到 sys.path 的文件(例如 zip 文件)。

  • bpo-25609:介绍 contextlib.AbstractContextManager 并键入.ContextManager。

  • bpo-26709:修复了 Y2038 加载二进制 PLists 的问题。

  • bpo-23735:pass安装我们自己的 SIGWINCH 处理程序来处理使用 Readline 6.3 调整终端大小的操作。由 Eric Price 修补。

  • bpo-25951:更改 SSLSocket.sendall()以返回 None,这是针对普通套接字对象明确记录的。 Aviv Palivoda 修补程序。

  • bpo-26586:在 http.server 中,如果要解析的头字段太多,则响应“ 413 请求头字段太大”,而不是终止连接并引发未处理的异常。张翔的补丁。

  • bpo-26676:将缺少的 XMLPullParser 添加到 ElementTree。all

  • bpo-22854:更改 BufferedReader.writable()和 BufferedWriter.visible()以始终返回 False。

  • bpo-26492:array.array 的精疲力尽的迭代器现在符合其他可变序列的迭代器的行为:即使扩展了迭代数组,它也会保持精疲力尽。

  • bpo-26641:doctest.DocFileTest 和 doctest.testfile()现在为 package 参数支持软件包(模块分为多个目录)。

  • bpo-25195:修复了 ock.MagicMock 中的回归。 Call 是 Tuples 的子类(changeset 3603bae63c13 仅适用于类),因此我们需要自己实现__ne_。 Andrew Plummer 的补丁。

  • bpo-26644:将负长度传递给 SSLSocket.recv()或 read()时,引发 ValueError 而不是 SystemError。

  • bpo-23804:修复 SSL recv(0)和 read(0)方法,以返回零字节,而不是返回 1024.

  • bpo-26616:修复了 datetime.astimezone()方法中的错误。

  • bpo-26637:如果在 Python 关闭过程中try使用import()但已经清除sys.path(设置为None),则importlib模块现在发出ImportError而不是TypeError

  • bpo-21925warnings.formatwarning()现在在调用linecache.getline()tracemalloc.get_object_traceback()时能够捕获异常,以便能够记录在 Python 关闭过程中后期发出的ResourceWarning

  • bpo-23848:在 Windows 上,faulthandler.enable()现在还安装了一个异常处理程序,以转储所有 Windows 异常上所有 Python 线程的回溯,而不仅仅是在 UNIXsignal(SIGSEGV,SIGFPE,SIGABRT)上。

  • bpo-26530:添加 C 函数_PyTraceMalloc_Track()_PyTraceMalloc_Untrack()以使用tracemalloc模块跟踪存储块。添加_PyTraceMalloc_GetTraceback()以获取对象的回溯。

  • bpo-26588:_tracemalloc 现在支持跟踪多个地址空间(域)的内存分配。

  • bpo-24266:现在,在使用 Readline 7 进行编译时,在 Readline 历史记录搜索期间按 Ctrl C 可以取消搜索模式。

  • bpo-26590:为_socket.socket 类型实现安全的终结器。现在,它释放 GIL 以关闭套接字。

  • bpo-18787:现在,如果用户没有特权,则 spwd.getspnam()会引发 PermissionError。

  • bpo-26560:避免在 BaseHandler.start_response 中发生潜在的 ValueError。 Peter Inglesby 的最初补丁。

  • bpo-26567:添加新FunctionPyErr_ResourceWarning()函数以传递被破坏的对象。向warnings.WarningMessage添加* source *属性。添加 warnings._showwarnmsg(),它使用 tracemalloc 获取分配源对象的回溯。

Security

  • bpo-26313:如果 Windows 证书存储为空,则 ssl.py _load_windows_store_certs 失败。由 Baji 修补。

Library

  • bpo-26569:修复了pyclbr.readmodule()pyclbr.readmodule_ex()以支持导入程序包。

  • bpo-26499:说明 HTTPResponse.readline()和 read1()中剩余的 Content-Length。基于 Silent Ghost 的补丁。还要证明 HTTPResponse 现在支持这些方法。

  • bpo-25320:处理目录 unittest 发现正在扫描的套接字。 Victor van den Elzen 的补丁。

  • bpo-16181:cookieyear.http2time()现在返回空值,如果年份大于 datetime.MAXYEAR。

  • bpo-26513:修复 Windows Server 的平台模块检测

  • bpo-23718:固定解析时间,即 1 月 1 日之前的第 0 周。TamásBence Gedai 的原始补丁。

  • bpo-26323:将 Mock.assert_drawn()和 Mock.assert_drawn_once()方法添加到 unittest.mock。 Amit Saha 编写的补丁。

  • bpo-20589:现在在 Windows 上调用 Path.owner()和 Path.group()会引发 NotImplementedError 而不是 ImportError。

  • bpo-26177:修复了 Canvas 和 Scrollbar 小部件的 keys()方法。

  • bpo-15068:消除了文件 Importing 中过多的缓冲。现在不建议使用 bufsize 参数,并忽略它。

  • bpo-19475:在 datetime isoformat()方法中添加了一个可选参数 timespec,以选择时间分量的精度。

  • bpo-2202:修复 AbstractDigestAuthHandler.get_algorithm_impls 中的 UnboundLocalError。 Mathieu Dupuy 的最初补丁。

  • bpo-26167:将 copy.copy()和 copy.deepcopy()的开销降至最低。优化的复制和深度复制字节数组,未实现,切片,短列表,Tuples,字典,集合。

  • bpo-25718:固定的 Pickling 和复制具有 total 的 accumulate()迭代器为 None。

  • bpo-26475:使用(?x)标志修复了正则表达式的调试输出。

  • bpo-26482:允许 Pickling 递归出队。

  • bpo-26335:使 mmap.write()返回与其他写入方法一样写入的字节数。 Jakub Stasiak 修补程序。

  • bpo-26457:修复了finally结果前缀长度等于最大前缀长度时 IP 网络类中的 subnets()方法。基于张翔的补丁。

  • bpo-26385:如果 NamedTemporaryFile()中的内部 open()调用失败,则删除文件。沉默鬼的补丁。

  • bpo-26402:修复了 XML-RPCClient 端在服务器关闭持久连接时重试的问题。这是与 3.5.0a4 中新的 http.client.RemoteDisconnected 异常相关的回归。

  • bpo-25913:在 base64.a85decode()中,adobe = True 现在可以选择前导<~。 Swati Jaiswal 修补程序。

  • bpo-26186:删除 importlib.util.LazyLoader 中的无效类型检查。

  • bpo-26367:当指定level但未指定附带包时,importlib .__ import ()会引发 ImportError,如 Builtins . import __()。

  • bpo-26309:在“ socketserver”模块中,当 verify_request()返回 false 时,关闭请求(关闭连接的套接字)。 Aviv Palivoda 修补程序。

  • bpo-23430:更改 socketserver 模块以仅捕获从异常派生的请求处理程序中引发的异常(而不是 BaseException)。因此,SystemExit 和 KeyboardInterrupt 不再触发 handle_error()方法,并且现在将停止单线程服务器。

Security

  • bpo-25939:在 Windows 上,在 ssl.enum_certificates 中以只读方式打开证书存储。

Library

  • bpo-25995:os.walk()不再使用与树深度成比例的 FD。

  • bpo-25994:为 os.scandir()迭代器添加了 close()方法和上下文 Management 器协议的支持。

  • bpo-23992:multiprocessing:使 MapResult 在发生异常时不会快速失败。

  • bpo-26243:zlib.compress()的支持关键字参数。 Aviv Palivoda 修补程序。

  • bpo-26117:os.scandir()迭代器现在不仅可以在迭代完成时关闭文件 Descriptors,而且可以在由于错误而失败时关闭文件 Descriptors。

  • bpo-25949:现在仅在需要时才创建 OrderedDict 实例的__dict__。

  • bpo-25911:在 Windows 上的 os.walk()中恢复了对字节路径的支持。

  • bpo-26045:使用 http.client 发布非拉丁 1 字符串时,在错误消息中添加 UTF-8 建议。

  • bpo-26039:添加了 zipfile.ZipInfo.from_file()和 zipinfo.ZipInfo.is_dir()。 Thomas Kluyver 修补程序。

  • bpo-12923:即使有异常,也要重置 FancyURLopener 的重定向计数器。基于 Brian Brazil 和 Daniel Rocco 的补丁。

  • bpo-25945:修复了以错误状态释放 functools.partial 对象时导致的崩溃。修复了失败的 functools.partial 构造函数中的泄漏。现在,functools.partial 的“ args”和“ keywords”属性始终始终对应地 ImportingTuples 和 dict。

  • bpo-26202:copy.deepcopy()现在可以正确复制具有非原子属性的 range()对象。

  • bpo-23076:如果使用无效模式调用 Path.glob(),则会引发 ValueError。 Thomas Nyberg 修补程序。

  • bpo-19883:修复了 zipimport 中可能出现的整数溢出的情况。

  • bpo-26227:在 Windows 上,套接字模块的 getnameinfo(),gethostbyaddr()和 gethostbyname_ex()函数现在从 ANSI 代码页而不是 UTF-8 解码主机名。

  • bpo-26099:现在,如果可以导入 sitecustomize 模块,但是 site 模块将错误写入 stderr,但是执行该模块会引发 ImportError。用户自定义的相同更改。

  • bpo-26147:xmlrpc 现在可用于使用非 UTF-8 编码无法编码的字符串。

  • bpo-25935:垃圾收集器现在使用 OrderedDict break引用循环。

  • bpo-16620:已修复 msilib.Directory.glob()中的 AttributeError。

  • bpo-26013:增加了与旧 Python 3 版本(3.4.3 及更低版本)中创建的协议 2pickle 的兼容性。

  • bpo-26129:已弃用 grp.getgrgid()中的非整数。

  • bpo-25850:对于 64 位 Windows,默认情况下使用交叉编译。

  • bpo-25822:将文档字符串添加到 urllib.parse 结果的字段中。补丁由 Swati Jaiswal 提供。

  • bpo-22642:将跟踪模块选项解析机制转换为 argparse。补丁由 SilentGhost 提供。

  • bpo-24705:修复 sysconfig._parse_makefile 不扩展${} var 出现在$()vars 之前的情况。

  • bpo-26069:删除跟踪模块中已弃用的 api。

  • bpo-22138:修补 Descriptors 时修复了 mock.patch 行为。修补后恢复原始值。补丁由 Sean McCully 提供。

  • bpo-25672:在安全的情况下,请在 ssl 模块中启用 SSL_MODE_RELEASE_BUFFERS 模式选项。

  • bpo-26012:不要遍历 pathlib.Path。[r] glob()中**模式的符号链接。

  • bpo-24120:使用 pathlib.Path。[r] glob()遍历树时,请忽略 PermissionError。 Ulrich Petri 修补程序。

  • bpo-21815:在 imap 响应的数据部分中接受]字符,以便处理由服务器(例如 gmail)接受并产生的带有方括号的标志。

  • bpo-25447:如果 fileinput 没有缓冲区属性,则它按原样使用 sys.stdin(恢复向后兼容性)。

  • bpo-25971:优化了将浮点数乘以 2 倍并将小数乘以 3 倍来创建分数。

  • bpo-25802:不推荐使用的文档 importlib.abc.Loader.load_module()的其余实现。

  • bpo-25928:添加 Decimal.as_integer_ratio()。

  • bpo-25447:现在,复制 lru_cache()包装器对象始终有效,而与包装对象的类型无关(pass返回原始对象不变)。

  • bpo-25768:让 compileall 返回布尔值中的函数而不是 ints,并为返回值添加适当的文档和测试。

  • bpo-24103:修复了在 ElementTree.XMLPullParser 中免费使用后的可能。

  • bpo-25860:发生错误时,os.fwalk()不再跳过其余目录。 Samson Lee 的原始补丁。

  • bpo-25914:固定和简化的 OrderedDict .__ sizeof__。

  • bpo-25869:优化了深度复制 ElementTree;现在快了 20 倍。

  • bpo-25873:优化了 ElementTree 的迭代。现在,迭代元素 Element.iter()的速度提高了 40%,而迭代文本 Element.itertext()的速度现在提高了 2.5 倍。

  • bpo-25902:修复了 ElementTree 迭代中的各种引用计数问题。

  • bpo-22227:使用生成器重新实现了 TarFile 迭代器。该实现比使用类更简单。

  • bpo-25638:优化的 ElementTree.iterparse();现在快了 2 倍。优化的 ElementTree 解析;现在快了 10%。

  • bpo-25761:改进了检测损坏的 pickle 数据中的错误的能力。

  • bpo-25717:恢复打开文件时容许大多数 fstat()错误的以前的行为。这是 3.5a1 中的回归,在特殊情况下阻止了匿名临时文件的工作。

  • bpo-24903:修复在指定“ -d”时 compileall 接受的参数数量的回归。对参数数量的检查已被完全删除,因为它始终无法正常工作。

  • bpo-25764:在子流程模块中,保留使用 preexec_fn 时 fork()故障引起的任何异常。

  • bpo-25771:在未指定“包”但有必要的情况下,为 importlib.util.resolve_name()调整异常消息。

  • bpo-6478:_strptime 的 regexp 缓存现在在pass time.tzset()更改时区后被重置。

  • bpo-14285:使用“ python -m 软件包”选项执行软件包时,软件包初始化失败,现在报告正确的回溯。现在,“ runpy”模块允许将程序包初始化中的异常传递回调用者,而不是引发 ImportError。

  • bpo-19771:同样在 runpy 和“ -m”选项中,如果甚至无法初始化该软件包(例如由于错误的*.pyc文件),则忽略不相关的消息“…是一个软件包,无法直接执行”。

  • bpo-25177:解决了非常小和非常大的数字均值的问题。副作用是,statistics.mean 和 statistics.variance 应该明显更快。

  • bpo-25718:固定复制状态为布尔值的对象为 false。

  • bpo-10131:修复了迷你文档的深度复制。基于 Marian Ganisin 的补丁。

  • bpo-7990:ElementTree.Element 上的 dir()现在列出了属性:“标签”,“文本”,“尾巴”和“ attrib”。 Santoso Wijaya 的原始补丁。

  • bpo-25725:修复了当取消对包括 Tuples 指令的无效数据进行分析时,在 pickle.loads()中的参考泄漏。

  • bpo-25663:在 Readline 完成程序中,避免列出重复的全局名称,并在搜索内建函数之前搜索全局名称空间。

  • bpo-25688:修复了 ElementTree.iterparse()中的文件泄漏引发错误。

  • bpo-23914:修复了由取消选取器处理的腌制数据损坏引发的 SystemError。

  • bpo-25691:修复了删除 ElementTree.Element 属性时崩溃的问题。

  • bpo-25624:ZipFile 现在始终为目录条目写入 ZIP_STOREDHeaders。王鼎元的补丁。

  • bpo-25626:更改三个 zlib 函数以接受适合 Py_ssize_t 的大小,但在内部将这些大小限制为 UINT_MAX。这解决了 3.5 中的回归问题,其中 GzipFile.read()无法读取大于 2 或 4 GiB 的块。所做的更改会影响 zlib.Decompress.decompress()max_length 参数,zlib.decompress()bufsize 参数和 zlib.Decompress.flush()length 参数。

  • bpo-25583:当 OS 优先考虑诸如 EACCES 而不是 EEXIST 之类的错误时,避免 os.makedirs(exist_ok = True)引发的错误错误。

  • bpo-25593:在 asyncio 中更改 EventLoop.stop()的语义。

  • bpo-6973:当我们知道一个子进程。Popen 进程已死亡时,请不要让 send_signal(),terminate()或 kill()方法执行任何操作,因为它们可能表示不同的进程。

  • bpo-23883:在__all_中添加了缺少的 API,以匹配以下模块的文档化 API:calendar,csv,枚举,文件 Importing,ftplib,日志记录,optparse,tarfile,线程和 wave。还添加了一个 test.support.check__all __()助手。 JacekKołodziej,Mauro S. M. Rodrigues 和 Joel Taddei 的补丁。

  • bpo-25590:在 Readline 完成程序中,每个属性仅调用一次 getattr()。还可以使用 dir()列出但尚未在实例上创建的属性(例如属性和插槽)的完整名称。

  • bpo-25498:修复了pass包装 memoryview 垃圾收集 ctypes 对象时的崩溃问题。这是 3.5a1 中的回归。基于 Eryksun 的补丁。

  • bpo-25584:在 glob 模块的__all_列表中添加了“转义”。

  • bpo-25584:修复了以**开头的模式的递归 glob()。

  • bpo-25446:修复了 smtplib 的 AUTH LOGIN 支持中的回归问题。

  • bpo-18010:修复 pydoc Web 服务器的模块搜索Function,以处理导入程序包中的异常。

  • bpo-25554:在正则表达式分析中摆脱了循环引用。

  • bpo-18973:calendar 模块的命令行界面现在使用 argparse 而不是 optparse。

  • bpo-25510:如果 FileInput 是用二进制模式打开的,则 fileinput.FileInput.readline()现在在末尾返回 b''而不是''。伊藤良介的补丁。

  • bpo-25503:修复了属性的继承文档字符串的 inspect.getdoc()。 John Mark Vandenberg 的原始补丁。

  • bpo-25515:始终将 os.urandom 用作 uuid.uuid4 中的随机性源。

  • bpo-21827:对于最大的公共空格是最小的前导空格的子字符串的情况,修复了 textwrap.dedent()。基于 Robert Li 的补丁。

  • bpo-25447:现在可以复制和腌制 lru_cache()包装器对象(pass不变地返回原始对象)。

  • bpo-25390:键入:不要在 Union [str,Pattern]上崩溃。

  • bpo-25441:异步:关闭套接字时,从 rain()引发错误。

  • bpo-25410:清理并修复了 OrderedDict 的 C 实现中的小错误。

  • bpo-25411:pass更好地使用电子邮件包,改进了 SMTPHandler 中的 Unicode 支持。感谢用户 simon04 提供此补丁。

  • 将 imp 模块从 PendingDeprecationWarning 移到 DeprecationWarning。

  • bpo-25407:删除有关在 Python 3.6 中删除的 formatter 模块的说明。

  • bpo-25406:修复了 OrderedDict.move_to_end()的 C 实现中的一个错误,该错误在将多个项移至有序 dict 的开头后导致分段错误或在迭代中挂起。

  • bpo-25382:pickletools.dis()现在为 MEMOIZE 操作码输出隐式备忘录索引。

  • bpo-25357:将可选的换行参数添加到 binascii.b2a_base64()。 base64.b64encode()使用它来避免内存复制。

  • bpo-24164:需要使用关键字参数调用__new__的对象,现在可以使用比协议版本 4 更早的 pickle 协议进行腌制。

  • bpo-25364:zipfile 现在可以在禁用了构建的线程中使用。

  • bpo-25328:如果将 encode_data 和 enable_SMTPUTF8 都设置为 true,则 smtpd 的 SMTPChannel 现在可以正确引发 ValueError。

  • bpo-16099:RobotFileParser 现在支持抓取延迟和请求速率扩展。 Nikolay Bogoychev 的补丁。

  • bpo-25316:未安装 MSVC 时,distutils 引发 OSError 而不是 DistutilsPlatformError。

  • bpo-25380:pickletools.opcodes 中的 STACK_GLOBAL 操作码的固定协议。

  • bpo-23972:更新了异步数据报创建方法,该方法允许在绑定套接字之前设置好 reuseport 和 reuseaddr 套接字选项。如果 O/S 为“ posix”,则镜像现有的 asyncio create_server 方法的数据报套接字的 redirectaddr 选项默认为 True(除非平台为 Cygwin)。克里斯·劳斯(Chris Laws)的补丁。

  • bpo-25304:添加 asyncio.run_coroutine_threadsafe()。这使您可以将协程从另一个线程提交到循环中,并返回 current.futures.Future。文森特·米歇尔(Vincent Michel)。

  • bpo-25232:修复 CGIRequestHandler 以从第一个问号(?)而不是最后一个问号(URL)拆分查询。张翔的补丁。

  • bpo-24657:防止 CGIRequestHandler 在 URL 的查询部分中折叠斜杠,就像它是路径一样。张翔的补丁。

  • bpo-25287:如果不支持,请不要将 crypt.METHOD_CRYPT 添加到 crypt.method 中。检查它是否受支持,例如在 OpenBSD 上可能不受支持。

  • bpo-23600:tzinfo.fromutc()的默认实现在某些情况下返回错误结果。

  • bpo-25203:失败的 readline.set_completer_delims()不再使模块处于不一致状态。

  • bpo-25011:除非前缀以下划线开头,否则 rlcompleter 现在将Ellipsis私有和特殊属性名称。

  • bpo-25209:rlcompleter 现在可以在 completed 关键字之后添加空格或冒号。

  • bpo-22241:timezone.utc 名称现在为普通的'UTC',而不是'UTC-00:00'。

  • bpo-23517:datetime.datetime 的 fromtimestamp()和 utcfromtimestamp()方法现在将微秒舍入到最接近的秒数,并且纽带最接近偶数整数(ROUND_HALF_EVEN),成为 round(float),而不是舍入到-Infinity(ROUND_FLOOR)。

  • bpo-23552:现在,当最佳和最差时间之间存在较大(4 倍)差异时,Timeit 现在会发出警告。来自 Serhiy Storchaka 的补丁。

  • bpo-24633:site-packages/README-> README.txt。

  • bpo-24879:help()和 pydoc 现在可以按定义的 Sequences 列出命名的 Tuples 字段,而不是按字母 Sequences 列出。排序由_fields 属性(如果存在)确定。

  • bpo-24874:提高 itertools.cycle()的速度,并使它的 pickle 更紧凑。

  • 当第一个参数不是列表时,修复 itertools.cycle .__ setstate __()中的崩溃。

  • bpo-20059:urllib.parse 在所有无效端口上引发 ValueError。 Martin Panter 修补程序。

  • bpo-24360:改进 argparse.Namespace()的__repr_以获取无效的标识符。 Matthias Bussonnier 的补丁。

  • bpo-23426:run_setup 在 distutils 中损坏。来自 Alexander Belopolsky 的补丁。

  • bpo-13938:2to3 将 StringTypes 转换为 Tuples。 Mark Hammond 的补丁。

  • bpo-2091:open()接受包含“”的“ U”模式字符串,但是“ U”只能与“ r”一起使用。 Jeff Balogh 和 John O'Connor 的补丁。

  • bpo-8585:改进了 zipimporter2 的测试。马克·劳伦斯的补丁。

  • bpo-18622:unittest.mock.mock_open()。reset_mock 将无限递归。 Nicola Palumbo 和 Laurent De Buyst 的补丁。

  • bpo-24426:现在,正则表达式中的快速搜索优化适用于以捕获组开始的模式。现在,无法在编译时禁用快速搜索优化。

  • bpo-23661:unittest.mock side_effects 现在可以再次成为 exception。这是对 Python 3.4 的回归。来自 Ignacio Rossi 的补丁

  • bpo-13248:删除不推荐使用的 inspect.getmoduleinfo 函数。

  • bpo-25578:修复 SSLSocket.getpeercer()中的(另一个)内存泄漏。

  • bpo-25530:创建 ssl.SSLContext 时,默认情况下禁用易受攻击的 SSLv3 协议。

  • bpo-25569:修复 SSLSocket.getpeercert()中的内存泄漏。

  • bpo-25471:从 accept()返回的套接字不应看起来是非阻塞的。

  • bpo-25319:重新初始化 threading.Event 时,基本条件应使用常规锁而不是递归锁。

  • 如果主机已解析,请跳过 getaddrinfo。 A. Jesse Jiryu Davis 的补丁。

  • bpo-26050:添加 asyncio.StreamReader.readuntil()方法。 МаркКоренберг修补程序。

  • bpo-25924:避免在 OS X 10.5 或更高版本上对 getaddrinfo(3)调用进行不必要的序列化。 A. Jesse Jiryu Davis 的原始补丁。

  • bpo-26406:避免在当前版本的 OpenBSD 和 NetBSD 上对 getaddrinfo(3)调用进行不必要的序列化。 A. Jesse Jiryu Davis 的补丁。

  • bpo-26848:修复 asyncio/subprocess.communicate()以处理空 Importing。 Jack O'Connor 修补程序。

  • bpo-27040:添加 loop.get_exception_handler 方法

  • bpo-27041:异步:添加 loop.create_future 方法

IDLE

  • bpo-20640:添加对 idlelib.configHelpSourceEdit 的测试。 Saimadhav Heblikar 修补程序。

  • 在 IDLE 文档的“ IDLE-控制台差异”部分中,阐明使用 IDLE 运行会如何影响 sys.modules 和标准流。

  • bpo-25507:修复了 IOBinding 中的错误更改,该更改阻止了打印。增强 IOBinding htest 以包括所有主要的 IOBinding Function。

  • bpo-25905:将 README.txt 中不需要的'转换为'右单引号,然后用'ascii'打开它和 NEWS.txt。将 CREDITS.txt 重新编码为 utf-8,并使用“ utf-8”将其打开。

  • bpo-15348:在关闭调试器窗口(在 IDLE 进程中运行)之前,先停止调试器引擎(通常在用户进程中)。这样可以防止捕获和忽略 RuntimeErrors。

  • bpo-24455:防止在以下情况下挂起 IDLE:a)在调试器处于活动状态时关闭 Shell 程序(15347); b)用[X]按钮关闭调试器(15348); c)在已经激活的情况下激活调试器(24455)。马克·罗斯曼(Mark Roseman)所做的补丁pass进行两项更改来实现。 1.使用旨在用于此目的的 tcl vwait 机制(而不是 root.mainloop 和.quit)挂起并恢复 gui.interaction 方法。 2.在 gui.run 中,允许任何现有交互首先终止。

  • 在“空闲程序”中将“程序”更改为“您的程序”?消息,以便更清楚地指出所引用的程序是当前正在运行的用户程序,而不是 IDLE 本身。

  • bpo-24750:改善 IDLE 编辑器窗口状态栏的外观。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25313:更改对新的内置文本颜色主题的处理,以更好地解决由添加 IDLE Dark 引入的兼容性问题。在 idlelib 中的任何地方始终使用修订后的 idleConf.CurrentTheme。

  • bpo-24782:扩展配置现在是“ IDLE 首选项”对话框中的选项卡,而不是单独的对话框。以前的选项卡现在是排序列表。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-22726:重新激活配置对话框帮助按钮,其中包含有关其他按钮的一些内容以及新的 IDLE Dark 主题。

  • bpo-24820:IDLE 现在具有“ IDLE Dark”内置文本颜色主题。它或多或少是 IDLE Classic 倒立的,具有钴蓝色背景。字符串,Comments,关键字……仍然是绿色,红色,橙色……。要将其与 2015 年 11 月之前发布的 IDLE 一起使用,请点击“另存为新的自定义主题”按钮,然后 Importing 新名称,例如“ Custom Dark”。自定义主题可与任何 IDLE 版本一起使用,并且可以修改。

  • bpo-25224:README.txt 现在是 IDLE 开发人员和好奇的用户的 idlelib 索引。现在,以前的用户内容在“ IDLE 文档”一章中。 “ IDLE”现在表示“集成开发和学习环境”。

  • bpo-24820:用户现在可以在“设置”->“自定义突出显示”中设置断点颜色。马克·罗斯曼(Mark Roseman)的原始补丁。

  • bpo-24972:现在,非活动选择背景与所有系统上用户配置的活动选择背景匹配。现在,找到的项目始终在 Windows 上突出显示。 Mark Roseman 的最初补丁。

  • bpo-24570:空闲:在受 tk 回归影响的 Mac 上显示呼叫提示和完成框。 Mark Roseman 的最初补丁。

  • bpo-24988:空闲 ScrolledList 上下文菜单(在调试器中使用)现在可以在 Mac Aqua 上使用。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-24801:右键单击以在 Mac Aqua 上运行上下文菜单。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25173:将 tkinter 消息框与特定的窗口小部件相关联。对于 Mac OSX,将其设置为“工作表”。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25198:增强现在用于空闲帮助的初始 html 查看器。适当地缩进固定间距的文本(由 Mark Roseman 修补)。给代码段一个非常像狮身人面像的浅蓝灰色背景。重复使用用户为 Shell 程序和编辑器设置的初始宽度和高度。使用目录(TOC)菜单时,将节标题放在屏幕顶部。

  • bpo-25225:压缩和重写有关文本颜色的空闲文档部分。

  • bpo-21995:解释 IDLE 和控制台 Python 之间的一些区别。

  • bpo-22820:从 Idle 编辑器运行文件时,说明需要* print *。

  • bpo-25224:文档:增加了“空闲”Function列表和“无子进程”部分。

  • bpo-25219:为空闲命令行选项更新文档。一些失踪,笔记不正确。

  • bpo-24861:大多数 idlelib 是私有的,并且可能会更改。使用 idleib.idle.*启动空闲。请参见 idlelib .__ init . doc__。

  • bpo-25199:空闲:为将来的维护者添加同步 Comments。

  • bpo-16893:将 help.txt 替换为 help.html,以显示空闲文档。删除了新的 idlelib/help.html Doc/build/html/library/idle.html。它看起来比 help.txt 更好,并且可以更好地说明 Idle 发布时的状态。适用于此文件的 tkinter html 查看器由 Rose Roseman 编写。现已弃用了尚未使用的 EditorWindow.HelpDialog 类和 helt.txt 文件。

  • bpo-24199:弃用未使用的 idlelib.idlever,可能在 3.6 中将其删除。

  • bpo-24790:删除无关的代码(这也会造成 2 和 3 冲突)。

Documentation

  • bpo-26736:如果可能,在文档中使用 HTTPS 进行外部链接。

  • bpo-6953:重做 Readline 模块文档以将相关Function分组在一起,并添加更多详细信息,例如访问哪些基本 Readline 函数和变量。

  • bpo-23606:在有关 cdll.msvcrt 的 ctypes 文档中添加 Comments。

  • bpo-24952:在“线程”和“ _thread”模块中阐明 stack_size()的默认大小参数。来自 Mattip 的补丁。

  • bpo-26014:更新 3.x 打包文档:旧页面中现在提供了指向新文档的“另请参阅”链接到 setuptools 文档的链接已更新

Tests

  • bpo-21916:添加了对 turtle 模块的测试。 ingrid,Gregory Loyse 和 Jelle Zijlstra 的补丁。

  • bpo-26295:使用“ python3 -m test –testdir = TESTDIR”时,regrtest 不会添加“ test”。测试模块名称的前缀。

  • bpo-26523:未经测试的 multiprocessing 线程池(multiprocessing.dummy.Pool)。

  • bpo-26015:添加了对可变序列的迭代器进行腌制的新测试。

  • bpo-26325:添加了 test.support.check_no_resource_warning()以检查是否未发出 ResourceWarning。

  • bpo-25940:更改了 test_ssl 以更多地使用其内部本地服务器。这样可以避免依赖 svn.python.org,后者最近更改了根证书。

  • bpo-25616:将 OrderedDict 的测试从 test_collections 中提取到单独的文件 test_ordered_dict 中。

  • bpo-25449:添加了针对 OrderedDict 子类的测试。

  • bpo-25188:将-P/–pgo 添加到 test.regrtest 以抑制出于 PGO 构建目的而运行测试套件时的错误输出。 Alecsandru Patrascu 的最初补丁。

  • bpo-22806:添加python -m test --list-tests命令以列出测试。

  • bpo-18174python -m test --huntrleaks ...现在也检查文件 Descriptors 是否泄漏。由 Richard Oudkerk 撰写的补丁。

  • bpo-25260:在 Windows 上修复python -m test --coverage。删除被忽略目录的列表。

  • PCbuild\rt.bat现在接受无限数量的参数传递给 regrtest.py。以前限制为 9.

  • bpo-26583:如果无法写入字节码文件,请跳过 test_import 中的 test_timestamp_overflow。

Build

  • bpo-21277:请勿try将_ctypes 与 ffi_convenience 库链接。

  • bpo-26884:修复了交叉扩展的扩展模块链接。 Xavier de Gaye 的补丁。

  • bpo-26932:固定支持将 RTLD_ *常量定义为枚举值,而不是pass宏(特别是在 Android 上)支持。志轩 Y 的补丁。

  • bpo-22359:交叉编译时,禁用运行_freeze_importlib 和 pgen 的规则。这些程序的输出通常无论如何都与源代码一起保存,并且在进行本机构建时仍会重新生成。 Xavier de Gaye 的补丁。

  • bpo-21668:将 audioop,_datetime,_ctypes_test 模块链接到 libm(在 Mac OS X 上除外)。Chi Hsuan Yen 编写的修补程序。

  • bpo-25702:添加了–with-lto 配置选项,该选项将在 make profile-opt 期间的构建时启用链接时间优化。众所周知,某些编译器和工具链在使用 LTO 时不会生成稳定的代码,因此请务必在对其进行彻底测试之前对其进行测试。与仅使用 profile-opt 相比,它可以提供百分之几的速度提升。

  • bpo-26624:添加对 ucrtbase [d] .dll 版本的验证,并带有旧版本的警告。

  • bpo-17603:pass对 struct stat 中的 st_blocks 使用较低级别的检查来避免有关 fileblocks.o 文件不存在的错误。

  • bpo-26079:修复了 tix-8.4.3.6 的构建输出文件夹。 Bjoern Thiel 修补程序。

  • bpo-26465:更新 Windows 版本以使用 OpenSSL 1.0.2g。

  • bpo-25348:为PCbuild\build.bat添加了--pgo--pgo-job参数,以使用 Profile-Guided Optimization 进行构建。旧的PCbuild\build_pgo.bat脚本已删除。

  • bpo-25827:将对使用 ICC 进行构建的支持添加到configure,包括新的--with-icc标志。

  • bpo-25696:使用 make -j9 修复 UNIX 上的 Python 安装。

  • bpo-24986:当外部库不可用时,现在可以在 Windows 上构建 Python 而不会出现错误。

  • bpo-24421:在构建扩展之前,先编译 Modules/_math.c。以前,如果 math 和 cmath 构建同时进行,则可能无法正确编译。

  • bpo-26465:更新 OS X 10.5(仅 32 位)安装程序以构建并与 OpenSSL 1.0.2g 链接。

  • bpo-26268:更新 Windows 版本以使用 OpenSSL 1.0.2f。

  • bpo-25136:支持 Apple Xcode 7 的新文本 SDK 存根库。

  • bpo-24324:当使用 gcc 时,不要启用无法访问的代码警告,因为该选项在旧版 gcc 中无法正常工作,并且从 gcc-4.5 起已被静默删除。

Windows

  • bpo-27053:更新 make_zip.py 以正确生成库 ZIP 文件。

  • bpo-26268:更新 prepare_ssl.py 脚本以处理不包含 include 目录(即 1.0.2e 及更高版本)内容的 OpenSSL 版本。

  • bpo-26071:bdist_wininst 创建的二进制文件无法启动并找到 32 位 Python

  • bpo-26073:更新启动器中的魔幻数字列表

  • bpo-26065:生成嵌入式发行版时从库中排除 venv。

  • bpo-25022:删除了过时的 PC/example_nt /目录。

Tools/Demos

  • bpo-26799:修复了 python-gdb.py:加载 Python 代码时不会一次获得 C 类型,而是按需获得 C 类型。如果在 Python 可执行文件之前加载 python-gdb.py,则 C 类型可以更改。 Thomas Ilsche 编写的补丁。

  • bpo-26271:修复“冻结”工具以正确使用pass configure 传递的标志。 Daniel Shaulov 修补程序。

  • bpo-26489:将字典解压缩支持添加到 Tools/parser/unparse.py。郭慈 Te 的补丁。

  • bpo-26316:在 Argument Clinic 中修复变量名称拼写错误。

  • bpo-25440:修复 python-config –extension-suffix 的输出。

  • bpo-25154:不赞成使用 pyvenv 脚本,而推荐使用python3 -m venv

C API

  • bpo-26312:现在,使用 PyArg_ParseTupleAndKeywords()会在所有编程错误中引发 SystemError。之前在某些编程错误中确实提出过 RuntimeError。

  • bpo-26198:现在在解析“ es#”和“ et#”格式单位时缓冲区溢出时引发 ValueError 而不是 TypeError。现在在解析格式字符串时出现程序错误时引发 SystemError 而不是 TypeError。

Python 3.5.5 finally版

*发布日期:2018-02-04 *

3.5.5 版没有任何新更改。

Python 3.5.5 发行候选 1

*发布日期:2018-01-23 *

Security

  • bpo-32551bpo-29139sys.path[0]初始化更改pass揭示从 zipfile,目录或其他导入位置执行__main__时 sys.path 的初始化方式不一致而导致回归。这被认为是潜在的安全问题,因为在以前没有这种情况的情况下,它可能导致特权进程意外地从用户控制的目录中加载代码。现在,解释器始终避免将导入位置的父目录添加到sys.path,并确保在插入命令行上命名的导入位置时不会无意间修改其他sys.path条目。 (最初报告为针对 Python 3.6rc1 的bpo-29723,但当时即将发布的 Python 3.5.4 版本也会受到影响而被遗漏了)

  • bpo-30657:修复了 PyBytes_DecodeEscape,CVE-2017-1000158 中可能的整数溢出。 Jay Bosamiya 的原始补丁;由 MiroHrončok 重新定义为 Python 3.

  • bpo-30947:将 libexpat 嵌入式副本从 2.2.1 版本升级到 2.2.3,以获取安全修复程序。

核心和内建函数

  • bpo-31095:修复了由tp_dealloc而不是PyObject_GC_UnTrack()引起的 GC 期间潜在的崩溃。

Library

  • bpo-32072:解决了二进制 plists 的问题:修复了保存字节数组的问题。相同的对象将只保存一次。相等的引用将作为相同的对象加载。添加了对保存和加载递归数据结构的支持。

  • bpo-31170:expat:将 libexpat 从 2.2.3 更新到 2.2.4. 修复了 UTF-8Importing 的部分字符复制(libexpat 错误 115):https://github.com/libexpat/libexpat/issues/115

Python 3.5.4 finally版

*发布日期:2017-08-07 *

Library

  • bpo-30119:ftplib.FTP.putline()现在在包含 CR 或 LF 的命令上引发 ValueError。罗东熙的补丁。

Python 3.5.4 发行候选 1

*发布日期:2017-07-23 *

Security

  • bpo-30730:防止在 Windows 的子进程中注入环境变量。防止传递其他环境变量和命令参数。

  • bpo-30694:将 expat copy 从 2.2.0 升级到 2.2.1,以修复多个安全漏洞,包括:CVE-2017-9233(外部实体无限循环 DoS),CVE-2016-9063(整数溢出,重新修复),CVE -2016-0718(修复了从 2.2.0 版修复到 CVE-2016-0718 的回归错误)和 CVE-2012-0876(使用 SipHash 进行计数器哈希泛洪)。注意:CVE-2016-5300(使用诸如 getrandom 之类的特定于 os 的熵源)不会影响 Python,因为 Python 已从 os 获取熵以使用XML_SetHashSalt()设置 maven 密码。

  • bpo-30500:修复 urllib.parse.splithost()以正确解析片段。例如,splithost('//127.0.0.1#@evil.com/')现在可以正确返回127.0.0.1主机,而不是将@evil.com作为身份验证中的主机(login@host)。

  • bpo-29591:将 Expat 副本从 2.1.1 更新到 2.2.0,以获得 CVE-2016-0718 和 CVE-2016-4472 的修复程序。有关更多信息,请参见https://sourceforge.net/p/expat/bugs/537/

核心和内建函数

  • bpo-30876:现在,从卸载的软件包的相对导入将重新导入该软件包,而不是出现 SystemError 失败。从非软件包的相对导入现在失败,出现 ImportError 而不是 SystemError。

  • bpo-30765:当要求 PyThread_acquire_lock()不阻塞时,避免在 pthread_mutex_lock()中阻塞。

  • bpo-27945:在搜索,插入或比较期间更改 Importing 集合时,用 dict 修复了各种 segfault。基于 Duane Griffin 和 Tim Mitchell 的补丁。

  • bpo-25794:对于非实习属性名称,固定为 type .__ setattr ()和 type . delattr __()。基于 Eryk Sun 的补丁。

  • bpo-29935:修复了传递错误类型的索引时,在 Tuples,列表和 deque 的 index()方法中的错误消息。

  • bpo-28876bool(range)即使len(range)加注OverflowError也有效。

  • bpo-29600:修复 StopIteration 中包装的协程返回值。

  • bpo-29537:恢复与 CPython 3.5.0 到 3.5.2 生成的字节码文件的运行时兼容性,并调整 eval 循环以避免可能由于它们可能包含的 BUILD_MAP_UNPACK_WITH_CALL 操作码格式错误而引起的问题。 Petr Viktorin,Serhiy Storchaka 和 Nick Coghlan 的补丁。

  • bpo-28598:对于在 str .__ mod_之前调用的 str 的子类,支持__rmod__。 Martijn Pieters 修补程序。

  • bpo-29602:修复了复杂构造函数中对复杂子类和具有__complex_方法的 Importing 的带符号零的错误处理。 Serhiy Storchaka 修补程序。

  • bpo-29347:修复了在创建 weakref 对象时可能取消引用未定义指针的问题。

  • bpo-29438:修复了密钥共享字典中的“售后使用”问题。

  • bpo-29319:防止 RunMainFromImporter 覆盖 sys.path [0]。

  • bpo-29337:修复了比较代码对象时可能出现的 BytesWarning。警告可能在编译时发出。

  • bpo-29478:如果在使用 Compat32 策略时未指定 max_line_length = None,则不再忽略它。 Mircea Cosbuc 的补丁。

Library

  • bpo-29403:修复unittest.mock的自动指定不会在方法绑定的内置函数上失败。 Aaron Gallagher 的补丁。

  • bpo-30961:解决了在 tracemalloc 中减少借用引用的问题。

  • bpo-30886:修复 multiprocessing.Queue.join_thread():它现在 await 直到线程完成,即使该线程是由创建队列的同一进程启动的。

  • bpo-29854:使用 readline 的历史记录大小选项修复了 readline 中的段错误。 Nir Soffer 的补丁。

  • bpo-30807:当传递一个很小的值时,signal.setitimer()可能会禁用计时器。微小的值(例如 1e-6)是 setitimer()的有效非零值,该值指定为微秒分辨率的间隔。但是,在某些平台上,我们的转换例程可以将 1e-6 转换为零间隔,因此禁用计时器,而不是(重新)安排计时器。

  • bpo-30441:修复在迭代 os.environ 时修改它的错误

  • bpo-30532:修复电子邮件 Headers 值解析器在某些情况下会丢弃折叠空格的情况。

  • bpo-29169:将 zlib 更新到 1.2.11.

  • bpo-30879:使用类似字节的参数调用时,os.listdir()和 os.scandir()现在发出字节名称。

  • bpo-30746:在os.putenv()os.spawn*()的环境变量名称中禁止使用'='字符。

  • bpo-29755:修复了 gettext 模块中的 lgettext()系列函数。现在,它们总是返回字节。

  • bpo-30645:修复 imp.load_package()中的路径计算,以解决仅在打包时附带字节码的情况。 Alexandru Ardelean 修补程序。

  • bpo-23890:现在,unittest.TestCase.assertRaises()手动break参考周期,以使对象的存活时间不超过预期的时间。

  • bpo-30149:inspect.signature()现在支持带有部分参数包装的可变参数参数的可调用对象。罗东熙的补丁。

  • bpo-29931:修复了 ipaddress.ip_interface 对象的比较检查。 Sanjay Sundaresan 的补丁。

  • bpo-24484:避免在多进程清除中出现争用情况。

  • bpo-28994:不再显示由 atexit 注册的回调中引发的 SystemExit 的 traceback。

  • bpo-30508:如果调用了 Task/Future“ cancel()”方法,则不要记录异常。

  • bpo-28556:更新了键入模块:添加通用 AsyncContextManager,在所有版本上添加对 ContextManager 的支持。 Jelle Zijlstra 和 Ivan Levkivskyi 的原始 PR

  • bpo-29870:修复在 asyncio/ssl 实现中中止连接时 ssl 套接字泄漏的问题。 MichaëlSghaïer 修补程序。

  • bpo-29743:在握手过程中关闭传输会泄漏打开的套接字。 Nikolay Kim 的补丁

  • bpo-27585:修复 asyncio.Lock 中的服务员取消。 Mathieu Sornay 的补丁。

  • bpo-30418:在 Windows 上,如果子进程仍在运行但关闭了管道,则 subprocess.Popen.communicate()现在也将忽略 stdin.write()上的 EINVAL。

  • bpo-30378:解决了 logging.handlers.SysLogHandler 无法处理 IPv6 地址的问题。

  • bpo-29960:_random.Random.setstate()引发异常时,保留生成器状态。 Bryan Olson 的补丁。

  • bpo-30414:出现异常时,后台运行线程不会从主循环中break。

  • bpo-30003:修复了在 HZ 编解码器中处理转义符的问题。根据马琳的补丁。

  • bpo-30301:在* spawn forkserver *启动方法下使用 SimpleQueue.empty()时,修复 AttributeError。

  • bpo-30329:imaplib 和 poplib 现在在关闭(SHUT_RDWR)时捕获 Windows 套接字 WSAEINVAL 错误(代码 10022):try了无效的操作。有时在 SSL 连接上会发生此错误。

  • bpo-30375:现在,在编译正则表达式时发出的警告始终指向用户代码中的行。以前,如果它们是从组或条件内部发出的,则它们可以指向 re 模块的内部。

  • bpo-30048:当任务正在运行协程并且协程返回时不再await时,可以忽略固定的Task.cancel()

  • bpo-29990:修复了 GB18030 解码器中的范围检查。由马琳制作的原始补丁。

  • bpo-26293:由于 zip 文件损坏导致更改。 (另请参见:bpo-29094)

  • bpo-30243:删除了_json 的扫描器和编码器的__init_方法。滥用它们可能会导致内存泄漏或崩溃。现在,扫描器和编码器对象已在__new_方法中完全初始化。

  • bpo-30185:收到 Ctrl-C 时,避免在 forkserver 帮助程序进程中进行 KeyboardInterrupttraceback。

  • bpo-28556:对键入模块进行了各种更新:添加了类型。NoReturn 类型,使用 WrapperDescriptorType,较小的错误修复。 Jim Fasarakis-Hilliard 和 Ivan Levkivskyi 的原始 PR。

  • bpo-30205:修复 Linux 上未绑定的 AF_UNIX 套接字的 getsockname()。

  • bpo-30070:修复了解析器模块中的错误处理中的泄漏和崩溃。

  • bpo-30061:修复了当 readline()或__next __()分别返回不可调整大小的对象时,IOBase 方法__next __()和 readlines()崩溃的问题。修复了由于不检查 PyObject_Size(),PySequence_Size()或 PyMapping_Size()结果而导致的其他可能的错误。

  • bpo-30068:_io._IOBase.readlines 将检查是否在提示存在时首先关闭。

  • bpo-29694:已修复 pathlib mkdir 中带有标志 parents = True 的竞争条件。 Armin Rigo 修补程序。

  • bpo-29692:修复了 contextlib.contextmanager 中 RuntimeError 异常的任意取消链接。 Siddharth Velankar 修补程序。

  • bpo-29998:Pickling 和复制 ImportError 现在将保留名称和路径属性。

  • bpo-29942:修复了长期遇到空的可迭代对象时 itertools.chain.from_iterable 崩溃的问题。

  • bpo-27863:修复了由于竞争条件和错误类型导致的 ElementTree 多次崩溃。

  • bpo-28699:修复了 multiprocessing.pool 中的池中的一个错误,该错误在可迭代对象的第一个位置引发异常可能会吞噬该异常或使程序挂起。达文·波茨和张翔的补丁。

  • bpo-25803:当 OS 优先处理诸如 EACCES 而不是 EEXIST 之类的错误时,请避免 Path.mkdir(exist_ok = True)引发的错误错误。

  • bpo-29861:在 multiprocessing.Pool 中完成后,请立即释放对任务,其参数和结果的引用。

  • bpo-29884:故障处理程序:拆卸期间恢复旧的 sigaltstack。 Christophe Zeitouny 的补丁。

  • bpo-25455:修复了递归缓冲的类似文件的对象崩溃的问题。

  • bpo-29800:如果 partial.keywords 的键不是字符串,则修复会在 partial .__ repr_中崩溃。 Michael Seifert 的补丁。

  • bpo-29742:如果在封闭的 ssl 传输上被调用,get_extra_info()会引发异常。 Nikolay Kim 的补丁。

  • bpo-8256:修复了如果未设置 sys.stdin 或 sys.stdout 的属性“ encoding”或“ errors”或不是字符串,则 input()可能失败或崩溃的问题。

  • bpo-28298:修复了一个错误,该错误使数组'Q','L'和'I'不能接受大的 intable(具有__int_的对象)作为元素。 Oren Milman 修补程序。

  • bpo-29615:SimpleXMLRPCDispatcher 不再将 KeyError(或任何其他异常)链接到分派方法中引发的异常。 Petr Motejlek 修补程序。

  • bpo-29704:asyncio.subprocess.SubprocessStreamProtocol 不再在关闭所有管道之前关闭。

  • bpo-29703:修复了异步问题,以支持在子进程中实例化新事件循环。

  • bpo-29376:修复 threading._DummyThread.is_alive()中的 assert 错误。

  • bpo-29110:当文件作为文件系统路径给出并且不是有效的 AIFF 格式时,修复 aifc.open()中的文件对象泄漏。 Anthony Zhang 修补程序。

  • bpo-28961:修复 unittest.mock._Call 助手:不再忽略 name 参数。黄佳俊撰写的补丁。

  • bpo-29532:更改传递给 functools.partial()的 kwarg 字典在创建后不再影响部分对象。

  • bpo-28556:键入模块的各种更新:键入。计数器,键入.ChainMap,改进的 ABC 缓存等。Jelle Zijlstra,Ivan Levkivskyi,Manuel Krebber 和ŁukaszLanga 的原始 PR。

  • bpo-29100:修复了 Python 3.6.0 中引入的 datetime.fromtimestamp()回归:检查最小和最大年份。

  • bpo-29519:与罕见的 multiprocessing 和自定义编解码器组合使用时,修复了解释器关闭期间弱引用喷溅异常。

  • bpo-29416:防止 pathlib.Path.mkdir 中出现无限循环

  • bpo-29444:修复了匹配对象的 group()方法中的越界缓冲区访问。基于 WGH 的补丁。

  • bpo-29335:当子进程退出到停止状态而不是终止状态时(例如:处于 ptrace 下时),修复 subprocess.Popen.wait()。

  • bpo-29290:修复 argparse 中的回归,该回归将帮助消息包装在不间断的空格处。

  • bpo-28735:修复了模拟 ock.MagickMock 与模拟 ock.ANY 的比较。

  • bpo-29011:pass将 Deque 添加到键入模块来解决重要的遗漏。

  • bpo-29219:修复了未初始化的 ctypes.CDLL 实例的 repr 中的无限递归。

  • bpo-28969:修复了 functools.lru_cache 的 C 实现中的竞争条件。当从具有相同未缓存参数的不同线程中同时调用具有完全缓存的缓存Function时,可能会引发 KeyError。

  • bpo-29142:在 urllib.request 中,no_proxy 环境变量中带有后缀点的后缀可以再次匹配相关的主机名(例如.b.c 匹配 a.b.c)。 Milan Oberkirch 修补程序。

Documentation

  • bpo-30176:在 curses 文档中添加与缺少属性有关的常量。

  • bpo-26985:在检查文档中添加代码对象的缺失信息。

  • bpo-28929:将文档链接到其在 GitHub 上的源文件。

  • bpo-25008:已有效弃用 smtpd.py 文件,并添加了指向 aiosmtpd(基于异步的第三方替换)的指针。

  • bpo-26355:在每个页面上将规范标题链接添加到文档的相应主要版本。 Matthias Bussonnier 的补丁。

  • bpo-29349:修复了用于构建文档的代码中的 Python 2 语法。

Tests

  • bpo-30822:修复 regrtest 命令行解析器,以允许传递-u extralargefile 来运行 test_zipfile64.

  • bpo-30383:regrtest:增强 master 分支的 regrtest 和 backport Function。添加选项:–coverage,–testdir,–list-tests(列出测试文件,不要运行它们),–list-cases(列出测试标识符,不要运行它们,bpo-30523),–matchfile(加载列表测试来自文本文件bpo-30540的–slowest(别名为–slow)的过滤器。增强输出:添加时间戳,测试结果,当前正在运行的测试,带有总持续时间的“测试结果:xxx”摘要等。修复 regrtest 中的参考泄漏搜寻,–huntrleaks:regrtest 现在可以预热缓存,显式创建所有已创建的内部单例根据需要防止在检查参考泄漏时出现误报。 (bpo-30675)。

  • bpo-30357:test_thread:setUp()现在使用 support.threading_setup()和 support.threading_cleanup()等到线程完成后才能避免后续测试的随机副作用。 Grzegorz Grzywacz 编写的初始补丁。

  • bpo-28087:跳过 macOS 上的 test_asyncore 和 test_eintr 轮询失败。由于某些 macOS 版本上的基础系统轮询Function未解决的问题,因此在 macOS 上运行时,请跳过 select.poll 的某些测试。

  • bpo-30197:test.support 模块中的增强Function swap_attr()和 swap_item()。现在,在 with 语句中删除替换的属性或项时,它们可以工作。如果有属性或项目的旧值(如果不存在,则为 None)现在将分配给“ as”子句的目标。

  • bpo-29571:为了匹配re.LOCALE标志的行为,test_re.test_locale_flag 现在使用locale.getpreferredencoding(False)来确定测试正则表达式的候选编码(当默认语言环境编码是多字节编码时,它可以正确跳过测试)

Build

  • bpo-29243:使用--enable-optimizations配置时,防止在make testmake install和其他一些 make 目标期间不必要地重建 Python。

  • bpo-23404:不再基于文件修改时间重新生成生成的文件:该操作现在是明确的。将make touch替换为make regen-all

  • bpo-29643:修复--enable-optimization无效。

Windows

  • bpo-30687:在构建而不是 vcvarsall.bat 时在 Windows 上找到 msbuild.exe

  • bpo-29392:防止在将无效参数传递到 msvcrt 模块时崩溃。

C API

  • bpo-27867:如果 Py_LIMITED_API 设置为 0x03050400 和 0x03060000(不包括)或 0x03060100 或更高的值,则函数 PySlice_GetIndicesEx()将被宏替换。

  • bpo-29083:修复了一些公共 API 函数的语句。 PyArg_VaParse()和 PyArg_VaParseTupleAndKeywords()在受限 API 中不可用。定义 PY_SSIZE_T_CLEAN 时,PyArg_ValidateKeywordArguments(),PyArg_UnpackTuple()和 Py_BuildValue()在版本<3.3 的受限 API 中不可用。

Python 3.5.3 finally版

*发布日期:2017-01-17 *

在 3.5.3rc1 和 3.5.3 final 之间没有代码更改。

Python 3.5.3 发行候选 1

*发布日期:2017-01-02 *

核心和内建函数

  • bpo-29073:字节数组格式不再在第一个空字节上截断。

  • bpo-28932:如果不存在,则不包括<sys/random.h>。

  • bpo-28147:修复拆分表字典中的内存泄漏:setattr()不得将组合表转换为拆分表。

  • bpo-25677:更正缩进块的语法错误插入符号的位置。基于 Michael Layzell 的补丁。

  • bpo-29000:八进制的固定字节格式,零填充为备用格式。

  • bpo-28512:固定pass PyErr_SyntaxLocationEx()和 PyErr_SyntaxLocationObject()设置 SyntaxError 的偏移属性。

  • bpo-28991:functools.lru_cache()易受猴子修补的 len()函数引起的模糊重入错误的影响。

  • bpo-28648:修复了在解码星体字符时在 Mac OS X 上的调试版本中 Py_DecodeLocale()崩溃的问题。张翔的补丁。

  • bpo-19398:如果编译时 PYTHONPATH 组件为空,则不再向 sys.path 组件添加额外的斜杠。

  • bpo-28426:修复了调试版本中 PyUnicode_AsDecodedObject()中潜在的崩溃。

  • bpo-23782:修复了_PyTraceback_Add()中可能的内存泄漏和 PyTraceBack_Here()中的异常丢失。

  • bpo-28379:添加了对 PyUnicode_CopyCharacters()的完整性检查和测试。张翔的补丁。

  • bpo-28376:远程迭代器的类型现已注册为迭代器。 Oren Milman 修补程序。

  • bpo-28376:range_iterator 的构造函数现在检查步骤是否为 0.Oren Milman 进行了修补。

  • bpo-26906:解决未初始化类型的特殊方法现在将导致该类型的隐式初始化,而不是失败。

  • bpo-18287:PyType_Ready()现在检查 tp_name 不为 NULL。 Niklas Koep 的原始补丁。

  • bpo-24098:修复了在编译过程中更改 AST 时可能发生的崩溃。

  • bpo-28350:不再保留具有空字符的字符串常量。

  • bpo-26617:修复了当 GC 在弱引用回调期间运行时崩溃的问题。

  • bpo-27942:现在,字符串常量递归地插入到 Tuples 和 Frozensets 中。

  • bpo-21578:修复了使用无效关键字 args 调用 ImportError 时产生的误导性错误消息。

  • bpo-28203:更正了来自complex(1.0, {2:3})的错误消息中的错误类型。 Soumya Sharma 修补程序。

  • bpo-27955:当 getrandom()系统调用因 EPERM 而失败时(例如,被 SECCOMP 阻止时),在读取/ dev/urandom 设备时回退。

  • bpo-28131:修复 zipimport 的 compile_source()中的回归。 zipimport 应该使用与解释器相同的优化级别。

  • bpo-25221:当使用 NSMALLPOSINTS = 0 编译 Python 时,修复了 PyLong_FromLong(0)的错误结果。

  • bpo-25758:防止 zipimport 不必要地编码文件名(由 Eryk Sun 修补)

  • bpo-28189:dictitems_contains 不再吞下比较错误。 (张翔的补丁)

  • bpo-27812:正确清除生成器框架对生成器的后向引用,以防止 frame.clear()崩溃。

  • bpo-27811:修复了在未启用 await 的协程启用了警告作为错误的情况下完成的崩溃。

  • bpo-27587:解决了 PVS-Studio 发现的另一个问题:在_PyState_AddModule()中使用'def'后,对空指针进行检查。 Christian Heimes 的最初补丁。

  • bpo-26020:设置的 Literals 评估 Sequences 与记录的行为不匹配。

  • bpo-27782:现在可以正确导入多阶段扩展模块,使用m_methods字段将模块级别的Function添加到从Py_create_mod返回的非模块类型的实例中。张翔的补丁。

  • bpo-27936:round()函数对某些类型接受第二个 None 参数,但对其他类型则不接受。pass接受所有数字类型的 None 来解决不一致问题。

  • bpo-27487:如果在导入父包之后但在执行子模块之前,在 sys.modules 中找到了“ python -m”或 runpy.run_module()的子模块参数,则发出警告。

  • bpo-27558:修复“ raise”语句执行中的 SystemError。在一个全新的线程中,引发 RuntimeError,因为没有要引发的活动异常。张翔写的补丁。

  • bpo-27419:标准__import __()不再在全局变量或内置函数中查找“ import”以导入子模块或“从导入”。修复了处理非字符串包名称错误的问题。

  • bpo-27083:在 Windows 下遵守 PYTHONCASEOK 环境变量。

  • bpo-27514:使太多静态嵌套的块成为 SyntaxError 而不是 SystemError。

  • bpo-27473:修复了字节和字节数组串联中可能出现的整数溢出。张翔的补丁。

  • bpo-27507:在 bytearray.extend()中添加整数溢出检查。张翔的补丁。

  • bpo-27581:不要依赖包装在 PySequence_Tuple()中进行溢出检查。张翔的补丁。

  • bpo-27443:字节数组迭代器的__length_hint __()不再为已调整大小的字节数组返回负整数。

  • bpo-27942:修复 codeobject.c 中的内存泄漏

Library

  • bpo-15812:inspect.getframeinfo()现在可以正确显示上下文的第一行。由 Sam Breese 修补。

  • bpo-29094:现在,使用外部文件对象以及模式“ w”和“ x”创建的 ZIP 文件中的偏移量是相对于文件开头的。

  • bpo-13051:修复了较大或调整大小的 curses.textpad.Textbox 中的递归错误。基于 Tycho Andersen 的补丁。

  • bpo-29119:修复纯 Python 版本的 collections.OrderedDict move_to_end()方法中的弱引用。由 Andra Bogildea 提供。

  • bpo-9770:curses.ascii 谓词现在可以正确使用负整数。

  • bpo-28427:从另一个线程进行收集时,旧键不应从 WeakValueDictionary 中删除新值。

  • bpo-28923:从 Tix.py 中删除编辑器工件。

  • bpo-28871:修复了释放深层 ElementTree 时发生的崩溃。

  • bpo-19542:修复了 GC 收集发生在另一个线程中时,WeakValueDictionary.setdefault()和 WeakValueDictionary.pop()中的错误。

  • bpo-20191:修复了传递不拥有其元素作为限制的序列时,resource.prlimit()崩溃的问题。

  • bpo-28779:如果预加载的模块实例化了诸如锁之类的一些 multiprocessing 对象,则 multiprocessing.set_forkserver_preload()将使 forkserver 进程崩溃。

  • bpo-28847:dbm.dumb 现在支持读取只读文件,并且在不更改索引文件的情况下不再写入索引文件。

  • bpo-25659:在 ctypes 中,防止在诸如 Array 之类的抽象类上调用 from_buffer()和 from_buffer_copy()方法时发生崩溃。

  • bpo-28732:修复了 os.spawnv()中的错误,该错误在 args 中没有任何元素

  • bpo-28485:即使多线程不可用,也始终为负的 compileall.compile_dir(workers = ...)参数引发 ValueError。

  • bpo-28387:修复了在其他线程中调用垃圾回收器时_io.TextIOWrapper 释放器可能崩溃的问题。基于 Sebastian Cufre 的补丁。

  • bpo-27517:如果两次给空数据,LZMA 压缩器和解压缩器将不再引发异常。 Benjamin Fogle 修补程序。

  • bpo-28549:使用 ncurses6 修复了 curses 的 addch()中的段错误。

  • bpo-28449:模式为“ r”或“ r:”的 tarfile.open()现在try在未压缩的情况下打开压缩后的 tar 文件。否则,它有 50%的机会失败,并且 ignore_zeros = True。

  • bpo-23262:Web 浏览器模块现在支持 Firefox 36 和派生的浏览器。基于 Oleg Broytman 的补丁。

  • bpo-27939:修复了 tkinter.ttk.LabeledScale 和 tkinter.Scale 中的错误,该错误是由于在 Tk 内部将比例表示为 float 值而引起的。如果将 float 值设置为基础 Tk 变量,则 tkinter.IntVar 现在可以工作。

  • bpo-28255:calendar.TextCalendar()。prmonth()在打印一个月的 calendar 后不再在新行的开头打印空格。张翔的补丁。

  • bpo-20491:textwrap.TextWrapper 类现在使用不间断空格。基于 Kaarle Ritvanen 的补丁。

  • bpo-28353:os.fwalk()在断开的链接上不再失败。

  • bpo-25464:pass添加解决 Tix 库错误的方法,在 tkinter.tix 模块中修复了 HList.header_exists()。

  • bpo-28488:shutil.make_archive()不再将条目“ ./”添加到 ZIP 存档中。

  • bpo-24452:使 Web 浏览器支持 Mac OS X 上的 Chrome。

  • bpo-20766:修复了在 SIGINT 处理程序的处理中 pdb 泄漏的引用。

  • bpo-26293:修复了写入不是从文件开头开始的 ZIP 文件的问题。现在,ZIP 文件中的偏移量相对于符合规范的存档开始位置而言。

  • bpo-28321:修复了在 plistlib 中以二进制格式写入非 BMP 字符的问题。

  • bpo-28322:修复了从错误的 pickle 数据中解开 itertools 对象时可能导致的崩溃。基于 John Leitch 的补丁。

  • 使用异常的使用模式,修复 mmap 模块中可能发生的整数溢出和崩溃。

  • bpo-1703178:修复了将–link-objects 选项传递给 distutils build_ext 命令的Function。

  • bpo-28253:极端月份的固定 calendar Function:0001-01 和 9999-12.重新实现了 itermonthdays()和 itermonthdays2()方法,以便它们不会调用 itermonthdates(),而这可能导致 datetime.date 不足/溢出。

  • bpo-28275:修复了在 LZMADecompressor 和 BZ2Decompressor 类的 decompress()方法中释放后可能使用的问题。 John Leitch 的原始补丁。

  • bpo-27897:修复了如果将无效的类似字符串的对象作为名称传递,则在 sqlite3.Connection.create_collation()中可能导致崩溃的问题。张翔的补丁。

  • bpo-18893:修复了 Lib/ctypes/macholib/dyld.py 中无效的异常处理。麦迪逊·梅的修补程序。

  • bpo-27611:固定支持 tkinter.tix 模块中的默认根窗口。

  • bpo-27348:在回溯模块中,恢复异常消息的格式,例如“ Exception:None”。这修复了 3.5a2 中引入的回归。

  • bpo-25651:允许将 false 值用于 subTest()的 msg 参数。

  • bpo-27932:防止 win32_ver()中的内存泄漏。

  • 修复 socket._sendfile_use_sendfile 中的 UnboundLocalError。

  • bpo-28075:在 Windows 实施 os.stat()中检查 ERROR_ACCESS_DENIED。 Eryk Sun 修补程序。

  • bpo-25270:防止在传递空字节串时 codecs.escape_encode()引发 SystemError。

  • bpo-28181:pass HTTPS 获得反重力。 Kaartic Sivaraam 修补程序。

  • bpo-25895:在 urllib.parse.urljoin 中启用 WebSocket URL 方案。 Gergely Imreh 和 Markus Holtermann 制作的补丁。

  • bpo-27599:修复了 binascii.b2a_qp()和 binascii.a2b_qp()中的缓冲区溢出。

  • bpo-19003:m email.generator 现在根据 RFC 仅替换\r和/或\n行尾,而不是所有 unicode 行尾。

  • bpo-28019:itertools.count()不再舍入 1.0 到 2.0 到 1 之间的非整数步。

  • bpo-25969:更新 lib2to3 语法,以处理 3.5 中添加的拆包概括。

  • bpo-14977:mailcap 现在遵守 RFC 1542 要求的 mailcap 文件中各行的 Sequences(“第一个匹配项”)。Michael Lazar 进行了修补。

  • bpo-24594:在打开 MSI 数据库时验证持久性参数

  • bpo-17582:xml.etree.ElementTree 现在保留属性中的空白(由 Duane Griffin 修补.由 Stefan Behnel 审核并批准.)

  • bpo-28047:固定计算新电子邮件策略中用于 base64 CTE 的行长。

  • bpo-27445:不要将 str(_charset)传递给 MIMEText.set_payload()。由 Claude Paroz 修补。

  • bpo-22450:urllib 现在在默认标题中包括Accept: */*标题。这使得 REST API 请求的结果更加一致和可预测,尤其是在涉及代理服务器时。

  • lib2to3.pgen3.driver.load_grammar()现在在给定相同 Grammar.txtImporting 的情况下,在两次运行之间创建一个稳定的缓存文件,而与哈希随机化设置无关。

  • bpo-27570:避免在“ ctypes”和“ array”模块中使用空源指针对零长度的 memcpy()等进行调用。

  • bpo-22233:仅在 RFC 指定的 CR 和 LF 字符上打断电子邮件 Headers 行,而不能在任意 unicode 换行符上打断。这也修复了 HTTPHeaders 解析中的错误。

  • bpo-27988:修复了电子邮件 iter_attachments 不正确的有效载荷列表突变。

  • bpo-27691:修复了 X.509 证书中 ssl 模块对 GEN_RID 使用者替代名称字段的解析。

  • bpo-27850:从 ssl 模块的默认密码列表中删除 3DES,以应对措施 sweet32 攻击(CVE-2016-2183)。

  • bpo-27766:将 ChaCha20 Poly1305 添加到 ssl 模块的默认密码列表中。 (必需的 OpenSSL 1.1.0 或 LibreSSL)。

  • bpo-26470:将 ssl 和 hashlib 模块移植到 OpenSSL 1.1.0.

  • 删除对将文件 Descriptors 传递给 os.access 的支持。它从未奏效,但以前没有提出。

  • bpo-12885:修复 distutils 遇到符号链接时的错误。

  • bpo-27881:修复了设置 sqlite3.Connection.isolation_level 时可能出现的错误。基于张翔的补丁。

  • bpo-27861:修复了工厂创建非游标时 sqlite3.Connection.cursor()崩溃的问题。张翔的补丁。

  • bpo-19884:避免pass Gnu Readline 在 OS X 上进行虚假输出。

  • bpo-27706:使用种子版本 1 恢复字符串种子的 random.Random()。seed()的确定性行为。允许对 random()的调用序列与 Python 2 中获得的序列完全匹配。Nofar Schnider 修补。

  • bpo-10513:修复 Connection.commit()中的回归。提交后不应重置语句。

  • 来自https://github.com/python/typing的新版本 type.py:收藏(仅适用于 3.6)(bpo-27598)。将 FrozenSet 添加到__all__(上游#261)。修复_get_type_vars()中的崩溃(上游#259)。删除 ForwardRef._eval_type(上游#252)中的 dict 约束。

  • bpo-27539:在负指数和负基数的情况下修复未归一化的Fraction.__pow__结果。

  • bpo-21718:cursor.description 现在可用于使用 CTE 的查询。

  • bpo-2466:posixpath.ismount 现在可以正确识别用户没有访问权限的安装点。

  • bpo-27773:更正_ssl.wrap_socket()中的一些内存 Management 错误 server_hostname。

  • bpo-26750:unittest.mock.create_autospec()现在可以正确地用于 property()的子类和其他数据 Descriptors。

  • 在 curses 模块中,如果将 window.getstr()或 window.instr()传递为负值,则会引发错误。

  • bpo-27783:修复了 operator.methodcaller 中未初始化内存的可能使用情况。

  • bpo-27774:修复_sre 中未拥有对象的可能的 Py_DECREF。

  • bpo-27760:修复 binascii.b2a_qp 中可能的整数溢出。

  • bpo-27758:修复了_csv 模块中大记录长度可能发生的整数溢出。

  • bpo-27568:防止 HTTPoxy 攻击(CVE-2016-1000110)。设置 REQUEST_METHOD 环境时,将忽略 HTTP_PROXY 变量,该环境指示脚本处于 CGI 模式。

  • bpo-27656:不要假设 sched.h 定义了任何 SCHED_ *常量。

  • bpo-27130:在“ zlib”模块中,修复压缩和解压缩时对大缓冲区(通常为 4 GiB)的处理。以前,Importing 限制为 4 GiB,并且压缩和解压缩操作无法正确处理 4 GiB 的结果。

  • bpo-27533:在 nt._isdir 中释放 GIL

  • bpo-17711:pass协议 0 的持久性 ID 进行的取消固定。AlexanderVassalotti 的原始修补程序。

  • bpo-27522:避免在 email.feedparser 中意外的参考周期。

  • bpo-26844:修复了 imp.find_module()引用“路径”而不是“名称”的错误消息。 Lev Maximov 修补程序。

  • bpo-23804:修复 SSL 零长度 recv()调用,使其不会阻塞并且不会引发有关 EOF 异常的错误。

  • bpo-27466:更改 http.cookie.time2netscape 返回的时间格式,确认 netscape cookie 格式并使其与文档一致。

  • bpo-26664:pass消除对$的误用来修复 activate.fish。

  • bpo-22115:固定的跟踪 Tkinter 变量:模式错误的 trace_vdelete()不再break跟踪,trace_vinfo()现在始终返回字符串对列表,以“ u”模式进行跟踪现在可以使用。

  • 修复了 importlib.util.LazyLoader 中的范围界定问题,该问题在延迟加载已放入 sys.modules 的模块时触发了 UnboundLocalError。

  • bpo-27079:修复了 curses.ascii 函数的 isblank(),iscntrl()和 ispunct()的问题。

  • bpo-26754:某些函数(compile()等)接受了编码为整数可迭代的文件名参数。现在只接受字符串和类似字节的对象。

  • bpo-27048:当环境变量包含非 ASCII 字符时,防止 distutils 在 Windows 上失败

  • bpo-27330:修复了 ctypes 模块中可能的泄漏。

  • bpo-27238:删除了turtle 模块中的裸露物品。 Jelle Zijlstra 的原始补丁。

  • bpo-27122:当在由 contextlibManagement 的上下文中引发异常时,ExitStack()和其中一个退出堆栈生成器捕获并引发链中的异常,退出时不要重新引发原始异常,让新的链接异常pass。这避免了 issue25782 中描述的 PEP 479错误。

Security

  • bpo-27278:在 Linux 上使用 getrandom()修复 os.urandom()实现。将大小截断为 INT_MAX 并循环,直到我们收集到足够的随机字节为止,而不是直接将 Py_ssize_t 强制转换为 int。

Library

  • bpo-26386:修复了带有项目 ID 包含空格的 ttk.TreeView 选择操作。

Security

  • bpo-22636:避免使用 ctypes.util.find_library()进行 Shell 注入问题。

Library

  • bpo-16182:修复“ readline”模块中的各种Function以使用语言环境编码,并修复 get_begidx()和 get_endidx()以返回代码点索引。

  • bpo-27392:添加 loop.connect_accepted_socket()。吉姆·富尔顿的补丁。

  • bpo-27930:改进了 logging.handlers.QueueListener 的行为。感谢 Paulo Andrade 和 Petr Viktorin 的分析和补丁。

  • bpo-21201:提高了 multiprocessing 错误消息的可读性。感谢 Wojciech Walczak 的补丁程序。

  • bpo-27456:异步:默认情况下设置 TCP_NODELAY。

  • bpo-27906:修复套接字在 TCP 高流量期间接受耗尽的问题。凯文·康威(Kevin Conway)修补程序。

  • bpo-28174:未正确支持 SO_REUSEPORT 时处理。塞思·迈克尔·拉森(Seth Michael Larson)的补丁。

  • bpo-26654:检查 asyncio.Handle .__ repr_中的 functools.partial。 Iceboy 修补程序。

  • bpo-26909:修复 asyncio 中的慢速管道 IO。 INADA Naoki 的补丁。

  • bpo-28176:修复 asyncio.SelectorLoop.sock_connect 中的回调竞赛。

  • bpo-27759:修复 selectors 错误地保留了无效的文件 Descriptors。马克·威廉姆斯的补丁。

  • bpo-28368:如果 child 观察者未连接循环,则拒绝监视进程。 Vincent Michel 修补程序。

  • bpo-28369:将传输的 FD 与 add_reader,add_writer 等一起使用时,引发 RuntimeError。

  • bpo-28370:精确地加速 asyncio.StreamReader.read。 КоренбергМарк的补丁。

  • bpo-28371:弃用传递给 arun_in_executor 的 asyncio.Handle。

  • bpo-28372:修复 asyncio 以支持非 Python 协程的格式。

  • bpo-28399:绑定前,请从 FS 中删除 UNIX 套接字。 КоренбергМарк的补丁。

  • bpo-27972:禁止任务 await 自己。

  • bpo-26923:修复 asyncio.Gather 拒绝所有子项完成后被取消。 Johannes Ebke 的补丁。

  • bpo-26796:不要配置默认线程池执行程序的工作程序数量。 Hans Lawrenz 的最初补丁。

  • bpo-28600:优化 loop.call_soon()。

  • bpo-28613:如果从协程/回调调用,则修复 get_event_loop()返回当前循环。

  • bpo-28639:修复 inspect.isawaitable 以始终返回 Justin Mayfield 的 bool 补丁。

  • bpo-28652:make 循环方法拒绝它们不支持的套接字类型。

  • bpo-28653:修复 functools.lru_cache 中的刷新。

  • bpo-28703:修复 asyncio.iscoroutine 函数以处理 Mock 对象。

  • bpo-24142:读取损坏的配置文件使解析器处于无效状态。 FlorianHöch 的原始补丁。

  • bpo-28990:如果握手之前关闭连接,则修复 SSL 挂起。 (HoHo-Ho 修补程序)

IDLE

  • bpo-15308:在 Shell 菜单中添加“break执行”(^ C)。 Roger Serwy 修补程序,Bayard Randel 更新。

  • bpo-27922:从屏幕上的“闪烁” GUI 小部件停止 IDLE 测试。

  • 将版本添加到“ IDLE 帮助”窗口的标题。

  • bpo-25564:在“ IDLE –控制台差异”部分中,提到使用 exec 意味着为每个语句定义了__builtins__。

  • bpo-27714:现在,在同一进程中重新运行时,text_textview 和 test_autocomplete pass。如果在使用-w 选项但不使用-jn 的情况下运行 test_idle 失败,则会发生这种情况。修复来自 test_config 的警告。

  • bpo-25507:IDLE 不再由于其 tkinter 导入而运行错误代码。用户必须包含直接在 Python 中运行所需的相同导入。

  • bpo-27452:将行计数器和 crc 添加到 IDLE configHandler 测试转储中。

  • bpo-27365:允许 IDLE NEWS.txt 中的非 ASCII 字符用作贡献者名称。

  • bpo-27245:IDLE:干净删除自定义主题和按键绑定。以前,从控制台或pass导入启动 IDLE 时,会发出一系列警告。 Serhiy Storchaka 修补程序。

C API

  • bpo-28808:PyUnicode_CompareWithASCIIString()现在永远不会引发异常。

  • bpo-26754:PyUnicode_FSDecoder()接受了编码为整数可迭代的文件名参数。现在仅接受字符串和类似字节的对象。

Documentation

  • bpo-28513:已记录的 zipfile 命令行界面。

Tests

  • bpo-28950:在重新测试命令行参数中禁止将-j0 与-T/-l/-M 组合使用。

  • bpo-28666:现在,test.support.rmtree 能够删除不可写或不可读的目录。

  • bpo-23839:现在,在运行每个测试文件之前,将清除各种缓存。

  • bpo-28409:regrtest:修复命令行参数的解析器。

  • bpo-27787:在检查每个测试是否有“悬挂线程”之前,请调用 gc.collect(),因为悬挂线程是弱引用。

  • bpo-27369:在 test_pyexpat 中,避免测试在 Expat 2.2.0 中更改的错误消息详细信息。

Tools/Demos

  • bpo-27952:获取可与 Python 3 和当前“ re”模块一起使用的 Tools/scripts/fixcid.py,避免使用无效的 Python 反斜杠转义符,并修复解析转义的 C 引号引起的错误。

  • bpo-27332:修复了由 Argument Clinic 生成的模块级函数的第一个参数的类型。 Petr Viktorin 修补程序。

  • bpo-27418:修复了 Tools/importbench/importbench.py。

Windows

  • bpo-28251:改进了 Windows 上的帮助手册。

  • bpo-28110:launcher.msi 在 32 位和 64 位之间具有不同的产品代码

  • bpo-25144:在 continue 自定义安装之前,请确保已设置 TargetDir。

  • bpo-27469:将 Shell 扩展添加到启动器,以便正确进行拖放。

  • bpo-27309:在 python [w] .exeLists 中启用了正确的 Windows 样式。

Build

  • bpo-29080:从 PCBuild/build.bat 中删除对 hg.exe 的硬依赖性

  • bpo-23903:向 PC/python3.def 添加了丢失的名称。

  • bpo-10656:修复 AIX 上的树外构建。 Tristan Carel 和 Michael Haubenwallner 的补丁。

  • bpo-26359:将–with-optimizations 重命名为–enable-optimizations。

  • bpo-28444:修正交叉编译时缺少的扩展模块。

  • bpo-28248:更新 Windows 版本和 OS X 安装程序以使用 OpenSSL 1.0.2j。

  • bpo-28258:使用爱沙尼亚语言环境(Makefile 中的 python-config 和 distclean 目标)修复了构建。由 Arfrever Frehtes Taifersar Arahesis 修补的补丁。

  • bpo-26661:setup.py 现在使用多体系结构包装程序检测系统 libffi。

  • bpo-28066:修复了在源代码树之外进行构建时在生成目录中搜索生成的包含文件的逻辑。

  • bpo-15819:删除多余的包含搜索目录选项,用于在源树之外进行构建。

  • bpo-27566:修复冻结的 makefile 中的干净目标(Lisa Roach 修补程序)

  • bpo-27705:validate_ucrtbase.py 中的更新消息

  • bpo-27983:当按要求使用 clang 来使 PGO 链接成为配置时间错误而不是在启用–with-optimizations 时花费时间时,会导致缺少 llvm-profdata 工具。还可以提高我们在 MacOS 和某些 Linux 上查找 llvm-profdata 工具的能力。

  • bpo-26307:现在,profile-opt 构建将 PGO 应用于内置模块。

  • bpo-26359:添加–with-optimizations 配置标志。

  • bpo-27713:在更新 importlib 的引导文件时,禁止虚假生成警告。张翔的补丁

  • bpo-25825:更正对 AIX 上必需的对 Modules/python.exp 和 ld_so_aix 的引用。这将更新对在 3.2a4 中更改的安装路径的引用,并撤消对 3.5.0a1 中所做的对构建树的更改的引用。

  • bpo-27453:configure 中的 CPP 调用必须使用 CPPFLAGS。志轩 Y 的补丁。

  • bpo-27641:配置脚本现在将 Comments 插入到 makefile 中,以防止 pgen 和_freeze_importlib 可执行文件被交叉编译。

  • bpo-26662:在配置中将 PYTHON_FOR_GEN 设置为在生成过程中用于文件生成的 Python 程序。

  • bpo-10910:避免在 FreeBSD 和 OS X 上出现 C 编译错误。还要更新 FreedBSD 版本检查以获取原始 ctype UTF-8 解决方法。

  • bpo-28676:防止在 macOS 上丢失“ getentropy”语句警告。 Gareth Rees 的补丁。

Python 3.5.2 finally版

*发布日期:2016-06-26 *

核心和内建函数

  • bpo-26930:更新 Windows 版本以使用 OpenSSL 1.0.2h。

Tests

  • bpo-26867:默认情况下强制启用 Ubuntu 的 openssl OP_NO_SSLv3;修复测试。

IDLE

  • bpo-27365:在 idlelib/NEWS.txt 中允许非 ascii-3.5.2 的最小部分。

Python 3.5.2 发行候选 1

*发布日期:2016-06-12 *

核心和内建函数

  • bpo-27066:如果自定义打开器(对于 open())返回负数而未设置异常,则修复了 SystemError。

  • bpo-20041:固定 frame.f_trace 设置为“无”时发生 TypeError。 Xavier de Gaye 的补丁。

  • bpo-26168:修复了使用“ N”格式单位的 Py_BuildValue()失败时可能发生的刷新。

  • bpo-26991:在创建带 Comments 的函数时修复可能的刷新。

  • bpo-27039:修复了 bytearray.remove()的值大于 127 的问题。Joe Jevnik 进行了修补。

  • bpo-23640:int.from_bytes()不再绕过子类的构造函数。

  • bpo-26811:gc.get_objects()不再包含带有 NULL 指针的损坏的 Tuples。

  • bpo-20120:使用 RawConfigParser 进行.pypirc 解析,删除对插入到 Python 3 中无意添加的插值的支持。行为不再对.pypirc 文件进行任何插值,在 Python 2.7 和 Setuptools 19.0 中匹配行为。

  • bpo-26659:使内置切片类型支持循环收集。

  • bpo-26718:super .__ init_如果多次调用,将不再泄漏内存。注意:不支持直接调用 super .__ init__!

  • bpo-25339:在为 stdin 和 stdout 设置错误处理程序时,PYTHONIOENCODING 现在具有优先于语言环境的权限。

  • bpo-26494:修复了迭代耗尽的迭代器时的崩溃。受影响的类是通用序列迭代器,str,字节,字节数组,列表,Tuples,集合,frozenset,dict,OrderedDict,对应视图和 os.scandir()迭代器的迭代器。

  • bpo-26581:如果在 Python 源代码文件中的一行上多次指定了编码 cookie,则仅考虑第一个。

  • bpo-26464:当字符串为 ASCII 且第一次替换将删除字符时修复 str.translate(),但下一次替换将使用非 ASCII 字符或长度超过 1 个字符的字符串。 Python 3.5.0 中引入的回归。

  • bpo-22836:即使格式化它们会产生次要错误,也要确保来自 PyErr_Display()和 PyErr_WriteUnraisable()的异常报告是合理的。这会影响 sys .__ excepthook __()以及__del __()引发异常时生成的报告。

  • bpo-26302:纠正行为以拒绝逗号作为 cookie 名称的合法字符。

  • bpo-4806:在函数调用中使用星号(*)拆包时,避免掩盖原始 TypeError 异常。基于 HagenFürstenau 和 Daniel Urban 的补丁。

  • bpo-27138:修复 FileFinder.find_spec()的文档 Comments。

  • bpo-26154:添加一个新的私有_PyThreadState_UncheckedGet()函数以获取当前的 Python 线程状态,但是如果它为 NULL,则不会发出致命错误。必须使用此新函数,而不是直接访问_PyThreadState_Current 变量。从 Python 3.5.1 开始,不再隐藏该变量以隐藏原子 C 类型的确切实现,以避免编译器问题。

  • bpo-26194:Deque.insert()对于已达到最大大小的有界 deque 给出了奇怪的结果。现在,当try插入完整的 deque 时,将引发 IndexError。

  • bpo-25843:在编译代码时,如果常量相等但类型不同,则不要合并常量。例如,现在已将f1, f2 = lambda: 1, lambda: 1.0正确编译为两个不同的函数:f1()返回1(int)和f2()返回1.0(int),即使11.0相等。

  • bpo-22995:[更新]由于在基于 Cython 的项目中观察到了回归,因此请 Comments 掉_PyObject_GetState()中的一种可腌制性测试。

  • bpo-25961:类型名称中不允许使用空字符。

  • bpo-25973:修复无效的 nonlocal 语句绑定以两个下划线开头的名称时的段错误。

  • bpo-22995:状态类型不是 list 或 dict 的子类并且没有实现任何与 pickle 相关的方法(reduce reduce_ex getnewargs getnewargs_ex_或__getstate)的扩展类型实例,将无法再被腌制。包括 memoryview。

  • bpo-20440:用特殊宏 Py_SETREF 大量替换不安全的属性设置代码。

  • bpo-25766:特殊方法__bytes __()现在可在 str 子类中使用。

  • bpo-25421:内置类型的__sizeof_方法现在使用动态基本大小。这使 sys.getsize()可以正确地使用已定义__slots_的子类。

  • bpo-25709:修复了就地字符串连接和 utf-8 缓存的问题。

  • bpo-27147:在 importlib 文档中提及 PEP 420

  • bpo-24097:如果在__getattr_中释放了插槽名称,则修复了 object .__ reduce __()崩溃的问题。

  • bpo-24731:修复了使用特殊方法__bytes trunc_和__float_转换对象时将崩溃的问题,这些返回方法将 byte,int 和 float 的子类的实例返回到 byte,int 和 float 的子类。

  • bpo-26478:修复在字典视图和 Tuples 中使用二进制运算符时的语义错误。

  • bpo-26171:修复 zipimporter.get_data()中可能的整数溢出和堆损坏。

  • bpo-25660:使用 readline 修复 REPL 中的 TAB 键行为。

  • bpo-25887:多次 await 协程对象时引发 RuntimeError。

  • bpo-27243:更新__aiter_协议:应该直接返回异步迭代器,而不是返回解析为异步迭代器的 awaitable。前者将触发 PendingDeprecationWarning。

Security

  • bpo-26556:将 expat 更新为 2.1.1,修复了 CVE-2015-1283.

  • 修复 smtplib 中的 TLS 剥离漏洞 CVE-2016-0772. Oststrom 团队报道

Library

  • bpo-21386:实现缺少的 IPv4Address.is_global 属性。自 07a5610bae9d 起已记录在案。 Roger Luethi 的最初补丁。

  • bpo-20900:distutils register 命令现在可以正确解码 HTTP 响应。最初的补丁来自 ingrid。

  • 新版本的 Typeing.py 提供了一些新的类和Function:存根之外的@overload,可逆,DefaultDict,文本,ContextManager,Type [],NewType(),TYPE_CHECKING 和许多错误修复(请注意,一些新Function是在 mypy 或其他静态分析器中尚未实现)。还添加了 PEP 492的类(Awaitable,AsyncIterable,AsyncIterator)(实际上,它们已进入 3.5.1,但从未提及)。

  • bpo-25738:阻止 http.server.BaseHTTPRequestHandler.send_error()发送 205 重置内容的消息正文。另外,不要在没有正文的响应中发送 ContentHeaders 字段。 Susumu Koshiba 修补程序。

  • bpo-21313:修复 sys.version 包含截断的构建信息时允许的“平台”模块。

Security

  • bpo-26839:在 Linux 上,如果尚未初始化 urandom 熵池,则os.urandom()现在用GRND_NONBLOCK调用getrandom()以退回/dev/urandom。由 Colm Buckley 编写的补丁。

Library

  • bpo-27164:在 zlib 模块中,允许使用 sched 义的 zdict 解压缩原始 Deflate 流。基于张翔的补丁。

  • bpo-24291:修复 wsgiref.simple_server.WSGIRequestHandler 以将数据完全写入 Client 端。以前,它可以进行部分写入和截断数据。此外,wsgiref.handler.ServerHandler 现在可以处理 stdout 进行部分写入,但是已弃用此方法。

  • bpo-26809:将__all__添加到string。伊曼纽尔·巴里(Emanuel Barry)的补丁。

  • bpo-26373:现在,在更多/所有情况下调用.communicate()之前,子进程死亡时,subprocess.Popen.communicate 现在可以正确忽略 BrokenPipeError。

  • bpo-21776:distutils.upload 现在可以正确处理 HTTPError。 Claudiu Popa 的最初补丁。

  • bpo-27114:修复 SSLContext._load_windows_store_certs 失败,并出现 PermissionError

  • bpo-18383:在使用 filterwarnings 和 simplefilter 时,避免创建重复的过滤器。基于 Alex Shkop 的补丁。

  • bpo-27057:修复了 Android 上的 os.set_inheritable(),ioctl()被 SELinux 阻止了,并因 EACCESS 而失败。该函数现在回退到 fcntl()。 MichałBednarski 撰写的补丁。

  • bpo-27014:使用 typing。py 修复无限递归。感谢 Kalle Tuure!

  • bpo-14132:当目标仅具有查询字符串时,修复 urllib.request 重定向处理。 JánJanech 的原始修复程序。

  • bpo-17214:“ urllib.request”模块现在对在重定向目标 URL 中找到的非 ASCII 字节进行百分比编码。一些服务器使用非 ASCII 字节发送位置 Headers 字段,但是“ http.client”要求请求目标必须是 ASCII 编码的,否则会引发 UnicodeEncodeError。基于 Christian Heimes 的补丁。

  • bpo-26892:urllib.request.HTTPHandler 中的 Honor debuglevel 标志。智轩颜贡献的补丁。

  • bpo-22274:在子流程模块中,即使未重定向 stdout,也允许将 stderr 重定向到 stdout。李晃晃的补丁。

  • bpo-26807:文件末尾的 readline 上的 mock_open'files'不再错误。来自 Yolanda Robla 的补丁。

  • bpo-25745:修复了 curses 面板析构函数中的 userptr 泄漏。

  • bpo-26977:删除了不必要的,并忽略了对 statistics.pvariance 中的平方和助手的调用。

  • bpo-26881:modulefinder 模块现在支持扩展的操作码参数。

  • bpo-23815:修复了与直接在_tkinter 和 curses.panel 模块中创建的类型的实例有关的崩溃。

  • bpo-17765:weakref.ref()不再静默忽略关键字参数。 Georg Brandl 的补丁。

  • bpo-26873:xmlrpc 现在在不受支持的类型标记上引发 ResponseError,而不是静默返回错误结果。

  • bpo-26711:修复了 plistlib.Data 与其他类型的比较。

  • bpo-24114:修复ctypes.util中的未初始化变量。仅当 ctypes 实现搜索crle程序时,该错误才出现在 SunOS 上。张翔的补丁。 Kees Bos 在 SunOS 上进行了测试。

  • bpo-26864:在 urllib.request 中,将对 no_proxy 进行检查的代理绕过主机更改为不区分大小写,并且不匹配碰巧以绕过主机名作为后缀的不相关主机名。张翔的补丁。

  • bpo-26634:recursive_repr()现在设置包装器的__qualname__。张翔的补丁。

  • bpo-26804:urllib.request 将优先使用小写的代理环境变量,而不是 UPPER_CASE 或 Mixed_Case 变量。补丁由 Hans-Peter Jansen 提供。

  • bpo-26837:assertSequenceEqual()现在可以正确输出非字符串化的不同项目(例如-b 模式中的字节)。这会影响 assertListEqual()和 assertTupleEqual()。

  • bpo-26041:从 platform.dist()和 platform.linux_distribution()的弃用消息中删除“将在 Python 3.7 中删除”。 Kumaripaba Miyurusara Athukorala 修补程序。

  • bpo-26822:itemgetter,attrgetter 和 methodcaller 对象不再静默忽略关键字参数。

  • bpo-26733:现在,拆卸类将拆卸类和静态方法。张翔的补丁。

  • bpo-26801:修复shutil.get_terminal_size()中的错误处理,捕获AttributeError而不是NameError。伊曼纽尔·巴里(Emanuel Barry)编写的补丁。

  • bpo-24838:tarfile 的 ustar 和 gnu 格式现在可以正确计算 utf-8 等多字节字符编码的名称和链接字段限制。

Security

  • bpo-26657:在 Windows 上使用 http.server 修复目录遍历漏洞。这修复了在 3.3.4rc1 和 3.4.0rc1 中引入的回归。基于 Philipp Hagemeister 的补丁。

Library

  • bpo-26717:停止使用 UTF-8 编码拉丁文 1 化的 WSGI 路径。 Anthony Sottile 修补程序。

  • bpo-26735:读取超过 1,024 字节时,在 Solaris 11.3 和更高版本上修复os.urandom():多次调用getrandom(),每次调用限制为 1024 字节。

  • bpo-16329:将.webm 添加到 mimetypes.types_map。 Giampaolo Rodola 发布的补丁。

  • bpo-13952:将.csv 添加到 mimetypes.types_map。 Geoff Wilson 的补丁。

  • bpo-26709:修复了 Y2038 加载二进制 PLists 的问题。

  • bpo-23735:pass安装我们自己的 SIGWINCH 处理程序来处理使用 Readline 6.3 调整终端大小的操作。由 Eric Price 修补。

  • bpo-26586:在 http.server 中,如果要解析的头字段太多,则响应“ 413 请求头字段太大”,而不是终止连接并引发未处理的异常。张翔的补丁。

  • bpo-22854:更改 BufferedReader.writable()和 BufferedWriter.visible()以始终返回 False。

  • bpo-25195:修复了 ock.MagicMock 中的回归。 Call 是 Tuples 的子类(changeset 3603bae63c13 仅适用于类),因此我们需要自己实现__ne_。 Andrew Plummer 的补丁。

  • bpo-26644:将负长度传递给 SSLSocket.recv()或 read()时,引发 ValueError 而不是 SystemError。

  • bpo-23804:修复 SSL recv(0)和 read(0)方法,以返回零字节,而不是返回 1024.

  • bpo-26616:修复了 datetime.astimezone()方法中的错误。

  • bpo-21925warnings.formatwarning()现在在linecache.getline(...)上捕获异常,以便能够记录在 Python 关闭过程中延迟发出的ResourceWarning

  • bpo-24266:现在,在使用 Readline 7 进行编译时,在 Readline 历史记录搜索期间按 Ctrl C 可以取消搜索模式。

  • bpo-26560:避免在 BaseHandler.start_response 中发生潜在的 ValueError。 Peter Inglesby 的最初补丁。

Security

  • bpo-26313:如果 Windows 证书存储为空,则 ssl.py _load_windows_store_certs 失败。由 Baji 修补。

Library

  • bpo-26569:修复了pyclbr.readmodule()pyclbr.readmodule_ex()以支持导入程序包。

  • bpo-26499:说明 HTTPResponse.readline()和 read1()中剩余的 Content-Length。基于 Silent Ghost 的补丁。还要证明 HTTPResponse 现在支持这些方法。

  • bpo-25320:处理目录 unittest 发现正在扫描的套接字。 Victor van den Elzen 的补丁。

  • bpo-16181:cookieyear.http2time()现在返回空值,如果年份大于 datetime.MAXYEAR。

  • bpo-26513:修复 Windows Server 的平台模块检测

  • bpo-23718:固定解析时间,即 1 月 1 日之前的第 0 周。TamásBence Gedai 的原始补丁。

  • bpo-20589:现在在 Windows 上调用 Path.owner()和 Path.group()会引发 NotImplementedError 而不是 ImportError。

  • bpo-26177:修复了 Canvas 和 Scrollbar 小部件的 keys()方法。

  • bpo-15068:消除了文件 Importing 模块中过多的缓冲。 bufsize 参数不再使用。

  • bpo-2202:修复 AbstractDigestAuthHandler.get_algorithm_impls 中的 UnboundLocalError。 Mathieu Dupuy 的最初补丁。

  • bpo-25718:固定的 Pickling 和复制具有 total 的 accumulate()迭代器为 None。

  • bpo-26475:使用(?x)标志修复了正则表达式的调试输出。

  • bpo-26457:修复了finally结果前缀长度等于最大前缀长度时 IP 网络类中的 subnets()方法。基于张翔的补丁。

  • bpo-26385:如果 NamedTemporaryFile()中的内部 open()调用失败,则删除文件。沉默鬼的补丁。

  • bpo-26402:修复了 XML-RPCClient 端在服务器关闭持久连接时重试的问题。这是与 3.5.0a4 中新的 http.client.RemoteDisconnected 异常相关的回归。

  • bpo-25913:在 base64.a85decode()中,adobe = True 现在可以选择前导<~。 Swati Jaiswal 修补程序。

  • bpo-26186:删除 importlib.util.LazyLoader 中的无效类型检查。

  • bpo-26367:当指定level但未指定附带包时,importlib .__ import ()会引发系统错误,如 Builtins . import __()。

  • bpo-26309:在“ socketserver”模块中,当 verify_request()返回 false 时,关闭请求(关闭连接的套接字)。 Aviv Palivoda 修补程序。

Security

  • bpo-25939:在 Windows 上,在 ssl.enum_certificates 中以只读方式打开证书存储。

Library

  • bpo-25995:os.walk()不再使用与树深度成比例的 FD。

  • bpo-26117:os.scandir()迭代器现在不仅可以在迭代完成时关闭文件 Descriptors,而且可以在由于错误而失败时关闭文件 Descriptors。

  • bpo-25911:在 Windows 上的 os.walk()中恢复了对字节路径的支持。

  • bpo-26045:使用 http.client 发布非拉丁 1 字符串时,在错误消息中添加 UTF-8 建议。

  • bpo-12923:即使有异常,也要重置 FancyURLopener 的重定向计数器。基于 Brian Brazil 和 Daniel Rocco 的补丁。

  • bpo-25945:修复了以错误状态释放 functools.partial 对象时导致的崩溃。修复了失败的 functools.partial 构造函数中的泄漏。现在,functools.partial 的“ args”和“ keywords”属性始终始终对应地 ImportingTuples 和 dict。

  • bpo-26202:copy.deepcopy()现在可以正确复制具有非原子属性的 range()对象。

  • bpo-23076:如果使用无效模式调用 Path.glob(),则会引发 ValueError。 Thomas Nyberg 修补程序。

  • bpo-19883:修复了 zipimport 中可能出现的整数溢出的情况。

  • bpo-26227:在 Windows 上,套接字模块的 getnameinfo(),gethostbyaddr()和 gethostbyname_ex()函数现在从 ANSI 代码页而不是 UTF-8 解码主机名。

  • bpo-26147:xmlrpc 现在可用于使用非 UTF-8 编码无法编码的字符串。

  • bpo-25935:垃圾收集器现在使用 OrderedDict break引用循环。

  • bpo-16620:已修复 msilib.Directory.glob()中的 AttributeError。

  • bpo-26013:增加了与旧 Python 3 版本(3.4.3 及更低版本)中创建的协议 2pickle 的兼容性。

  • bpo-25850:对于 64 位 Windows,默认情况下使用交叉编译。

  • bpo-17633:改进 zipimport 对名称空间包的支持。

  • bpo-24705:修复 sysconfig._parse_makefile 不扩展${} var 出现在$()vars 之前的情况。

  • bpo-22138:修补 Descriptors 时修复了 mock.patch 行为。修补后恢复原始值。补丁由 Sean McCully 提供。

  • bpo-25672:在安全的情况下,请在 ssl 模块中启用 SSL_MODE_RELEASE_BUFFERS 模式选项。

  • bpo-26012:不要遍历 pathlib.Path。[r] glob()中**模式的符号链接。

  • bpo-24120:使用 pathlib.Path。[r] glob()遍历树时,请忽略 PermissionError。 Ulrich Petri 修补程序。

  • bpo-25447:如果 fileinput 没有缓冲区属性,则它按原样使用 sys.stdin(恢复向后兼容性)。

  • bpo-25447:现在,复制 lru_cache()包装器对象始终有效,而与包装对象的类型无关(pass返回原始对象不变)。

  • bpo-24103:修复了在 ElementTree.XMLPullParser 中免费使用后的可能。

  • bpo-25860:发生错误时,os.fwalk()不再跳过其余目录。 Samson Lee 的原始补丁。

  • bpo-25914:固定和简化的 OrderedDict .__ sizeof__。

  • bpo-25902:修复了 ElementTree 迭代中的各种引用计数问题。

  • bpo-25717:恢复打开文件时容许大多数 fstat()错误的以前的行为。这是 3.5a1 中的回归,在特殊情况下阻止了匿名临时文件的工作。

  • bpo-24903:修复在指定“ -d”时 compileall 接受的参数数量的回归。对参数数量的检查已被完全删除,因为它始终无法正常工作。

  • bpo-25764:在子流程模块中,保留使用 preexec_fn 时 fork()故障引起的任何异常。

  • bpo-6478:_strptime 的 regexp 缓存现在在pass time.tzset()更改时区后被重置。

  • bpo-14285:使用“ python -m 软件包”选项执行软件包时,软件包初始化失败,现在报告正确的回溯。现在,“ runpy”模块允许将程序包初始化中的异常传递回调用者,而不是引发 ImportError。

  • bpo-19771:同样在 runpy 和“ -m”选项中,如果甚至无法初始化该软件包(例如由于错误的*.pyc文件),则忽略不相关的消息“…是一个软件包,无法直接执行”。

  • bpo-25177:解决了非常小和非常大的数字均值的问题。副作用是,statistics.mean 和 statistics.variance 应该明显更快。

  • bpo-25718:固定复制状态为布尔值的对象为 false。

  • bpo-10131:修复了迷你文档的深度复制。基于 Marian Ganisin 的补丁。

  • bpo-25725:修复了当取消对包括 Tuples 指令的无效数据进行分析时,在 pickle.loads()中的参考泄漏。

  • bpo-25663:在 Readline 完成程序中,避免列出重复的全局名称,并在搜索内建函数之前搜索全局名称空间。

  • bpo-25688:修复了 ElementTree.iterparse()中的文件泄漏引发错误。

  • bpo-23914:修复了由取消选取器处理的腌制数据损坏引发的 SystemError。

  • bpo-25691:修复了删除 ElementTree.Element 属性时崩溃的问题。

  • bpo-25624:ZipFile 现在始终为目录条目写入 ZIP_STOREDHeaders。王鼎元的补丁。

  • 如果主机已解析,请跳过 getaddrinfo。 A. Jesse Jiryu Davis 的补丁。

  • bpo-26050:添加 asyncio.StreamReader.readuntil()方法。 МаркКоренберг修补程序。

  • bpo-25924:避免在 OS X 10.5 或更高版本上对 getaddrinfo(3)调用进行不必要的序列化。 A. Jesse Jiryu Davis 的原始补丁。

  • bpo-26406:避免在当前版本的 OpenBSD 和 NetBSD 上对 getaddrinfo(3)调用进行不必要的序列化。 A. Jesse Jiryu Davis 的补丁。

  • bpo-26848:修复 asyncio/subprocess.communicate()以处理空 Importing。 Jack O'Connor 修补程序。

  • bpo-27040:添加 loop.get_exception_handler 方法

  • bpo-27041:异步:添加 loop.create_future 方法

  • bpo-27223:异步:修复_read_ready 和_write_ready 以尊重_conn_lost。 ŁukaszLanga 修补程序。

  • bpo-22970:异步:修复取消不一致的 Condition.wait。 David Coles 修补程序。

IDLE

  • bpo-5124:粘贴了所选文本的粘贴现在替换 X11 上的选择。这与粘贴在 Windows,Mac,大多数现代 Linux 应用程序和 ttk 小部件上的工作方式匹配。 Serhiy Storchaka 的原始补丁。

  • bpo-24759:在 idlelib.idle_test .__ init_中明确说明该目录是 test.test_idle 的私有实现,也是维护人员的工具。

  • bpo-27196:运行 IDLE 测试时停止“ ThemeChanged”警告。在其他警告在#20567 中被取消后,这些问题仍然存在。将 Serhiy Storchaka 的 update_idletasks 解决方案应用于四个测试文件。将此其他建议记录在 idle_test/README.txt 中

  • bpo-20567:修改 idle_test/README.txt,其中包含有关避免测试中出现 tk 警告消息的建议。将建议应用于几个 IDLE 测试。

  • bpo-27117:使着色器 htest 和 turtledemo 与深色主题配合使用。将用于配置文本小部件颜色的代码移动到新Function。

  • bpo-26673:当 tk 报告字体大小为 0 时,更改为大小 10.在 Linux 上,此类字体阻止打开配置对话框。

  • bpo-21939:添加对 IDLE 渗滤器的测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-21676:添加 IDLE 替换对话框的测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-18410:为 IDLE 的搜索对话框添加测试。 WestleyMartínez 的原始补丁。

  • bpo-21703:为 IDLE 的撤消委派者添加测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-27044:添加 ConfigDialog.remove_var_callbacks 以停止内存泄漏。

  • bpo-23977:向 test_delegator 添加更多 assert。

  • bpo-20640:添加对 idlelib.configHelpSourceEdit 的测试。 Saimadhav Heblikar 修补程序。

  • 在 IDLE 文档的“ IDLE-控制台差异”部分中,阐明使用 IDLE 运行会如何影响 sys.modules 和标准流。

  • bpo-25507:修复了 IOBinding 中的错误更改,该更改阻止了打印。增强 IOBinding htest 以包括所有主要的 IOBinding Function。

  • bpo-25905:将 README.txt 中不需要的'转换为'右单引号,然后用'ascii'打开它和 NEWS.txt。将 CREDITS.txt 重新编码为 utf-8,并使用“ utf-8”将其打开。

Documentation

  • bpo-19489:将搜索框从侧边栏移动到每个页面的页眉和页脚。由 Ammar Askar 修补。

  • bpo-24136:记录新的 PEP 448解包语法 3.5.

  • bpo-26736:如果可能,在文档中使用 HTTPS 进行外部链接。

  • bpo-6953:重做 Readline 模块文档以将相关Function分组在一起,并添加更多详细信息,例如访问哪些基本 Readline 函数和变量。

  • bpo-23606:在有关 cdll.msvcrt 的 ctypes 文档中添加 Comments。

  • bpo-25500:修正文档以免语句在全局范围内搜索__import__。

  • bpo-26014:更新 3.x 打包文档:旧页面中现在提供了指向新文档的“另请参阅”链接到 setuptools 文档的链接已更新

Tests

  • bpo-21916:添加了对 turtle 模块的测试。 ingrid,Gregory Loyse 和 Jelle Zijlstra 的补丁。

  • bpo-26523:未经测试的 multiprocessing 线程池(multiprocessing.dummy.Pool)。

  • bpo-26015:添加了对可变序列的迭代器进行腌制的新测试。

  • bpo-26325:添加了 test.support.check_no_resource_warning()以检查是否未发出 ResourceWarning。

  • bpo-25940:将 test_ssl 更改为使用 self-signed.pythontest.net。这样可以避免依赖 svn.python.org,后者最近更改了根证书。

  • bpo-25616:将 OrderedDict 的测试从 test_collections 中提取到单独的文件 test_ordered_dict 中。

  • bpo-26583:如果无法写入字节码文件,请跳过 test_import 中的 test_timestamp_overflow。

Build

  • bpo-26884:修复了交叉扩展的扩展模块链接。 Xavier de Gaye 的补丁。

  • bpo-22359:交叉编译时,禁用运行_freeze_importlib 和 pgen 的规则。这些程序的输出通常无论如何都与源代码一起保存,并且在进行本机构建时仍会重新生成。 Xavier de Gaye 的补丁。

  • bpo-27229:修复了树内构建的交叉编译 pgen 规则。 Xavier de Gaye 的补丁。

  • bpo-21668:将 audioop,_datetime,_ctypes_test 模块链接到 libm(在 Mac OS X 上除外)。由 Xavier de Gaye 编写的补丁。

  • bpo-25702:添加了–with-lto 配置选项,该选项将在 make profile-opt 期间的构建时启用链接时间优化。众所周知,某些编译器和工具链在使用 LTO 时不会生成稳定的代码,因此请务必在对其进行彻底测试之前对其进行测试。与仅使用 profile-opt 相比,它可以提供百分之几的速度提升。

  • bpo-26624:添加对 ucrtbase [d] .dll 版本的验证,并带有旧版本的警告。

  • bpo-17603:pass对 struct stat 中的 st_blocks 使用较低级别的检查来避免有关 fileblocks.o 文件不存在的错误。

  • bpo-26079:修复了 tix-8.4.3.6 的构建输出文件夹。 Bjoern Thiel 修补程序。

  • bpo-26465:更新 Windows 版本以使用 OpenSSL 1.0.2g。

  • bpo-24421:在构建扩展之前,先编译 Modules/_math.c。以前,如果 math 和 cmath 构建同时进行,则可能无法正确编译。

  • bpo-25348:为PCbuild\build.bat添加了--pgo--pgo-job参数,以使用 Profile-Guided Optimization 进行构建。旧的PCbuild\build_pgo.bat脚本现已弃用,仅调用PCbuild\build.bat --pgo %*

  • bpo-25827:将对使用 ICC 进行构建的支持添加到configure,包括新的--with-icc标志。

  • bpo-25696:使用 make -j9 修复 UNIX 上的 Python 安装。

  • bpo-26930:更新 OS X 10.5 仅 32 位安装程序以构建并与 OpenSSL 1.0.2h 链接。

  • bpo-26268:更新 Windows 版本以使用 OpenSSL 1.0.2f。

  • bpo-25136:支持 Apple Xcode 7 的新文本 SDK 存根库。

  • bpo-24324:当使用 gcc 时,不要启用无法访问的代码警告,因为该选项在旧版 gcc 中无法正常工作,并且从 gcc-4.5 起已被静默删除。

Windows

  • bpo-27053:更新 make_zip.py 以正确生成库 ZIP 文件。

  • bpo-26268:更新 prepare_ssl.py 脚本以处理不包含 include 目录(即 1.0.2e 及更高版本)内容的 OpenSSL 版本。

  • bpo-26071:bdist_wininst 创建的二进制文件无法启动并找到 32 位 Python

  • bpo-26073:更新启动器中的魔幻数字列表

  • bpo-26065:生成嵌入式发行版时从库中排除 venv。

Tools/Demos

  • bpo-26799:修复了 python-gdb.py:加载 Python 代码时不会一次获得 C 类型,而是按需获得 C 类型。如果在 Python 可执行文件之前加载 python-gdb.py,则 C 类型可以更改。 Thomas Ilsche 编写的补丁。

  • bpo-26271:修复“冻结”工具以正确使用pass configure 传递的标志。 Daniel Shaulov 修补程序。

  • bpo-26489:将字典解压缩支持添加到 Tools/parser/unparse.py。郭慈 Te 的补丁。

  • bpo-26316:在 Argument Clinic 中修复变量名称拼写错误。

Windows

Python 3.5.1 finally版

*发布日期:2015-12-06 *

核心和内建函数

  • bpo-25709:修复了就地字符串连接和 utf-8 缓存的问题。

Windows

  • bpo-25715:Python 3.5.1 安装程序显示错误的升级路径和用于启动程序检测的错误逻辑。

Python 3.5.1 发行候选 1

*发布日期:2015-11-22 *

核心和内建函数

  • bpo-25630:修复在接受文件系统路径的函数中的参数解析期间可能出现的段错误。

  • bpo-23564:修复了_posixsubprocess 内部的部分破坏的健全性检查,该检查关于如何将 fds_to_pass 传递给孩子。该错误没有实际影响,因为 subprocess.py 已经避免了它。

  • bpo-25388:修复了在处理带有空字节的无法解码的源代码时令牌生成器崩溃的问题。

  • bpo-25462:现在,在 OrderedDict 的 C 实现中的大多数操作中,密钥的哈希仅计算一次。

  • bpo-22995:__reduce_和__reduce_ex_的默认实现现在拒绝未定义__new_的内置类型。

  • bpo-25555:修复了解析器和 AST:从 Python 对象编译 AST 时,填写“ arg”节点的 lineno 和 col_offset。

  • bpo-24802:在将 int(),float(),compile(),exec()和 eval()传递给类似字节的对象时,避免缓冲区溢出。这些对象不一定以空字节终止,但是函数假定它们为空。

  • bpo-24726:修复了由直接调用 dict 方法导致突变的 OrderedDict 的 repr()中的崩溃和泄漏 NULL 的问题。

  • bpo-25449:现在,使用具有不稳定哈希值的键迭代 OrderedDict 会在 C 实现以及 Python 实现中引发 KeyError。

  • bpo-25395:修复了当高度嵌套的 OrderedDict 结构被垃圾回收时崩溃的问题。

  • bpo-25274:如果新的递归限制取决于当前递归深度,则 sys.setrecursionlimit()现在会引发 RecursionError。还要修改“低水位线”公式以使其单调。该标记用于确定何时重置线程状态的溢出标志。

  • bpo-24402:修复 sys.stdout.fileno()失败时,input()提示 Importing 重定向的 stdout 的问题。

  • bpo-24806:禁止pass多重继承对不允许子类化的内置类型进行子类化。

  • bpo-24848:修复了格式错误的数据的 UTF-7 解码中的许多错误。

  • bpo-25280:以详细(-v)模式发出的导入跟踪消息不再格式化两次。

  • bpo-25003:在 Solaris 11.3 或更高版本上,os.urandom()现在使用 getrandom()函数而不是 getentropy()函数。 getentropy()函数正在阻塞以生成非常好的质量熵,os.urandom()不需要这种高质量的熵。

  • bpo-25182:stdprinter(在启动 io 模块导入之前用作 sys.stderr)现在使用反斜杠替换错误处理程序。

  • bpo-25131:使 set/dictLiterals 和理解的行号和列偏移与开括号对应。

  • bpo-25150:从公共 Python.hHeaders 中隐藏专用的_Py_atomic_xxx 符号以修复 OpenMP 的编译错误。 PyThreadState_GET()成为 PyThreadState_Get()的别名,以避免 ABI 不兼容。

Library

  • bpo-25626:更改三个 zlib 函数以接受适合 Py_ssize_t 的大小,但在内部将这些大小限制为 UINT_MAX。这解决了 3.5 中的回归问题,其中 GzipFile.read()无法读取大于 2 或 4 GiB 的块。所做的更改会影响 zlib.Decompress.decompress()max_length 参数,zlib.decompress()bufsize 参数和 zlib.Decompress.flush()length 参数。

  • bpo-25583:当 OS 优先考虑诸如 EACCES 而不是 EEXIST 之类的错误时,避免 os.makedirs(exist_ok = True)引发的错误错误。

  • bpo-25593:在 asyncio 中更改 EventLoop.stop()的语义。

  • bpo-6973:当我们知道一个子进程。Popen 进程已死亡时,请不要让 send_signal(),terminate()或 kill()方法执行任何操作,因为它们可能表示不同的进程。

  • bpo-25590:在 Readline 完成程序中,每个属性仅调用一次 getattr()。

  • bpo-25498:修复了pass包装 memoryview 垃圾收集 ctypes 对象时的崩溃问题。这是 3.5a1 中的回归。基于 Eryksun 的补丁。

  • bpo-25584:在 glob 模块的__all_列表中添加了“转义”。

  • bpo-25584:修复了以**开头的模式的递归 glob()。

  • bpo-25446:修复了 smtplib 的 AUTH LOGIN 支持中的回归问题。

  • bpo-18010:修复 pydoc Web 服务器的模块搜索Function,以处理导入程序包中的异常。

  • bpo-25554:在正则表达式分析中摆脱了循环引用。

  • bpo-25510:如果 FileInput 是用二进制模式打开的,则 fileinput.FileInput.readline()现在在末尾返回 b''而不是''。伊藤良介的补丁。

  • bpo-25503:修复了属性的继承文档字符串的 inspect.getdoc()。 John Mark Vandenberg 的原始补丁。

  • bpo-25515:始终将 os.urandom 用作 uuid.uuid4 中的随机性源。

  • bpo-21827:对于最大的公共空格是最小的前导空格的子字符串的情况,修复了 textwrap.dedent()。基于 Robert Li 的补丁。

  • bpo-25447:现在可以复制和腌制 lru_cache()包装器对象(pass不变地返回原始对象)。

  • bpo-25390:键入:不要在 Union [str,Pattern]上崩溃。

  • bpo-25441:异步:关闭套接字时,从 rain()引发错误。

  • bpo-25410:清理并修复了 OrderedDict 的 C 实现中的小错误。

  • bpo-25411:pass更好地使用电子邮件包,改进了 SMTPHandler 中的 Unicode 支持。感谢用户 simon04 提供此补丁。

  • bpo-25407:删除有关在 Python 3.6 中删除的 formatter 模块的说明。

  • bpo-25406:修复了 OrderedDict.move_to_end()的 C 实现中的一个错误,该错误在将多个项移至有序 dict 的开头后导致分段错误或在迭代中挂起。

  • bpo-25364:zipfile 现在可以在禁用了构建的线程中使用。

  • bpo-25328:如果将 encode_data 和 enable_SMTPUTF8 都设置为 true,则 smtpd 的 SMTPChannel 现在可以正确引发 ValueError。

  • bpo-25316:未安装 MSVC 时,distutils 引发 OSError 而不是 DistutilsPlatformError。

  • bpo-25380:pickletools.opcodes 中的 STACK_GLOBAL 操作码的固定协议。

  • bpo-23972:更新了异步数据报创建方法,该方法允许在绑定套接字之前设置好 reuseport 和 reuseaddr 套接字选项。如果 O/S 为“ posix”,则镜像现有的 asyncio create_server 方法的数据报套接字的 redirectaddr 选项默认为 True(除非平台为 Cygwin)。克里斯·劳斯(Chris Laws)的补丁。

  • bpo-25304:添加 asyncio.run_coroutine_threadsafe()。这使您可以将协程从另一个线程提交到循环中,并返回 current.futures.Future。文森特·米歇尔(Vincent Michel)。

  • bpo-25232:修复 CGIRequestHandler 以从第一个问号(?)而不是最后一个问号(URL)拆分查询。张翔的补丁。

  • bpo-24657:防止 CGIRequestHandler 在 URL 的查询部分中折叠斜杠,就像它是路径一样。张翔的补丁。

  • bpo-24483:functools.lru_cache()的 C 实现现在仅计算密钥的哈希值一次。

  • bpo-22958:weakref.WeakValueDictionary 的构造方法和更新方法现在接受 self 和 dict 关键字参数。

  • bpo-22609:集合的构造方法。UserDict 现在接受 self 关键字参数。

  • bpo-25111:固定比较 traceback.FrameSummary。

  • bpo-25262:在 unpickler 的 Python 实现中增加了对 BINBYTES8 操作码的支持。 BINUNICODE8 和 BINBYTES8 操作码的最高 32 位(64 位大小)在 C 实现中不再在 32 位平台上被忽略。

  • bpo-25034:修复 string.Formatter 问题,其中包含自动编号和嵌套的 format_specs。 Anthon van der Neut 修补程序。

  • bpo-25233:重写 asyncio.Queue 和 asyncio.Semaphore 的内胆,使其更易于理解和正确。

  • bpo-25203:失败的 readline.set_completer_delims()不再使模块处于不一致状态。

  • bpo-23600:tzinfo.fromutc()的默认实现在某些情况下返回错误结果。

  • bpo-23329:允许使用较旧版本的 LibreSSL 构建 ssl 模块。

  • 防止_Unpickler_Read 中的溢出。

  • bpo-25047:现在,元素树编写的 XML 编码语句遵循用户指定的字母大小写。这样可以恢复以大写形式编写编码名称(如在 Python 2 中工作的“ UTF-8”)的Function。

  • bpo-25135:pass在清除之前清空 deque,使 deque_clear()更安全。这有助于避免可能的重入问题。

  • bpo-19143:平台模块现在从 kernel32.dll 读取 Windows 版本,以避免兼容性问题。

  • bpo-25092:当 errno 已经设置为 EINVAL 时,修复 datetime.strftime()失败。

  • bpo-23517:修复了 datetime.datetime 的 fromtimestamp()和 utcfromtimestamp()方法的四舍五入:现在将微秒四舍五入为最接近的偶数整数(ROUND_HALF_EVEN),而不是四舍五入为负无穷大(ROUND_FLOOR)。重要的是,这些方法使用与 datetime.timedelta 相同的舍入模式来保留属性:(datetime(1970,1,1)timedelta(seconds = t))== datetime.utcfromtimestamp(t)。例如,它也是 round(float)使用的舍入模式。

  • bpo-25155:修复 Windows 上的 datetime.datetime.now()和 datetime.datetime.utcnow()以支持 2038 年之后的日期。这是 Python 3.5.0 中引入的回归。

  • bpo-25108:在不带参数的情况下调用的回溯函数 print_stack(),format_stack()和 extract_stack()中Ellipsis了内部框架。

  • bpo-25118:修复 Windows 上 os.waitpid()中 Python 3.5.0 的回归。

  • bpo-24684:socket.socket.getaddrinfo()现在调用 PyUnicode_AsEncodedString()而不是调用主机的 encode()方法,以便使用不返回字节字符串的 encode()方法正确处理自定义字符串。现在,直接调用 IDNA 编解码器的编码器,而不是调用字符串的 encode()方法。

  • bpo-25060:正确计算 BUILD_MAP 操作码的堆栈使用情况。

  • bpo-24857:将 call_args 与长序列进行比较,现在可以正确返回布尔结果,而不是引发异常。由 A Kaptur 修补。

  • bpo-23144:即使 convert_charrefs 为 True,也请确保 HTMLParser.feed()返回所有数据。

  • bpo-24982:现在,具有“ zip”格式的 shutil.make_archive()会在 ZIP 文件中添加目录(包括空目录)的条目。

  • bpo-25019:修复了由于设置 expat 解析器的非字符串键而导致的崩溃。基于 John Leitch 的补丁。

  • bpo-16180:如果文件语法错误,请退出 pdb,而不是将用户陷入无限循环。 Xavier de Gaye 的补丁。

  • bpo-24891:如果在 Python 创建 sys.stdin,sys.stdout 和 sys.stderr 对象时关闭了 stdin(0),stdout(1)或 stderr(2)的文件 Descriptors,则修复了 Python 启动时的竞争条件。现在,如果对象创建失败,这些属性将设置为“无”,而不是引发 OSError 异常。 Marco Paolini 编写的初始补丁。

  • bpo-24992:修复了 collections.OrderedDict 构造函数中的错误处理和竞争条件(与垃圾回收相关)。

  • bpo-24881:修复了 Windows 和 Cygwin 上 FileIO 的 Python 实现中的设置二进制模式。来自 Akira Li 的补丁。

  • bpo-25578:修复 SSLSocket.getpeercer()中的(另一个)内存泄漏。

  • bpo-25530:创建 ssl.SSLContext 时,默认情况下禁用易受攻击的 SSLv3 协议。

  • bpo-25569:修复 SSLSocket.getpeercert()中的内存泄漏。

  • bpo-25471:从 accept()返回的套接字不应看起来是非阻塞的。

  • bpo-25319:重新初始化 threading.Event 时,基本条件应使用常规锁而不是递归锁。

  • bpo-21112:修复子类的 unittest.expectedFailure 中的回归。 Berker Peksag 的补丁。

  • bpo-24764:cgi.FieldStorage.read_multi()现在将忽略 Component 标题中的 Content-Length 标题。修补程序由 Peter Landry 编写,并由 Pierre Quentel 审查。

  • bpo-24913:修复 deque.index()中的溢出错误。由 John Leitch 和 Bryce Darling 找到。

  • bpo-24774:修复 http.server.test 中的文档字符串。许超祥的补丁。

  • bpo-21159:改进 configparser.InterpolationMissingOptionError 中的消息。 ŁukaszLanga 的补丁。

  • bpo-20362:在 assertRegex 中正确兑现 TestCase.longMessage。来自 Ilia Kurenkov 的补丁。

  • bpo-23572:针对具有虚假元类的类修复了 functools.singledispatch。 Ethan Furman 修补程序。

  • asyncio:sure_future()现在接受 await 的对象。

IDLE

  • bpo-15348:在关闭调试器窗口(在 IDLE 进程中运行)之前,先停止调试器引擎(通常在用户进程中)。这样可以防止捕获和忽略 RuntimeErrors。

  • bpo-24455:防止在以下情况下挂起 IDLE:a)在调试器处于活动状态时关闭 Shell 程序(15347); b)用[X]按钮关闭调试器(15348); c)在已经激活的情况下激活调试器(24455)。马克·罗斯曼(Mark Roseman)所做的补丁pass进行两项更改来实现。 1.使用旨在用于此目的的 tcl vwait 机制(而不是 root.mainloop 和.quit)挂起并恢复 gui.interaction 方法。 2.在 gui.run 中,允许任何现有交互首先终止。

  • 在“空闲程序”中将“程序”更改为“您的程序”?消息,以便更清楚地指出所引用的程序是当前正在运行的用户程序,而不是 IDLE 本身。

  • bpo-24750:改善 IDLE 编辑器窗口状态栏的外观。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25313:更改对新的内置文本颜色主题的处理,以更好地解决由添加 IDLE Dark 引入的兼容性问题。在 idlelib 中的任何地方始终使用修订后的 idleConf.CurrentTheme。

  • bpo-24782:扩展配置现在是“ IDLE 首选项”对话框中的选项卡,而不是单独的对话框。以前的选项卡现在是排序列表。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-22726:重新激活配置对话框帮助按钮,其中包含有关其他按钮的一些内容以及新的 IDLE Dark 主题。

  • bpo-24820:IDLE 现在具有“ IDLE Dark”内置文本颜色主题。它或多或少是 IDLE Classic 倒立的,具有钴蓝色背景。字符串,Comments,关键字……仍然是绿色,红色,橙色……。要将其与 2015 年 11 月之前发布的 IDLE 一起使用,请点击“另存为新的自定义主题”按钮,然后 Importing 新名称,例如“ Custom Dark”。自定义主题可与任何 IDLE 版本一起使用,并且可以修改。

  • bpo-25224:README.txt 现在是 IDLE 开发人员和好奇的用户的 idlelib 索引。现在,以前的用户内容在“ IDLE 文档”一章中。 “ IDLE”现在表示“集成开发和学习环境”。

  • bpo-24820:用户现在可以在“设置”->“自定义突出显示”中设置断点颜色。马克·罗斯曼(Mark Roseman)的原始补丁。

  • bpo-24972:现在,非活动选择背景与所有系统上用户配置的活动选择背景匹配。现在,找到的项目始终在 Windows 上突出显示。 Mark Roseman 的最初补丁。

  • bpo-24570:空闲:在受 tk 回归影响的 Mac 上显示呼叫提示和完成框。 Mark Roseman 的最初补丁。

  • bpo-24988:空闲 ScrolledList 上下文菜单(在调试器中使用)现在可以在 Mac Aqua 上使用。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-24801:右键单击以在 Mac Aqua 上运行上下文菜单。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25173:将 tkinter 消息框与特定的窗口小部件相关联。对于 Mac OSX,将其设置为“工作表”。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-25198:增强现在用于空闲帮助的初始 html 查看器。适当地缩进固定间距的文本(由 Mark Roseman 修补)。给代码段一个非常像狮身人面像的浅蓝灰色背景。重复使用用户为 Shell 程序和编辑器设置的初始宽度和高度。使用目录(TOC)菜单时,将节标题放在屏幕顶部。

  • bpo-25225:压缩和重写有关文本颜色的空闲文档部分。

  • bpo-21995:解释 IDLE 和控制台 Python 之间的一些区别。

  • bpo-22820:从 Idle 编辑器运行文件时,说明需要* print *。

  • bpo-25224:文档:增加了“空闲”Function列表和“无子进程”部分。

  • bpo-25219:为空闲命令行选项更新文档。一些失踪,笔记不正确。

  • bpo-24861:大多数 idlelib 是私有的,并且可能会更改。使用 idleib.idle.*启动空闲。请参见 idlelib .__ init . doc__。

  • bpo-25199:空闲:为将来的维护者添加同步 Comments。

  • bpo-16893:将 help.txt 替换为 help.html,以显示空闲文档。删除了新的 idlelib/help.html Doc/build/html/library/idle.html。它看起来比 help.txt 更好,并且可以更好地说明 Idle 发布时的状态。适用于该文件的 tkinter html 查看器由 Mark Roseman 编写。现已弃用了尚未使用的 EditorWindow.HelpDialog 类和 helt.txt 文件。

  • bpo-24199:弃用未使用的 idlelib.idlever,可能在 3.6 中将其删除。

  • bpo-24790:删除无关的代码(这也会造成 2 和 3 冲突)。

Documentation

  • bpo-22558:将其余文档链接添加到 Python 编码模块的源代码。 Yoni Lavi 修补程序。

  • bpo-12067:重写语言参考的“表达式”一章中的“比较”部分。比较混合类型的某些细节不正确或不明确。 NotImplemented 仅在比“表达式”一章低的级别上相关。添加了比较 range()对象的详细信息,以及用户定义类的默认行为和一致性建议。来自 Andy Maier 的补丁。

  • bpo-24952:在“线程”和“ _thread”模块中阐明 stack_size()的默认大小参数。来自 Mattip 的补丁。

  • bpo-23725:检修 tempfile 文档。注意 mktemp 的已弃用状态。 ZbigniewJędrzejewski-Szmek 的补丁。

  • bpo-24808:更新某些 PyTypeObject 字段的类型。约瑟夫·韦斯顿的补丁。

  • bpo-22812:修复 unittest 发现示例。 Pam McA'Nulty 的补丁。

Tests

  • bpo-25449:添加了针对 OrderedDict 子类的测试。

  • bpo-25099:当无法写入 sys.path 上的条目时,使 test_compileall 不会失败(在 Windows 的 Management 安装中很常见)。

  • bpo-23919:阻止 assert 对话框出现在测试套件中。

  • PCbuild\rt.bat现在接受无限数量的参数传递给 regrtest.py。以前限制为 9.

Build

  • bpo-24915:添加对 PGO 构建的 LLVM 支持,并使用测试套件生成配置文件数据。英特尔的 Alecsandru Patrascu 的初始补丁。

  • bpo-24910:Windows MSI 现在具有唯一的显示名称。

  • bpo-24986:当外部库不可用时,现在可以在 Windows 上构建 Python 而不会出现错误。

Windows

  • bpo-25450:更新快捷方式以在安装目录中启动 Python。

  • bpo-25164:更改默认的所有用户安装目录以匹配每个用户目录。

  • bpo-25143:改进了不受支持的平台的安装程序错误消息。

  • bpo-25163:使用非默认设置时,在安装程序中显示正确的目录。

  • bpo-25361:在 Windows 32 位版本中禁用 SSE2 指令的使用

  • bpo-25089:在升级时未选择启动器的情况下,将日志记录添加到安装程序。

  • bpo-25165:如果保留其他版本,则 Windows 卸载不应删除启动器

  • bpo-25112:py.exe 启动器缺少图标

  • bpo-25102:Windows 安装程序不会针对-O 或-OO 进行预编译。

  • bpo-25081:升级时,安装程序中的“返回”按钮会返回到升级页面。

  • bpo-25091:增加安装程序的字体大小。

  • bpo-25126:说明非 Web 安装程序将下载某些组件。

  • bpo-25213:恢复 requestedExecutionLevel 以显示以禁用 UAC 虚拟化。

  • bpo-25022:删除了过时的 PC/example_nt /目录。

Tools/Demos

  • bpo-25440:修复 python-config –extension-suffix 的输出。

Python 3.5.0 finally版

*发布日期:2015-09-13 *

Build

  • bpo-25071:静默安装时,Windows 安装程序不应要求 TargetDir 参数。

Python 3.5.0 发行候选版本 4

*发布日期:2015-09-09 *

Library

  • bpo-25029:修复了 test_strptime 中的 MemoryError。

Build

  • bpo-25027:恢复部分静态的生成选项,并将 vcruntime140.dll 添加到 Windows 安装中。

Python 3.5.0 发行候选 3

*发布日期:2015-09-07 *

核心和内建函数

  • bpo-24305:防止警告.warn(stacklevel =)参数对导入子系统堆栈帧进行计数。

  • bpo-24912:防止将__class_分配给不可变的内置对象。

  • bpo-24975:修复 PEP 448语法的 AST 编译。

Library

  • bpo-24917:time_strftime()缓冲区被过度读取。

  • bpo-24748:为解决 py2exe 和 pywin32 的兼容性问题,imp.load_dynamic()再次忽略了先前加载的模块,以支持 Python 模块将其自身替换为扩展模块。 Petr Viktorin 修补程序。

  • bpo-24635:修复了 type.py 中的错误,该错误中 isinstance([],typeing.Iterable)会返回 True 一次,然后在后续调用中返回 False。

  • bpo-24989:如果位置设置超出大小,则固定缓冲区将在 BytesIO.readline()中读取。基于 John Leitch 的补丁。

  • bpo-24913:修复 deque.index()中的溢出错误。由 John Leitch 和 Bryce Darling 找到。

Python 3.5.0 发行候选 2

*发布日期:2015-08-25 *

核心和内建函数

  • bpo-24769:禁用动态加载后,口译器现在可以正常启动。 Petr Viktorin 修补程序。

  • bpo-21167:即使未指定-fp-model strict,使用 ICC 编译 python 时,NAN 操作现在也可以正确处理。

  • bpo-24492:try执行from .. import ...语句时缺少__name_属性的“包”将触发 ImportError 而不是 AttributeError。

Library

  • bpo-24847:从 Tcl/Tk 中删除 vcruntime140.dll 依赖性。

  • bpo-24839:platform._syscmd_ver 引发 DeprecationWarning

  • bpo-24867:修复 Task.get_stack()用于“异步定义”协程

Python 3.5.0 发行候选 1

*发布日期:2015-08-09 *

核心和内建函数

  • bpo-24667:在所有情况下都会调整底层命令的大小。

Library

  • bpo-24824:codecs.encode()和 codecs.decode()的签名现在与 pydoc 兼容。

  • bpo-24634:导入 uuid 不应try在 Windows 上加载 libc

  • bpo-24798:_msvccompiler.py 不正确支持 Lists

  • bpo-4395:更好地测试和记录二进制运算符。 Martin Panter 修补程序。

  • bpo-23973:从 GitHub 存储库更新 type.py。

  • bpo-23004:当 read_data 的类型为字节时,mock_open()现在可以正确读取二进制数据。亚伦·希尔的最初补丁。

  • bpo-23888:处理 Cookie 到期的小数时间。由 ssh 修补。

  • bpo-23652:可以根据 Linux 标准库中的 libcHeaders 编译选择模块,该 Headers 不包含某些 EPOLL 宏。 Matt Frank 的补丁。

  • bpo-22932:修正 email.utils.formatdate 中的时区。 Dmitry Shachnev 的补丁。

  • bpo-23779:如果身份验证器try中止,则 imaplib 引发 TypeError。来自 Craig Holmquist 的补丁。

  • bpo-23319:修复 ctypes.BigEndianStructure,正确交换字节。 Matthieu Gautier 编写的补丁。

  • bpo-23254:记录如何关闭 TCPServer 侦听套接字。 Martin Panter 的补丁。

  • bpo-19450:更新 Windows 和 OS X 安装程序版本以使用 SQLite 3.8.11.

  • bpo-17527:将 PATCH 添加到 wsgiref.validator。来自 Luca Sbardella 的补丁。

  • bpo-24791:修复调用语法“ g(* a 或 b)”的语法回归。

IDLE

  • bpo-23672:允许 Idle 编辑和运行名称中带有星型字符的文件。 Mohd Sanad Zaki Rizvi 修补程序。

  • bpo-24745:空闲编辑器默认字体。从 Courier 切换到对平台敏感的 TkFixedFont。这不应影响当前的自定义字体选择。如果有问题,请编辑$ HOME/.idlerc/config-main.cfg 并从[编辑器窗口]中删除“ fontxxx”条目。马克·罗斯曼(Mark Roseman)的补丁。

  • bpo-21192:空闲编辑器。运行文件时,将其名称放在重新启动栏中。不要打印错误提示。 Adnan Umer 的原始补丁。

  • bpo-13884:菜单空闲。拆下撕裂线。 Roger Serwy 修补程序。

Documentation

  • bpo-24129:澄清用于名称解析的参考文档。这包括消除以下假设:Reader 在为函数名称空间引入词法作用域之前会熟悉 Python 使用的名称解析方案。 Ivan Levkivskyi 的补丁。

  • bpo-20769:改进 reload()文档。 Dorian Pula 的补丁。

  • bpo-23589:从常见问题解答中删除重复的句子。潘永志的补丁。

  • bpo-24729:更正了 IO 教程,以匹配有关打开Function的编码参数的实现。

Tests

  • bpo-24751:使用-w命令行选项运行 regrtest 时,如果重新运行时所有测试均成功,则不再将测试运行标记为失败。

Python 3.5.0 beta 4

*发布日期:2015-07-26 *

核心和内建函数

  • bpo-23573:在 Linux 上针对单字节参数恢复了 bytes.rfind()和 bytearray.rfind()的优化。

  • bpo-24569:使 PEP 448字典评估更加一致。

  • bpo-24583:修复了在更新集时更改集时崩溃的问题。

  • bpo-24407:修复了在更新 dict 时使 dict 突变的崩溃。

  • bpo-24619:用于标记异步/await 的新方法。因此,现在可以使用单行“ async def foo():await ..”Function。

  • bpo-24687:在函数参数 Comments 中的 SyntaxError 上插入 refleak。

  • bpo-15944:memoryview:当转换为字节时允许任意格式。 Martin Panter 修补程序。

Library

  • bpo-23441:rcompleter 现在将打印制表符,而不显示空单词的可能补全。 Martin Sekera 的最初补丁。

  • bpo-24683:修复了使用不正确类型的参数调用的_json 函数的崩溃。

  • bpo-21697:shutil.copytree()现在可以正确处理指向目录的符号链接。 Eduardo Seabra 和 Thomas Kluyver 的补丁。

  • bpo-14373:修复了在构造 lru_cache(C 实现)期间调用 gc.collect()时的分段错误。

  • bpo-24695:修复 traceback.print_exception()中的回归。如果 exc_traceback 为 None,则不应像文档中所述打印回溯 Headers。

  • bpo-24620:Random.setstate()现在验证状态最后一个元素的值。

  • bpo-22485:修复了导致inspect.getsource在嵌套函数上返回错误结果的问题。

  • bpo-22153:改进单元测试文档。来自 Martin Panter 和 evilzero 的补丁。

  • bpo-24580:现在明确禁止以 re 模式使用符号组引用以及数字组引用。

  • bpo-24206:修复了检查类的__eq_和__ne_方法。

  • bpo-24631:使用多行设置修复了 timeit 模块中的回归。

  • bpo-18622:unittest.mock.mock_open()。reset_mock 将无限递归。 Nicola Palumbo 和 Laurent De Buyst 的补丁。

  • bpo-23661:unittest.mock side_effects 现在可以再次成为 exception。这是对 Python 3.4 的回归。来自 Ignacio Rossi 的补丁

  • bpo-24608:chunk.Chunk.read()现在总是返回字节,而不是 str。

  • bpo-18684:固定读取 re 模块中的缓冲区。

  • bpo-24259:如果归档文件在数据段中被截断,则 tarfile 现在引发 ReadError。

  • bpo-15014:SMTP.auth()和 SMTP.login()现在支持 RFC 4954 的 SMTP AUTH 命令的可选初始响应参数。

  • bpo-24669:修复了 inspect.getsource()的“异步定义”Function。 Kai Groner 的补丁。

  • bpo-24688:ast.get_docstring()用于“异步定义”Function。

Build

  • bpo-24603:更新 Windows 版本和 OS X 10.5 安装程序以使用 OpenSSL 1.0.2d。

Python 3.5.0 beta 3

*发布日期:2015-07-05 *

核心和内建函数

  • bpo-24467:修复了字节数组中可能会过度读取缓冲区的问题。现在,bytearray 对象始终为尾随的空字节分配位置,并且其缓冲区现在始终为空终止。

  • 升级到 Unicode 8.0.0.

  • bpo-24345:为稳定的 ABI 添加 Py_tp_finalize 插槽。

  • bpo-24400:为 PEP 492个协程引入不同的类型;添加类型.CoroutineType,inspect.getcoroutinestate,inspect.getcoroutinelocals;协程不再使用 CO_GENERATOR 标志; sys.set_coroutine_wrapper 仅适用于“异步定义”协程; inspect.iscoroutine 不再使用 collections.abc.Coroutine,仅用于测试纯“异步 def”协程;添加新的操作码:GET_YIELD_FROM_ITER;将 type.coroutine 中使用的生成器包装器修复为 collections.abc.Generator 的实例; collections.abc.Awaitable 和 collections.abc.Coroutine 不能再用于检测基于生成器的协程,请改用 inspect.isawaitable。

  • bpo-24450:将 gi_yieldfrom 添加到生成器,将 cr_await 添加到协程。由 Benno Leslie 和 Yury Selivanov 贡献。

  • bpo-19235:添加新的 RecursionError 异常。 Georg Brandl 的补丁。

Library

  • bpo-21750:现在可以像在 Python 3.3 中那样从每个实例中读取 mock_open.read_data。

  • bpo-24552:在_pickle 模块出现错误的情况下,请修复释放后使用的问题。

  • bpo-24514:tarfile 现在允许仅由空格组成的数字字段。

  • bpo-19176:修复了 ElementTree 的 C 实现中与 doctype()相关的错误。 XMLParser 子类不再使用默认的 doctype()方法发出弃用警告。现在直接调用 doctype()会发出警告。如果调用了目标的 doctype(),则不会调用解析器的 doctype()。基于 Martin Panter 的补丁。

  • bpo-20387:恢复制表符缩进的块在标记化/未标记化中的语义往返正确性。

  • bpo-24456:修复了 audioop 模块的 adpcm2lin()和 lin2adpcm()函数中可能过度读取的缓冲区的问题。

  • bpo-24336:contextmanager 装饰器现在可以使用带有关键字参数“ func”和“ self”的函数。 Martin Panter 修补程序。

  • bpo-24522:修复 json 加速器模块中可能的整数溢出。

  • bpo-24489:确保先前设置的 C errno 不会干扰 cmath.polar()。

  • bpo-24408:修复了 tkinter.Font 的 measure()和 metrics()方法中的 AttributeError。

  • bpo-14373:functools.lru_cache()的 C 实现现在可以与方法一起使用。

  • bpo-24347:如果 PyDict_GetItemWithError 返回 NULL,则设置 KeyError。

  • bpo-24348:删除多余的 incref/decref。

  • bpo-24359:在迭代过程中检查已更改的 OrderedDict 大小。

  • bpo-24368:在 OrderedDict 方法中支持关键字参数。

  • bpo-24362:简化 C OrderedDict 快速节点调整大小的逻辑。

  • bpo-24377:修复 OrderedDict .__ repr_中的引用泄漏。

  • bpo-24369:在迭代过程中防御键更改。

Tests

  • bpo-24373:_testmultiphase 和 xxlimited 现在使用 tp_traverse 和 tp_finalize 避免将 tp_dealloc 与 PyType_FromSpec 结合使用时遇到参考泄漏(有关详细信息,请参见bpo-16690)

Documentation

  • bpo-24458:更新文档以涵盖扩展模块的多阶段初始化(PEP 489)。 Petr Viktorin 修补程序。

  • bpo-24351:在 string.Template 实例的上下文中阐明“标识符”的含义。

Build

  • bpo-24432:更新 Windows 版本和 OS X 10.5 安装程序以使用 OpenSSL 1.0.2c。

Python 3.5.0 beta 2

*发布日期:2015-05-31 *

核心和内建函数

  • bpo-24284:找到空字符串并且索引完全超出范围时,str 类的 startswith 和 endswith 方法不再返回 True。

  • bpo-24115:更新使用 PyObject_IsTrue(),PyObject_Not(),PyObject_IsInstance(),PyObject_RichCompareBool()和_PyDict_Contains()来检查和正确处理错误。

  • bpo-24328:修复了导入一个字符扩展模块的问题。

  • bpo-11205:在字典显示中,在值之前评估键。

  • bpo-24285:修复了阻止从包内部导入扩展模块的回归。 Petr Viktorin 修补程序。

Library

  • bpo-23247:修复了 CJK 编解码器的 StreamWriter.reset()崩溃的问题。

  • bpo-24270:按照 PEP 485的方式添加 math.isclose()和 cmath.isclose()函数。由 Chris Barker 和 Tal Einat 贡献。

  • bpo-5633:当语句为字符串而设置为非字符串时的固定时间。

  • bpo-24326:使用非默认 weightB 参数修复了 audioop.ratecv()。 David Moore 的原始补丁。

  • bpo-16991:添加 OrderedDict 的 C 实现。

  • bpo-23934:对于缺少签名信息的内置类型,修复了 inspect.signature 失败。 James Powell 的最初补丁。

Python 3.5.0 beta 1

*发布日期:2015-05-24 *

核心和内建函数

  • bpo-24276:修复了属性 Descriptors 获取器的优化。

  • bpo-24268:PEP 489:多阶段扩展模块初始化。 Petr Viktorin 修补程序。

  • bpo-23955:添加 pyvenv.cfg 选项以禁止在 Windows 上生成 sys.path 的注册表/环境查找。

  • bpo-24257:修复了伪造类型.SimpleNamespace 比较中的系统错误。

  • bpo-22939:修复了迭代器对象中的整数溢出。 Clement Rouault 修补程序。

  • bpo-23985:修复了从字节数组的开头删除切片然后附加一些其他字节数据时可能的缓冲区溢出的问题。

  • bpo-24102:修复了标准错误处理程序中的异常类型检查。

  • bpo-15027:UTF-32 编码器现在的速度提高了 3 倍至 7 倍。

  • bpo-23290:针对目标为空的情况优化 set_merge()。 (由 Serhiy Storchaka 提供.)

  • bpo-2292:PEP 448:其他拆包概述。

  • bpo-24096:使 warnings.warn_explicit 更加强大,以防止 warnings.filters 列表发生更改。

  • bpo-23996:当委托的生成器引发未标准化的 StopIteration 异常时,避免崩溃。 Stefan Behnel 的补丁。

  • bpo-23910:优化 property()getter 调用。 Joe Jevnik 的补丁。

  • bpo-23911:将基于路径的 importlib 引导程序代码移至单独的冻结模块。

  • bpo-24192:修复名称空间包导入。

  • bpo-24022:修复了处理无法解码的源代码时令牌生成器崩溃的问题。

  • bpo-9951:在字节,字节数组和 memoryview 中添加了 hex()方法。

  • bpo-22906:PEP 479:更改生成器内部的 StopIteration 处理。

  • bpo-24017:PEP 492:具有异步和 await 语法的协程。

Library

  • bpo-14373:添加了 functools.lru_cache()的 C 实现。基于 Matt Joiner 和 Alexey Kachayev 的补丁。

  • bpo-24230:tempfile 模块现在接受用于前缀,后缀和 dir 参数的字节,并在这种情况下返回字节(与 os 模块 API 匹配)。

  • bpo-22189:collections.UserString 现在支持__getnewargs (), rmod __(),casefold(),format_map(),isprintable()和 maketrans()。 Joe Jevnik 的补丁。

  • bpo-24244:在 Windows 在 strftime 中遇到无效的格式字符串时,防止终止。

  • bpo-23973:PEP 484:添加键入模块。

  • bpo-23086:collections.abc.Sequence()抽象 Base Class 在 index()mixin 中添加了* start stop *参数。 Devin Jeanpierre 的补丁。

  • bpo-20035:用_tkinter模块中的私有Function替换了用于在 Windows 上设置 Tcl/Tk 环境的tkinter._fix模块,该Function不会对环境进行永久更改。

  • bpo-24257:修复了 sqlite3.Row 构造函数中的伪造游标类型的分段错误。

  • bpo-15836:assertRaises(),assertRaisesRegex(),assertWarns()和 assertWarnsRegex()语句现在可以检查第一个参数的类型,以防止可能的用户错误。基于 Daniel Wagner-Hall 的补丁。

  • bpo-9858:将缺少的方法存根添加到_io.RawIOBase。 Laura Rupprecht 的补丁。

  • bpo-22955:操作员模块中的 attrgetter,itemgetter 和 methodcaller 对象现在支持 Pickling。为这些对象添加了可读且可评估的代表。基于 Josh Rosenberg 的补丁。

  • bpo-22107:现在,当 Windows 和 Unix 上已经存在具有所选名称的目录时,tempfile.gettempdir()和 tempfile.mkdtemp()再次try。如果 Windows 上的父目录无效(不存在或不是文件),则 tempfile.mkstemp()现在会提前失败。

  • bpo-23780:改进了 os.path.join()中带有单个参数的错误消息。

  • bpo-6598:提高了 email.utils.make_msgid()中的时间精度和随机数范围,以增强消息 ID 的唯一性。

  • bpo-24091:修复了 ElementTree 的 C 实现中在极端情况下发生的各种崩溃。

  • bpo-21931:现在,在参数错误的情况下,msilib.FCICreate()会引发 TypeError 而不是带有错误的 FCI 错误号的 ValueError。 Jeffrey Armstrong 修补程序。

  • bpo-13866:* quote_via *参数已添加到 urllib.parse.urlencode。

  • bpo-20098:电子邮件的新 mangle_from 策略选项,对于 compat32 默认为 True,对于所有其他策略为 False。

  • bpo-24211:电子邮件库现在支持 RFC 6532:它可以使用 utf-8 而不是编码的单词来生成 Headers。

  • bpo-16314:在 distutils 中增加了对 LZMA 压缩的支持。

  • bpo-21804:poplib 现在支持 RFC 6856(UTF8)。

  • bpo-18682:针对内置标量类型优化的 pprint Function。

  • bpo-22027:smtplib 现在支持 RFC 6531(SMTPUTF8)。

  • bpo-23488:随机生成器对象现在在 64 位上消耗的内存减少了 2 倍。

  • bpo-1322:现在不推荐使用 platform.dist()和 platform.linux_distribution()函数。 Vajrasky Kok 的最初补丁。

  • bpo-22486:添加了 math.gcd()函数。现在不建议使用 fractions.gcd()函数。基于 Mark Dickinson 的补丁。

  • bpo-24064:现在可以写入 Property()文档字符串。 (由 Berker Peksag 修补.)

  • bpo-22681:添加了对 koi8_t 编码的支持。

  • bpo-22682:添加了对 kz1048 编码的支持。

  • bpo-23796:如果 BufferedReader 的 peek 和 read1 方法在关闭的对象上调用,则会引发 ValueError。 John Hergenroeder 的补丁。

  • bpo-21795:每当新的* decode_data *构造函数参数设置为 False 时,smtpd 现在支持 8BITMIME 扩展。

  • bpo-24155:优化堆 q.heapify(),以便在堆放大型列表时获得更好的缓存性能。

  • bpo-21800:imaplib 现在支持 RFC 5161(启用),RFC 6855(utf8 /国际化电子邮件),并自动将非 ASCII 用户名和密码编码为 UTF8.

  • bpo-20274:在调用_sqlite.Connection 时,它现在会抱怨是否传递了任何关键字参数。以前它默默地忽略了它们。

  • bpo-20274:从_sqlite.Connection 上的三个 METH_VARARGS 方法中删除被忽略和错误的“ kwargs”参数。

  • bpo-24134:assertCallRaises(),assertRaisesRegex(),assertWarns()和 assertWarnsRegex()检查现在在上下文 Management 器模式下调用 callable 为 None 或关键字参数(msg 除外)时发出弃用警告。

  • bpo-24018:添加 collections.abc.Generator 抽象 Base Class。由 Stefan Behnel 贡献。

  • bpo-23880:Tkinter 的 getint()和 getdouble()现在支持 Tcl_Obj。 Tkinter 的 getdouble()现在支持任何数字(尤其是 int)。

  • bpo-22619:在 traceback 模块中添加了负限制支持。基于 Dmitry Kazakov 的补丁。

  • bpo-24094:修复行为不佳的 dict 子类在 json.encode 中可能导致的崩溃。

  • bpo-9246:在 POSIX 上,os.getcwd()现在支持长度超过 1025 字节的路径。 William Orr 编写的补丁。

  • bpo-17445:添加 difflib.diff_bytes()以支持比较字节字符串(修复了 Python 2 的回归问题)。

  • bpo-23917:当 ProcessPoolExecutor 不存在时,退回到 Sequences 编译。 Claudiu Popa 修补程序。

  • bpo-23008:在 pydoc 中,固定的布尔值解析属性为 False。

  • 修复 asyncio 问题 235:LifoQueue 和 PriorityQueue 的放置不增加未完成的任务(此问题是在 JoinableQueue 与 Queue 合并时引入的)。

  • bpo-23908:os 函数现在在 Windows 上拒绝带有嵌入式空字符的路径,而不是默默地截断它们。

  • bpo-23728:binascii.crc_hqx()可能会为空数据返回 0-0xffff 范围之外的整数。

  • bpo-23887:urllib.error.HTTPError 现在具有正确的 repr()表示形式。 Berker Peksag 的补丁。

  • 异步:新的事件循环 API:set_task_factory()和 get_task_factory()。

  • asyncio:不推荐使用 async()函数,而要确保确保使用 ensure_future()。

  • bpo-24178:asyncio.Lock,Condition,Semaphore 和 BoundedSemaphore 支持新的“ async with”语法。由 Yury Selivanov 贡献。

  • bpo-24179:支持 asyncio.StreamReader 的“异步”。由 Yury Selivanov 贡献。

  • bpo-24184:将 AsyncIterator 和 AsyncIterable ABC 添加到 collections.abc。由 Yury Selivanov 贡献。

  • bpo-22547:为 inspect.BoundArguments 实现信息丰富的__repr__。由 Yury Selivanov 贡献。

  • bpo-24190:实现 inspect.BoundArgument.apply_defaults()方法。由 Yury Selivanov 贡献。

  • bpo-20691:将'follow_wrapped'参数添加到 inspect.Signature.from_callable()和 inspect.signature()。由 Yury Selivanov 贡献。

  • bpo-24248:弃用 inspect.Signature.from_function()和 inspect.Signature.from_builtin()。

  • bpo-23898:修复 inspect.classify_class_attrs()以支持__eq_和__bool_重载的属性。 Mike Bayer 修补程序。

  • bpo-24298:修复 inspect.signature()以正确解开绑定方法周围的包装。

IDLE

  • bpo-23184:删除闲置的名称并导入 idlelib 中。 Al Sweigart 的最初补丁。

Tests

  • bpo-21520:如果单词“ bad”出现在当前目录名称的任何位置,则 test_zipfile 不再失败。

  • bpo-9517:将 script_helper 移至支持包。科视 Christie Wilson 的补丁。

Documentation

  • bpo-22155:将带有 createfilehandler 的 File Handlers 小节添加到 tkinter doc。从常见问题解答中删除过时的示例。 Martin Panter 修补程序。

  • bpo-24029:记录子模块导入的名称绑定行为。

  • bpo-24077:修复了-I 命令选项的手册页中的错字:-s,而不是-S

Tools/Demos

  • bpo-24000:改进了 Argument Clinic 的转换器到旧版“格式单位”的 Map。更新了文档以使其匹配。

  • bpo-24001:参数诊所转换器现在使用 accept ={type}而不是 types ={'type'}来指定转换器接受的类型。

  • bpo-23330:h2py 现在支持#include 中的任意文件名。

  • bpo-24031:make patchcheck 现在也支持 git checkout。

Python 3.5.0 alpha 4

*发布日期:2015-04-19 *

核心和内建函数

  • bpo-22980:在 Linux,GNU/KFreeBSD 和 Hurd 下,C 扩展现在在 extensions 称中包括架构三 Tuples,从而可以轻松地在同一工作树中测试针对不同 ABI 的构建。在 OS X 下,extensions 现在包括 PEP 3149-样式信息。

  • bpo-22631:添加了特定于 Linux 的套接字常量 CAN_RAW_FD_FRAMES。补丁由 Joe Jevnik 提供。

  • bpo-23731:实施 PEP 488:删除.pyo 文件。

  • bpo-23726:不要为未添加任何新字段的非 GC 类型的用户子类启用 GC。 Eugene Toder 的补丁。

  • bpo-23309:如果守护程序线程在持有对缓冲的 I/O 对象的锁定时中止了线程,并且主线程try使用相同的 I/O 对象(通常为 stdout 或 stderr),则在关闭时避免死锁。而是发出致命错误。

  • bpo-22977:修复了 Wine 上格式化 Windows 错误消息的问题。 Martin Panter 修补程序。

  • bpo-23466:现在,字节格式的%c,%o,%x 和%X 在非整数 Importing 上引发 TypeError。

  • bpo-24044:修复内存不足情况下 list.sort 中可能的空指针取消引用。

  • bpo-21354:python DLL 再次公开 PyCFunction_New 函数。

Library

  • bpo-23840:tokenize.open()现在在出错时关闭临时二进制文件以修复资源警告。

  • bpo-16914:smtplib 中的新调试级别 2 为调试输出添加了时间戳。

  • bpo-7159:urllib.request 现在支持在第一个 401 之后自动发送身份验证凭据。此增强Function是bpo-19494增强Function的超集,并取代了更改。

  • bpo-23703:修复 901e4e52b20a 中引入的 urljoin()中的回归。 Demian Brecht 的补丁。

  • bpo-4254:添加_curses.update_lines_cols()。补丁由 Arnon Yaari

  • bpo-19933:为 n 位数字舍入提供默认参数。 Vajrasky Kok 的补丁。

  • bpo-23193:向 tarfile.TarFile.extract 和 tarfile.TarFile.extractall 添加一个 numeric_owner 参数。 Michael Vogt 和 Eric Smith 的补丁。

  • bpo-23342:添加一个 subprocess.run()函数,然后返回一个 CalledProcess 实例以获取比现有 call *函数更一致的 API。

  • bpo-21217:inspect.getsourcelines()现在try从代码对象计算起点和 endpoints,从而解决了将 lambda 函数用作装饰器参数时的问题。 Thomas Ballinger 和 Allison Kaptur 的补丁。

  • bpo-24521:修复 pickle 模块中可能的整数溢出。

  • bpo-22931:在 cookie 值中允许“ [”和“]”。

  • 现在,functools.partial 的 keywords 属性始终是字典。

  • bpo-23811:将缺少的换行符添加到 PyCompileError 错误消息中。 Alex Shkop 修补程序。

  • bpo-21116:在分配多于可用 RAM 的 50%的 multiprocessing 共享阵列时,避免浪费内存。 MédéricBoquien 的补丁。

  • bpo-22982:在查找可写文本文件的多个位置时,改进了 BOM 处理。

  • bpo-23464:删除了已弃用的 asyncio JoinableQueue。

  • bpo-23529:从 GzipFile,BZ2File 或 LZMAFile 读取时,限制解压缩数据的大小。这克服了使用压缩炸弹(即,压缩的有效载荷会解压缩成巨大的大小)的拒绝服务攻击。 Martin Panter 和 Nikolaus Rath 的补丁。

  • bpo-21859:添加了 io.FileIO 的 Python 实现。

  • bpo-23865:现在,多个模块中的 close()方法是幂等的,并且在关闭时更可靠。如果他们需要释放多个资源,即使发生错误也将全部释放。

  • bpo-23400:如果 sem_open 不可用,则在 Python 2 和 3 上引发相同的异常。 Davin Potts 的补丁。

  • bpo-10838:现在的子流程模块在其导出名称列表中包括 SubprocessError 和 TimeoutError,供用户狂暴地使用from subprocess import *

  • bpo-23411:向 urllib.parse .__ all_添加了 DefragResult,ParseResult,SplitResult,DefragResultBytes,ParseResultBytes 和 SplitResultBytes。 Martin Panter 修补程序。

  • bpo-23881:现在,如果 FTP 连接无法修复 ResourceWarning,则 urllib.request.ftpwrapper 构造函数将关闭套接字。

  • bpo-23853socket.socket.sendall()每次成功发送数据时都不会再重置套接字超时。现在,套接字超时是发送所有数据的最大总持续时间。

  • bpo-22721:包含有序元素和不可排序元素的 set 或 dict 的多行 pprint 输出的 Sequences 不再取决于 set 或 dict 的迭代 Sequences。

  • bpo-15133:_tkinter.tkapp.getboolean()现在支持 Tcl_Obj,并且始终返回 bool。 tkinter.BooleanVar 现在验证 Importing 值(接受的 bool,int,str 和 Tcl_Obj)。 tkinter.BooleanVar.get()现在总是返回布尔值。

  • bpo-10590:xml.sax.parseString()现在支持字符串参数。

  • bpo-23338:修复了 Cygwin 上格式化 ctypes 错误消息的问题。加藤诚的补丁。

  • bpo-15582:inspect.getdoc()现在遵循继承链。

  • bpo-2175:SAX 解析器现在支持 InputSource 对象的字符流。

  • bpo-16840:Tkinter 现在支持在 Tcl 8.4 中添加的 64 位整数和在 Tcl 8.5 中添加的任意精度整数。

  • bpo-23834:修复 socket.sendto(),使用 C Py_ssize_t 类型存储 sendto()的结果,而不是 C int 类型。

  • bpo-23618socket.socket.connect()现在 await 直到连接完成,而不是如果 signal break连接而引发InterruptedError,signal 处理程序不会引发异常并且套接字正在阻塞或具有超时。对于非阻塞套接字,socket.socket.connect()仍会提高InterruptedError

  • bpo-21526:Tkinter 现在在 Tcl 8.5 中支持新的布尔类型。

  • bpo-23836:修复故障处理程序模块以处理对其 signal 处理程序的重入调用。

  • bpo-23838:linecache 现在将清除缓存,并在 MemoryError 上返回空结果。

  • bpo-10395:添加了 os.path.commonpath()。在 posixpath 和 ntpath 中实现。基于 Rafik Draoui 的补丁。

  • bpo-23611:腌菜协议<4 现在支持序列化更多的“可查找”对象(例如未绑定方法或嵌套类)。

  • bpo-13583:sqlite3.Row 现在支持切片索引。

  • bpo-18473:修复了 2to3 和 3to2 兼容的 pickleMap。修复了模糊的反向 Map。添加了许多新的 Map。导入 Map 不再应用于已使用全名 MapMap 的模块。

  • bpo-23485:现在,当 signal break时,select.select()会自动以重新计算的超时重试,除非 signal 处理程序引发异常。此更改是 PEP 475的一部分。

  • bpo-23752:从现有文件 Descriptors 构建时,io.FileIO()现在仅调用 fstat()一次。在两次调用 fstat()之前,这不是必需的。

  • bpo-23704:collections.deque()对象现在支持__add mul_和__imul __()。

  • bpo-23171:csv.Writer.writerow()现在支持任意可迭代。

  • bpo-23745:新的电子邮件 Headers 解析器现在可以正确处理重复的 MIME 参数名称,类似于 get_param 的行为。

  • bpo-22117:修复 os.utime(),现在将时间戳四舍五入为负无穷(-inf),而不是四舍五入为零。

  • bpo-23310:修复 MagicMock 的初始化程序以使用__methods__,就像 configure_mock()一样。 Kasia Jachim 修补程序。

Build

  • bpo-23817:FreeBSD 现在在 SOVERSION 中将“ 1.0”用作其他 os,而不仅仅是“ 1”。

  • bpo-23501:现在,默认情况下,Argument Clinic 会将代码生成到单独的文件中。

Tests

  • bpo-23799:添加了 test.support.start_threads()用于运行和清理多个线程。

  • bpo-22390:现在,如果在运行测试后留下了临时文件或目录,则 test.regrtest 会发出警告。

Tools/Demos

  • bpo-18128:pygettext 现在在 POT-Creation-DateHeaders 中使用标准 NNNN 格式。

  • bpo-23935:参数诊所现在对接受字节,字节数组和缓冲区的格式单元的理解与文档和实现都一致。

  • bpo-23944:Argument Clinic 现在在第 78 列包装了长的 impl 原型。

  • bpo-20586:Argument Clinic 现在可确保没有文档字符串的函数具有签名。

  • bpo-23492:Argument Clinic 现在会使用 PyArg_Parse 而不是 PyArg_ParseTuple 生成参数解析代码。

  • bpo-23500:Argument Clinic 现在更聪明地生成 methoddef 宏的“ #ifndef”(空)定义:即使 Argument Clinic 多次处理同一个符号,它也仅生成一次,并且在所有处理结束时发出,而不是首次使用后立即使用。

C API

  • bpo-23998:PyImport_ReInitLock()现在检查锁分配错误

Python 3.5.0 alpha 3

*发布日期:2015-03-28 *

核心和内建函数

  • bpo-23573:使用不同类型(UCS1,UCS2,UCS4)的参数的字符串搜索操作(str.find,str.index,str.count,in 运算符,str.split,str.partition)的性能提高。

  • bpo-23753:没有 stat()或 fstat(),Python 将不再支持平台,这些Function始终是必需的。

  • bpo-23681:-b 选项现在影响将字节与 int 进行比较。

  • bpo-23632:现在,memoryview 允许 Tuples 索引(包括多维 memoryview 的索引)。

  • bpo-23192:固定生成器 lambda。 Bruno Cauet 修补程序。

  • bpo-23629:修复可变大小对象的默认__sizeof_实现。

Library

  • bpo-14260:正则表达式模式对象的 groupindex 属性现在是不可修改的 Map。

  • bpo-23792:当 pydoc 传呼机处于活动状态时,忽略 KeyboardInterrupt。这模仿了标准 UNIX 寻呼机的行为,并防止在寻呼机本身仍在运行时关闭 Pipepager。

  • bpo-23775:OrderedDict 的 pprint()现在输出与 repr()相同的表示形式。

  • bpo-23765:删除了 ctypes 中的 IsBadStringPtr 调用

  • bpo-22364:改进了一些使用正则表达式提示的错误消息。

  • bpo-23742:ntpath.expandvars()不再失去不平衡的单引号。

  • bpo-21717:zipfile.ZipFile.open 函数现在支持“ x”(专有创建)模式。

  • bpo-21802:即使在 BufferedRWPair.close()中关闭写入程序失败,现在也会关闭 BufferedRWPair 中的读取器。

  • bpo-23622:现在,由'\'和 ASCII 字母组成的正则表达式中的未知转义会引发弃用警告,并且在 Python 3.6 中将被禁止。

  • bpo-23671:字符串。模板现在允许将“ self”参数指定为关键字参数。 string.Formatter 现在允许将“ self”和“ format_string”参数指定为关键字参数。

  • bpo-23502:pprint 模块现在支持 Map 代理。

  • bpo-17530:pprint 现在包装长字节对象和字节数组。

  • bpo-22687:修复了在 tetxtwrap 中打断单词的一些极端情况。摆脱了长篇大论的二次复杂性。

  • bpo-4727:复制模块现在使用 pickle 协议 4(PEP 3154),并支持__new_方法仅使用关键字参数的类的实例的复制。

  • bpo-23491:添加了一个 zipapp 模块,以支持创建 Python 代码的可执行 zip 文件 Files。在 Windows 上为这些 Files 注册了“ .pyz”和“ .pyzw”extensions(PEP 441)。

  • bpo-23657:避免对 zipapp 中的 str 进行显式检查,而将对 pathlib.Path 对象的支持添加为参数。

  • bpo-23688:添加了对任意类似字节的对象的支持,并避免了在 gzip.GzipFile.write()中不必要的复制 memoryview。 Wolfgang Maier 的原始补丁。

  • bpo-23252:添加了对将 ZIP 文件写入无法搜索的流的支持。

  • bpo-23647:增加 imaplib 的 MAXLINE 以适应现代邮箱大小。

  • bpo-23539:如果 body 为 None,则 http.client.HTTPConnection.request 现在将 PUT,POST 和 PATCHHeaders 的 Content-Length 设置为 0,以避免某些 Web 服务器出现 411 错误。

  • bpo-22351:nntplib.NNTP 构造函数不再将连接和套接字保持打开状态,直到垃圾收集器将其清除为止。 Martin Panter 修补程序。

  • bpo-23704:collections.deque()对象现在支持 index(),insert()和 copy()的方法。这允许 deque 被注册为 MutableSequence,并提高了它们可替换为列表的能力。

  • 现在,如果 signal 处理程序未引发异常,则被不在* sigset *参数中的 signal break时,将重试bpo-23715signal.sigwaitinfo()signal.sigtimedwait()。 signal.sigtimedwait()在重试时使用单调时钟重新计算超时。

  • bpo-23001:模块 mmap,ossaudiodev,socket,ssl 和 codecs 中的Function很少,它们只接受类似只读字节的对象,现在也接受类似可写字节的对象。

  • bpo-23646:如果 time.sleep()被 signal break,则将以重新计算的延迟重试睡眠,除非 signal 处理程序引发异常(PEP 475)。

  • bpo-23136:_strptime 现在统一处理第 0 周的所有日期,包括上一年的 12 月 30 日。基于 Jim Carroll 的补丁。

  • bpo-23700:NamedTemporaryFile 的迭代器现在保留对 NamedTemporaryFile 实例的引用。 Bohuslav Kabrda 修补程序。

  • bpo-22903:现在可以腌制 unittest.loader 在导入测试模块失败时创建的虚假测试用例。

  • bpo-22181:在 Linux 上,os.urandom()现在使用新的 getrandom()syscall(如果可用),它是 Linux 内核 3.17 中引入的。它更可靠,更安全,因为它避免了对文件 Descriptors 的需求,并且可以等到内核具有足够的熵。

  • bpo-2211:更新了 http.cookies.Morsel 类的实现。现在不建议直接设置属性键,值和 coded_value。 update()和 setdefault()现在可以转换和检查键。现在进行相等性比较时会考虑键,值和 coded_value 的属性。现在,copy()返回的是 Morsel,而不是 dict。 repr()现在包含所有属性。优化的检查键和报价值。添加了新测试。 Demian Brecht 的原始补丁。

  • bpo-18983:允许及时选择输出单位。朱利安·金迪(Julian Gindi)的补丁。

  • bpo-23631:修改了回溯后,修复 traceback.format_list。

  • bpo-23568:将 rdivmod 支持添加到 MagicMock()对象。 HåkanLövdahl 修补程序。

  • bpo-2052:将字符集参数添加到 HtmlDiff.make_file()。

  • bpo-23668:在 Windows 上支持 os.truncate 和 os.ftruncate。

  • bpo-23138:修复了在 cookiejar 中缺少键或值的 cookie 解析的问题。 Demian Brecht 的补丁。

  • bpo-23051:multiprocessing.Pool 方法 imap()和 imap_unordered()现在可以处理由迭代器引发的异常。由 Alon Diamant 和 Davin Potts 制作的补丁。

  • bpo-23581:向 MagicMock 添加 matmul 支持。 HåkanLövdahl 修补程序。

  • bpo-23566:故障处理程序的 enable(),register(),dump_traceback()和 dump_traceback_later()函数现在接受文件 Descriptors。魏武的补丁。

  • bpo-22928:禁用了 http.client 中的 HTTPHeaders 注入。 Demian Brecht 的原始补丁。

  • bpo-23615:现在可以使用 imp.reload()重新加载模块 bz2,tarfile 和 tokenize。 Thomas Kluyver 修补程序。

  • bpo-23605:os.walk()现在调用 os.scandir()而不是 os.listdir()。 os.scandir()的使用减少了对 os.stat()的调用次数。 Ben Hoyt 编写的初始补丁。

Build

  • bpo-23585:进行补丁检查将确保已构建解释器。

Tests

  • bpo-23583:在 IDLE 中添加了对标准 IO 流的测试。

  • bpo-22289:防止由于 ftp 连接超时导致 test_urllib2net 失败。

Tools/Demos

  • bpo-22826:现在,Tools/freeze/bkfile.py 中的 open()结果与常规文件更好地兼容(特别是它现在支持上下文 Management 协议)。

Python 3.5.0 alpha 2

*发布日期:2015-03-09 *

核心和内建函数

  • bpo-23571:现在,如果函数返回结果并引发异常,则 PyObject_Call()和 PyCFunction_Call()会引发 SystemError。 SystemError 链接到先前的异常。

Library

  • bpo-22524:新的 os.scandir()函数, PEP 471的一部分:“ os.scandir()函数–更好,更快的目录迭代器”。 Ben Hoyt 编写的补丁。

  • bpo-23103:减少了 IPv4Address 和 IPv6Address 的内存消耗。

  • bpo-21793:BaseHTTPRequestHandler 再次将响应代码记录为数字,而不是字符串化的枚举。 Demian Brecht 的补丁。

  • bpo-23476:在 ssl 模块中,在证书存储可用时启用 OpenSSL 的 X509_V_FLAG_TRUSTED_FIRST 标志。

  • bpo-23576:避免在 SSL 层中达到 EOF 但尚未关闭基础连接时在 SSL 读取中停顿。

  • bpo-23504:在类型模块中添加了__all__。

  • bpo-23563:urllib.parse 中的优化 Util Function。

  • bpo-7830:拼合嵌套的 functools.partial。

  • bpo-20204:在_tkinter 类中添加了__module_属性。

  • bpo-19980:改进了对无法识别的字符串的 help()。 help('')现在显示 str 上的帮助。 help('help')现在显示有关 help()的帮助。 Mark Lawrence 的原始补丁。

  • bpo-23521:更正了 timedelta 除法的纯 python 实现。从timedelta * float消除了某些浮点的 OverflowError;更正了 timedelta 真实除法中的舍入。

  • bpo-21619:如果管道损坏,则在 with 语句中退出后,Popen 对象不再离开僵尸。 Martin Panter 修补程序。

  • bpo-22936:可以在回溯中显示回溯模块和单元测试的局部变量。

  • bpo-15955:在 bz2.decompress()中添加一个选项来限制输出大小。 Nikolaus Rath 的补丁。

  • bpo-6639:关闭窗口后,模块级turtle 函数不再引发 TclError。

  • bpo-814253:现在,组引用和条件组引用可在正则表达式中的后置 assert 中使用。 (另请参见:bpo-9179)

  • bpo-23215:具有可忽略错误的自定义错误处理程序的多字节编解码器会占用过多内存,并引发 SystemError 或 MemoryError。 Aleksi Torhamo 的原始补丁。

  • bpo-5700:关闭文件后,io.FileIO()称为 flush()。如果 closefd = False,则未在 close()中调用 flush()。

  • bpo-23374:修正了 stdout 编码与文件系统编码不同时(例如在 Mac OS 上)非 ASCII 文件的 pydoc 失败的问题。

  • bpo-23481:从 SSL 模块的默认密码列表中删除 RC4.

  • bpo-21548:在文档字符串为空的模块上修复 pydoc.synopsis()和 pydoc.apropos()。

  • bpo-22885:修复了 dbm.dumb 模块中的任意代码执行漏洞。 Claudiu Popa 的原始补丁。

  • bpo-23239:ssl.match_hostname()现在支持 IP 地址匹配。

  • bpo-23146:用 pathlib 中的正斜杠修复 Windows 绝对路径的错误处理。

  • bpo-23096:现在,协议 0 的 float 的 pickle 表示对于 Python 和 C 实现都是相同的。

  • bpo-19105:pprint 现在可以更有效地使用右侧的可用空间。

  • bpo-14910:将 allow_abbrev 参数添加到 argparse.ArgumentParser。 Jonathan Paugh,Steven Bethard,Paul J3 和 Daniel Eriksson 的补丁。

  • bpo-21717:tarfile.open()现在支持“ x”(独占创建)模式。

  • bpo-23344:marshal.dumps()现在平均快 20-25%。

  • bpo-20416:协议 3 和 4 的 marshal.dumps()现在平均快 40-50%。

  • bpo-23421:修复了 tarfile CLI 中的压缩。由 wdv4758h 修补。

  • bpo-23367:修复 unicodedata 模块中可能的溢出。

  • bpo-23361:修复 Windows 子进程创建代码中可能的溢出。

  • logging.handlers.QueueListener 现在带有一个参数 Aspect_handler_level,如果设置为 True,它将考虑处理程序级别将消息传递给处理程序。

  • bpo-19705:turtledemo 现在具有视觉排序算法演示。来自 Jason Yeo 的原始补丁。

  • bpo-23801:解决了 cgi.FieldStorage 并不总是忽略 Multipart 正文的整个序言的问题。

Build

  • bpo-23445:pydebug 构建现在尽可能使用“ gcc -Og”,以使生成的可执行文件更快。

  • bpo-23686:更新 OS X 10.5 安装程序版本以使用 OpenSSL 1.0.2a。

C API

  • bpo-20204:现在针对不具有__module_属性的内置类型引发不赞成使用警告。

Windows

  • bpo-23465:实施 PEP 486-使 Python 启动器了解虚拟环境。 Paul Moore 修补程序。

  • bpo-23437:在 Windows 上对用户脚本目录进行版本控制。 Paul Moore 修补程序。

Python 3.5.0 alpha 1

*发布日期:2015-02-08 *

核心和内建函数

  • bpo-23285:PEP 475-EINTR 处理。

  • bpo-22735:修复了许多涉及自定义 mro()实现的极端情况(包括崩溃)。

  • bpo-22896:避免使用 PyObject_AsCharBuffer(),PyObject_AsReadBuffer()和 PyObject_AsWriteBuffer()。

  • bpo-21295:恢复对 AST 行号和列偏移量的某些更改(bpo-16795),以构成回归。

  • bpo-22986:在某些情况下,允许在动态类型和静态类型之间更改对象的__class__。

  • bpo-15859:如果对象不是 Unicode 对象,则 PyUnicode_EncodeFSDefault(),PyUnicode_EncodeMBCS()和 PyUnicode_EncodeCodePage()现在引发异常。对于 PyUnicode_EncodeFSDefault(),在 Windows 以外的平台上已经存在这种情况。坎贝尔·巴顿(Campbell Barton)撰写的补丁。

  • bpo-21408:如果__eq __()返回 NotImplemented,则默认__ne __()现在返回 NotImplemented。 Martin Panter 的原始补丁。

  • bpo-23321:修复了错误处理程序返回的替换字符串的时间长于格式错误的 Importing 数据时,str.decode()崩溃的问题。

  • bpo-22286:“反斜杠替换”错误处理程序现在可用于解码和翻译。

  • bpo-23253:延迟加载 os.startfile 中的 ShellExecute [AW],以减少 Windows 上的启动开销。

  • bpo-22038:pyatomic.h 现在使用 stdatomic.h 或 GCC 内置函数进行原子内存访问(如果可用)。 Vitor de Lima 和 Gustavo Temple 撰写的补丁。

  • bpo-20284:为字节和字节数组添加了%插值(aka printf)格式。

  • bpo-23048:修复了在 pdb 中跳出无限 while 循环的问题。

  • bpo-20335:当使用非字符串参数指定编码或错误时,字节构造函数现在引发 TypeError。基于 Renaud Blanch 的补丁。

  • bpo-22834:如果当前工作目录finally被设置为不存在的目录,则导入将不再引发 FileNotFoundError。

  • bpo-22869:将解释器的启动和关闭代码移至新的专用 pylifecycle.c 模块

  • bpo-22847:提高方法缓存效率。

  • bpo-22335:修复了在 32 位平台上try将字节数组扩展为 0x7fffffff 字节时崩溃的问题。

  • bpo-22653:在调试模式下执行可重入 dict 插入时,修复了调试模式下的 assert 失败。

  • bpo-22643:修复 Unicode 大小写操作中的整数溢出(大写,小写,标题,交换大小写,大小写折叠)。

  • bpo-17636:现在支持涉及相对 import 的循环 import。

  • bpo-22604:在将复数除以(nan 0j)时,修复了调试模式下的 assert 错误。

  • bpo-21052:当 sys.path_hooks 或 sys.meta_path 设置为 None 时,不要引发 ImportWarning。

  • bpo-16518:在错误消息中使用“需要字节样的对象”,该错误消息以前使用的含义更深奥的“ x”不支持缓冲协议。

  • bpo-22470:修复了“ backslashreplace”,“ xmlcharrefreplace”和“ surrogatepass”错误处理程序中的整数溢出问题。

  • bpo-22540:在第二个参数具有元类type的常见情况下,加快PyObject_IsInstancePyObject_IsSubclass

  • bpo-18711:添加一个新的PyErr_FormatV函数,类似于PyErr_Format,但接受va_list参数。

  • bpo-22520:修复了生成 unicode 对象的 repr 时的溢出检查。

  • bpo-22519:修复了 PyBytes_Repr 中的溢出检查。

  • bpo-22518:修复了 latin-1 编码中的整数溢出问题。

  • bpo-16324:MIMEText 的_charset 参数现在也接受 email.charset.Charset 实例。 Claude Paroz 的最初补丁。

  • bpo-1764286:修复 inspect.getsource()以支持修饰后的Function。 Claudiu Popa 修补程序。

  • bpo-18554:os .__ all_包含 posix 函数。

  • bpo-21391:在 shutil 模块中使用 os.path.abspath。

  • bpo-11471:如果没有其他子句,请避免在 if 块的末尾生成 JUMP_FORWARD 指令。 Eugene Toder 的原始补丁。

  • bpo-22215:当 str 或 bytes 参数包含不允许的空字符或字节时,现在引发 ValueError 而不是 TypeError。

  • bpo-22258:在 Illumos 上修复内部函数 set_inheritable()。该平台公开了函数ioctl(FIOCLEX),但是调用失败时出现 errno,这是 ENOTTY:“设备的 ioctl 不适当”。 set_inheritable()现在回退到较慢的fcntl()(F_GETFD然后是F_SETFD)。

  • bpo-21389:在绑定方法的代表中显示基础函数的__qualname__。

  • bpo-22206:现在,使用 pthread,PyThread_create_key()会将 errno 设置为 ENOMEM 并在整数溢出时返回-1(错误)。

  • bpo-20184:为 30 个内置函数添加了基于 Argument Clinic 的签名自检。

  • bpo-22116:现在可以弱引用 C 函数和方法(“ builtin_function_or_method”类型)。魏武的补丁。

  • bpo-22077:pass添加“或片”来改进字节数组,字节,列表和 Tuples 的索引错误消息。为字节数组添加了“,而不是”。 Claudiu Popa 的原始补丁。

  • bpo-20179:将参数诊所应用于字节和字节数组。 Tal Einat 修补程序。

  • bpo-22082:清除 slotdefs 中的内联字符串。

  • 将 Unicode 数据库升级到 Unicode 7.0.0.

  • bpo-21897:在调用 frame.clear()时,使用带有闭包变量的 f_locals 属性修复了崩溃。

  • bpo-21205:向生成器添加新的__qualname__属性,即合格名称,并将其用于生成器(repr(gen))的表示中。现在从函数而不是代码中获取生成器的默认名称(__name__属性)。使用gen.gi_code.co_name获取代码的名称。

  • bpo-21669:借助 SyntaxError .__ init_中的启发式方法,解析器现在try在将“ exec”和“ print”用作语句时生成更有意义(或至少对搜索引擎更友好)的错误消息。

  • bpo-21642:在条件 if-else 表达式中,允许其本身与else关键字(例如True if 42else False)之间没有空格的整数写入是有效语法。

  • bpo-21523:修复了编译器中某些操作码的堆栈效果的过于悲观的计算。这也解决了使用大量“和”和“或”运算符编译代码时引人注意的二次编译时间问题。

  • bpo-21418:修复了在没有参数且没有当前帧的情况下调用内置函数 super()时崩溃的问题(例如:嵌入式 Python)。

  • bpo-21425:修复交互式解释器中标准流的刷新。

  • bpo-21435:在极少数情况下,当在循环废料中的对象上运行终结器时,由于内部迭代逻辑中的细微缺陷,可能会导致错误的指针取消引用。

  • bpo-21377:现在,当第一个参数的引用计数为 1 时,PyBytes_Concat()try就地连接。Nikolaus Rath 修补程序。

  • bpo-20355:-W 命令行选项现在比 PYTHONWARNINGS 环境变量具有更高的优先级。由 Arfrever 修补。

  • bpo-21274:在 Python/pythonrun.c 中为 GNU/Hurd 定义 PATH_MAX。

  • bpo-20904:支持在 m68k 上设置 FPU 精度。

  • bpo-21209:使用语法的yield修复将 Tuples 发送到自定义生成器对象的问题。

  • bpo-21193:当 b 为负数时,pow(a,b,c)现在引发 ValueError 而不是 TypeError。 Josh Rosenberg 修补程序。

  • bpo-21176:PEP 465:添加“ @”运算符以进行矩阵乘法。

  • bpo-21134:修复在未初始化的 UnicodeEncodeError,UnicodeDecodeError 或 UnicodeTranslateError 对象上调用 str 时出现的段错误。

  • bpo-19537:修复 m68k 下的 PyUnicode_DATA()对齐方式。 Andreas Schwab 修补程序。

  • bpo-20929:添加类型转换,以避免移位负数。

  • bpo-20731:即使在文本模式下打开源代码文件,也要正确定位它们。 Serhiy Storchaka 修补程序。

  • bpo-20637:密钥共享现在也适用于子类的实例字典。 Peter Ingebretson 修补程序。

  • bpo-8297:模块中缺少的属性现在在错误文本中包括模块名称。 ysj.ray 的原始补丁。

  • bpo-19995:%c,%o,%x 和%X 现在在非整数 Importing 上引发 TypeError。

  • bpo-19655:ASDL 解析器(由构建过程用来生成用于 ManagementC 语言中的 Python AST 的代码)已被重写。新的解析器是自包含的,不需要长时间保存 spark.py parser-generator 库;从源库中删除了 spark.py。

  • bpo-12546:使用 str,int,float 和复杂的__format_方法时,允许\x00用作填充字符。

  • bpo-20480:添加 ipaddress.reverse_pointer。 Leon Weber 修补程序。

  • bpo-13598:修改 string.Formatter 以支持对替换字段进行自动编号。现在,它在这方面与 str.format()的行为匹配。 Phil Elson 和 Ramchandra Apte 的补丁。

  • bpo-8931:使类型'c'的替代格式('#')引发异常。在 3.5 之前的版本中,带#的'#'无效。现在指定它为错误。 Torsten Landschoff 的补丁。

  • bpo-23165:在_Py_char2wchar 函数中分配内存之前,请执行溢出检查。

Library

  • bpo-23399:pyvenv 在可能的情况下创建相对的符号链接。

  • bpo-20289:cgi.FieldStorage()现在支持上下文 Management 协议。

  • bpo-13128:调试级别> 0 时,打印 CONNECT 请求的响应 Headers。Demian Brecht 修补。

  • bpo-15381:优化了 io.BytesIO,以减少分配和复制。

  • bpo-22818:在可能与空字符串匹配的模式上拆分现在会发出警告。现在只能拒绝只能匹配空字符串的模式。

  • bpo-23099:现在拒绝关闭带有导出缓冲区的 io.BytesIO,以防止损坏导出缓冲区。

  • bpo-23326:删除__ne_实现。由于在bpo-21408中修复了默认的__ne_实现,因此它们是多余的。

  • bpo-23363:修复 itertools.permutations 中可能的溢出。

  • bpo-23364:修复 itertools.product 中可能的溢出。

  • bpo-23366:修复了 itertools.combinations 中可能的整数溢出的问题。

  • bpo-23369:修复了_json.encode_basestring_ascii 中可能的整数溢出。

  • bpo-23353:修复 PyEval_EvalFrameEx()中生成器的异常处理。在进入时,即使使用 throwflag = 0 调用 PyEval_EvalFrameEx(),也要保存或交换异常状态。在退出时,异常状态现在总是恢复或交换,不仅是为什么 WHY_YIELD 或 WHY_RETURN。与 Antoine Pitrou 共同撰写的补丁。

  • bpo-14099:恢复了将 ZIP 文件写入可分辨但不可寻找的流的支持。

  • bpo-14099:写入 ZipFile 和读取多个 ZipExtFiles 现在是线程安全的。

  • bpo-19361:JSON 解码器现在引发 JSONDecodeError 而不是 ValueError。

  • bpo-18518:timeit 现在拒绝无法在函数或循环外部编译的语句(例如“ return”或“ break”)。

  • bpo-23094:修正了在 pickle 的 Python 实现中带有框架的 readline。

  • bpo-23268:修复了 ipaddress 类比较中的错误。

  • bpo-21408:删除了__ne __()的错误实现,如果__eq __()返回 NotImplemented,则该实现不返回 NotImplemented。默认的__ne __()现在可以正常工作。

  • bpo-19996email.feedparser.FeedParser现在不使用键来处理(格式错误的)Headers,而不是假定主体已开始。

  • bpo-20188:在 ssl 模块中支持应用程序层协议协商(ALPN)。

  • bpo-23133:现在,对 ipaddress 对象进行 Pickling 将产生更紧凑和可移植的表示形式。

  • bpo-23248:从最新的 OpenSSL git master 更新 ssl 错误代码。

  • bpo-23266:当有许多非连续地址时,ipaddress.collapse_addresses()的实现要快得多。

  • bpo-23098:os 模块现在支持 64 位 dev_t。

  • bpo-21817:在提交给 ProcessPoolExecutor 的任务中引发异常时,现在在父进程中显示远程回溯。 Claudiu Popa 修补程序。

  • bpo-15955:添加选项以在解压缩 LZMA 数据时限制输出大小。 Nikolaus Rath 和 Martin Panter 的补丁。

  • bpo-23250:在 http.cookies 模块中,将标准编写的“ HttpOnly”和“ Secure”大写。

  • bpo-23063:在 distutils 的 check 命令中,使用代码或代码块指令修复 reST 的解析。

  • bpo-23209:现在,如果关闭 selectors,则 selectors.BaseSelector.get_key()会引发 RuntimeError。并且 selectors.BaseSelector.close()现在清除其对 selectorsMap 的内部引用,以 break 一个引用周期。马丁·理查德(Martin Richard)编写的初始补丁。 (另请参见:bpo-23225)

  • bpo-17911:提供一种无需实际加载代码即可为 PEP-302 模块设置线缓存的方法。

  • bpo-17911:提供新的对象 API 进行回溯,包括完全不查找行,直到实际渲染回溯,而没有任何原始对象的跟踪保持活动的能力。

  • bpo-19777:在 Path 对象上提供 home()类方法。由 Victor Salgado 和 Mayank Tripathi 提供。

  • bpo-23206:使json.dumps(..., ensure_ascii=False)与默认情况下ensure_ascii=True一样快。稻田直树(Naoki Inada)的补丁。

  • bpo-23185:添加 math.inf 和 math.nan 常数。

  • bpo-23186:添加 ssl.SSLObject.shared_ciphers()和 ssl.SSLSocket.shared_ciphers()来获取在握手时发送的 Client 端列表密码。

  • bpo-23143:删除与 0.9.8 之前的 OpenSSL 的兼容性。

  • bpo-23132:提高对 functool.total_ordering 创建的比较方法的性能和自省支持。

  • bpo-19776:在 Path 对象上添加 expanduser()方法。

  • bpo-23112:修复 SimpleHTTPServer,使其在重定向时添加尾随斜杠时正确携带查询字符串和片段。

  • bpo-21793:添加了 http.HTTPStatus 枚举(即 HTTPStatus.OK,HTTPStatus.NOT_FOUND)。 Demian Brecht 的补丁。

  • bpo-23093:在 io 中,模块允许更多操作在分离的流上进行。

  • bpo-23111:在 ftplib 中,将 ssl.PROTOCOL_SSLv23 设置为默认协议版本。

  • bpo-22585:在 OpenBSD 5.6 和更高版本上,os.urandom()现在调用 getentropy()而不是读取/ dev/urandom 来获取伪随机字节。

  • bpo-19104:pprint 现在为包装的字符串产生可评估的输出。

  • bpo-23071:向编解码器添加了缺少的名称。all。 Martin Panter 修补程序。

  • bpo-22783:Pickling 现在使用 NEWOBJ 操作码,而不是 NEWOBJ_EX 操作码。

  • bpo-15513:为 pickle 类添加了__sizeof_实现。

  • bpo-19858:pickletools.optimize()现在知道 MEMOIZE 操作码,如果 Importing 数据包含 MEMOIZE 操作码以及 PUT 或 BINPUT 操作码,则可以产生更紧凑的结果,并且不再产生无效的输出。

  • bpo-22095:使用默认端口修复了 HTTPConnection.set_tunnel。主机 Headers 中的端口值设置为“无”。 Demian Brecht 的补丁。

  • bpo-23016:使用 pythonw.exe 运行程序时,警告不再产生 AttributeError。

  • bpo-21775:shutil.copytree():修复了复制到 VFAT 时崩溃的问题。异常处理程序假定 OSError 对象始终具有“ winerror”属性。事实并非如此,因此异常处理程序本身在 Linux(以及可能是任何其他非 Windows OS)上运行时会引发 AttributeError。 Greg Ward 的补丁。

  • bpo-1218234:修复 inspect.getsource()以加载重新加载模块的更新源。 Berker Peksag 的最初补丁。

  • bpo-21740:在 doctest 中支持包装的可调用对象。 Claudiu Popa 修补程序。

  • bpo-23009:确保没有注册 FD 时,selectors.EpollSelector.select()起作用。

  • bpo-22959:在 http.client.HTTPSConnection 的构造函数中,与* check_hostname *参数相比,首选上下文的 check_hostname 属性。

  • bpo-22696:添加Functionsys.is_finalizing()以了解有关解释器关闭的信息。

  • bpo-16043:为 xmlrpclib.gzip_decode 将返回的数据量添加默认限制。这解决了 CVE-2013-1753.

  • bpo-14099:ZipFile.open()不再重新打开基础文件。现在,即使 ZipFile 是pass将类似文件的对象作为构造函数的第一个参数传入而创建的,由 ZipFile.open()返回的对象也可以独立于 ZipFile 进行操作。

  • bpo-22966:当要求 pyc_compile 编译源文件名中包含多个点的源文件时,请修复__pycache__ pyc 文件名问题。

  • bpo-21971:更新 turtledemo 文档并将模块添加到索引。

  • bpo-21032:修复了 HTTPConnection.getresponse()失败时套接字泄漏的问题。 Martin Panter 的原始补丁。

  • bpo-22407:不建议将 re.LOCALE 标志与 str 模式或 re.ASCII 一起使用。这是较新的作品。

  • bpo-22902:现在在 Linux 上使用“ ip”命令来确定 uuid.getnode()中的 MAC 地址。 Pach,布鲁诺·考埃特(Bruno Cauet)。

  • bpo-22960:将上下文参数添加到 xmlrpclib.ServerProxy 构造函数。

  • bpo-22389:添加 contextlib.redirect_stderr()。

  • bpo-21356:将 ssl.RAND_egd()设置为可选以支持 LibreSSL。在编译过程中检查Function的可用性。 Bernard Spil 编写的补丁。

  • bpo-22915:SAX 解析器现在支持使用文件 Descriptors 或字节路径打开的文件。

  • bpo-22609:集合模块中 Map 类的构造函数和更新方法现在接受 self 关键字参数。

  • bpo-22940:添加 readline.append_history_file。

  • bpo-19676:添加了“ namereplace”错误处理程序。

  • bpo-22788:将* context *参数添加到 logging.handlers.HTTPHandler 中。

  • bpo-22921:即使 OpenSSL 不支持 SNI,也允许 SSLContext 使用* hostname *参数。

  • bpo-22894:TestCase.subTest()将导致处于故障快速模式的测试套件停止,即使没有故障也是如此。

  • bpo-22796:HTTP cookie 解析现在更加严格,以防止潜在的注入攻击。

  • bpo-22370:pathlib 中的 Windows 检测现在更加可靠。

  • bpo-22841:在 asyncio add_signal_handler()中拒绝协程。 Ludovic.Gasc 修补程序。

  • bpo-19494:添加了 urllib.request.HTTPBasicPriorAuthHandler。 Matej Cepl 修补程序。

  • bpo-22578:向 re.error 类添加了属性。

  • bpo-22849:修复 io.TextIOWrapper 构造函数中可能的 double free。

  • bpo-12728:现在,在不区分大小写的正则表达式中匹配具有相同大写字母但具有不同小写字母的不同 Unicode 字符。

  • bpo-22821:在 64 位 big-endian 平台上修复了带有整数参数的 fcntl()。

  • bpo-21650:向 json.tool CLI 添加--sort-keys选项。

  • bpo-22824:更新了集合的 reprlib 输出格式以使用集合 Literals。补丁由 Berker Peksag 提供。

  • bpo-22824:更新了数组的 reprlib 输出格式,以显示空数组而没有不必要的空列表。由 Serhiy Storchaka 建议。

  • bpo-22406:修复了 uu_codec 编解码器错误地移植到 3.x 的问题。基于 Martin Panter 的补丁。

  • bpo-17293:uuid.getnode()现在使用 netstat 确定 AIX 上的 MAC 地址。基于 AivarsKalvāns 的补丁。

  • bpo-22769:不带参数调用时修复了 ttk.Treeview.tag_has()。

  • bpo-22417:默认情况下,在 httplib(PEP 476)中验证证书。

  • bpo-22775:修复了协议 2 及更高版本的 http.cookies.SimpleCookie 的解腌。 Tim Graham 的补丁。

  • bpo-22776:将排除的代码带入 SysLogHandler.emit()中 try 块的范围。

  • bpo-22665:将缺少的 get_terminal_size 和 SameFileError 添加到 shutil .__ all__。

  • bpo-6623:删除 ftplib 模块中不建议使用的 Netrc 类。 Matt Chaput 修补程序。

  • bpo-17381:固定处理正则表达式中不区分大小写的范围。

  • bpo-22410:现在,re 模块中的模块级函数考虑到语言环境,可以缓存与语言环境相关的已编译正则表达式。

  • bpo-22759:当基础统计调用引发 NotADirectoryError 时,pathlib.Path()(exists(),is_dir()等)上的查询方法现在返回 False。

  • bpo-8876:当硬链接不起作用时,distutils 现在退回到复制文件。这允许与特殊文件系统一起使用,例如 VirtualBox 共享文件夹。

  • bpo-22217:zipfile 模块中的类的已实现的 reprs。

  • bpo-22457:在发现的开始目录中遵守 load_tests。

  • bpo-18216:当.mo 文件具有不受支持的主要版本号时,gettext 现在引发错误。由 Aaron Hill 修补。

  • bpo-13918:提供 locale.delocalize()函数,该函数可以从表示数字的字符串中删除特定于语言环境的数字格式,而无需将其转换为特定类型。 CédricKrier 的补丁。

  • bpo-22676:使不具有__module_属性的全局对象的 Pickling 变慢。

  • bpo-18853:已修复 shlex .__ nain_中的 ResourceWarning。

  • bpo-9351:在 argparse 子解析器上使用 set_defaults 设置的默认值也将在父解析器上设置时不再被忽略。

  • bpo-7559:单元测试测试加载 ImportErrors 会以导入错误(带有导入异常)的形式报告为导入错误,而不是在导入失败后作为属性错误报告。

  • bpo-19746:无需执行测试套件即可检查来自单元测试发现的错误。 TestLoader 上的新errors属性公开了发现过程中遇到的这些非致命错误。

  • bpo-21991:将 email.headerregistry 的 Headers“ params”属性设置为只读(MappingProxyType)。以前,该字典是可修改的,但是每次访问该属性时都会创建一个新字典。

  • bpo-22638:现在在整个标准库中禁用 SSLv3.仍然可以pass手动实例化 SSLContext 来启用它。

  • bpo-22641:在 asyncio 中,现在使用 ssl.create_default_context()创建用于 Client 端连接的默认 SSL 上下文,以增强安全性。

  • bpo-17401:在 io.FileIO repr 中包含 closefd。

  • bpo-21338:添加用于编译的静默模式。现在,compile_{dir, file, path}函数的安静参数具有多级值。而且,CLI 的-q 选项现在具有一个多级值。 Thomas Kluyver 修补程序。

  • bpo-20152:将数组和 cmath 模块转换为 Argument Clinic。

  • bpo-18643:在 Windows 上添加 socket.socketpair()。

  • bpo-22435:修复套接字服务器绑定失败时文件 Descriptors 泄漏。

  • bpo-13096:修复了 CTypes POINTER 处理大值时的段错误。

  • bpo-11694:如所述提高 xdrlib 中的 ConversionError。 FilipGruszczyński 和 Claudiu Popa 的补丁。

  • bpo-19380:优化对正则表达式的解析。

  • bpo-1519638:现在,不匹配的组被 re.sub()和 re.subn()中的空字符串替换。

  • bpo-18615:sndhdr.what/whathdr 现在返回一个命名 Tuples。

  • bpo-22462:修复 pyexpat 创建的虚拟框架,使其出现在异常回溯中。

  • bpo-21965:将对内存 SSL 的支持添加到 ssl 模块。 Geert Jansen 修补程序。

  • bpo-21173:在激活迭代器的情况下调用.clear()时,将 len()修复在 WeakKeyDictionary 上。

  • bpo-11866:消除了新线程名称计算中的竞争条件。

  • bpo-21905:迭代时使 sys.modules 发生突变时,请在 pickle.whichmodule()中避免 RuntimeError。 Olivier Grisel 的补丁。

  • bpo-11271:parallel.futures.Executor.map()现在带有一个* chunksize *参数,以允许在子进程中批量处理任务并提高 ProcessPoolExecutor 的性能。 Dan O'Reilly 的补丁。

  • bpo-21883:os.path.join()和 os.path.relpath()现在引发 TypeError,其中包含针对不支持或不匹配的参数类型的更有用的错误消息。

  • bpo-22219:zipfile 模块 CLI 现在在 ZIP 文件中添加目录(包括空目录)的条目。

  • bpo-22449:在 ssl.SSLContext.load_default_certs 中,查询 Windows 上的环境变量 SSL_CERT_DIR 和 SSL_CERT_FILE。

  • bpo-22508:email .__ version_变量已被删除;电子邮件代码不再与 stdlib 分开提供,并且__version_尚未在多个发行版中进行更新。

  • bpo-20076:将非派生的 UTF-8 别名添加到语言环境别名表。

  • bpo-20079:将 glibc 2.18 中支持的语言环境添加到语言环境别名表中。

  • bpo-20218:向 pathlib.Path 对象添加了便捷方法 read_text/write_text 和 read_bytes/write_bytes。

  • bpo-22396:在 32 位 AIX 平台上,不要公开 os.posix_fadvise()或 os.posix_fallocate(),因为它们在系统头文件中的原型是错误的。

  • bpo-22517:释放 io.BufferedRWPair 对象时,请清除其 weakrefs。

  • bpo-22437:正则表达式中的捕获组数不再受限于 100.

  • bpo-17442:InteractiveInterpreter 现在在其 showtraceback 方法中显示完整的链式 traceback,以匹配内置的交互式解释器。

  • bpo-23392:添加了对与 FILE *一起使用的 marshalC API 的测试。

  • bpo-10510:distutils 注册和上传方法现在使用符合 HTML 标准的 CRLF 行结尾。

  • bpo-9850:修复了用于空的第一个组件的 macpath.join()。 Oleg Oshmyan 修补程序。

  • bpo-5309:distutils 的 build 和 build_ext 命令现在接受-j选项以启用扩展模块的并行构建。

  • bpo-22448:改进已取消的计时器处理,以防止未绑定的内存使用。 Joshua Moore-Oliva 的补丁。

  • bpo-22427:在 Generator 的 with 语句中使用时,TemporaryDirectory 不再try清除两次。

  • bpo-22362:在正则表达式中,禁止的八进制八进制转义超出范围 0-0o377.

  • bpo-20912:现在添加到 ZIP 文件的目录具有正确的 Unix 和 MS-DOS 目录属性。

  • bpo-21866:如果 allowZip64 为 false,则 ZipFile.close()不再写入 ZIP64 中央目录记录。

  • bpo-22278:使用相对 URL 修复 urljoin 问题,在对 issue22118 进行更改后,观察到了回归。

  • bpo-22415:修复了 re 模块中 GROUPREF_EXISTS 操作码的调试输出。在调试输出中删除了尾随空格。

  • bpo-22423:当 sys.stderr 为 None 时,线程中未处理的异常不再导致未处理的 AttributeError。

  • bpo-21332:确保 subprocess.Popen()中的bufsize=1选择行缓冲,而不是块缓冲。李晃晃的补丁。

  • bpo-21091:修复 API 错误:email.message.EmailMessage.is_attachment 现在是一种方法。

  • bpo-21079:修复 Headers 包含参数和值的情况下的 email.message.EmailMessage.is_attachment 返回正确的结果。

  • bpo-22247:将 NNTPError 添加到 nntplib .__ all__。

  • bpo-22366:urllib.request.urlopen 将接受上下文对象(SSLContext)作为参数,然后将其用于 HTTPS 连接。 Alex Gaynor 修补程序。

  • bpo-4180:修改过滤器后,现在可以重置警告注册表。

  • bpo-22419:将 wsgiref 服务器中传入的 HTTP 请求的长度限制为 65536 字节,并为更大的长度发送 414 错误代码。补丁由 Devin Cook 提供。

  • 与某些 Web 浏览器中的非标准 cookie 处理结合使用时,http.cookies 中的宽松 cookie 解析可能是一个安全问题。 Sergey Bobrov 报道。

  • bpo-20537:日志记录方法现在接受异常实例以及布尔值或异常 Tuples。感谢 Yury Selivanov 的补丁。

  • bpo-22384:使用 pythonw.exe 运行时,Tkinter 回调中的异常不再使程序崩溃。

  • bpo-22168:使用 OS X 上的非默认 Canvas 防止 turtle AttributeError。

  • bpo-21147:如果请求包含空字符而不是将其截断,则 sqlite3 现在引发异常。基于 Victor Stinner 的补丁。

  • bpo-13968:glob 模块现在支持使用**模式在子目录中进行递归搜索。

  • bpo-21951:修复了使用空字符串或 Tuples 参数调用 Tcl 命令时在 AIX 上 Tkinter 崩溃的问题。

  • bpo-21951:如果内存分配失败,Tkinter 现在很可能引发 MemoryError 而不是崩溃。

  • bpo-22338:修复了内存分配失败时 json 模块崩溃的问题。

  • bpo-12410:imaplib.IMAP4 现在支持上下文 Management 协议。 TarekZiadé的原始补丁。

  • bpo-21270:现在,我们重写了 Mock 对象中的 Tuples 方法,以便可以将它们用作常规的调用属性。

  • bpo-16662:当包的__init__.py 中包含 load_tests()时,它将无条件运行。 TestLoader.loadTestsFromModule()仍然接受 use_load_tests,但已弃用并忽略它。添加并记录了新的仅关键字属性pattern。罗伯特·柯林斯(Robert Collins)发布的补丁,巴里·华沙(Barry Warsaw)对其进行了调整。

  • bpo-22226:Treeview.heading()结果中的“ status”键不再删除第一个字母。

  • bpo-19524:修复了收到无效响应时 HTTPConnecting 的资源泄漏。 Martin Panter 修补程序。

  • bpo-20421:向 SSL 套接字添加.version()方法,以暴露实际使用的协议版本。

  • bpo-19546:configparser 异常不再公开实现细节。链接的 KeyError 错误被删除,这将导致更清晰的回溯。 Claudiu Popa 修补程序。

  • bpo-22051:turtledemo 不再重新加载示例以重新运行它们。变量和 gui 设置的初始化应在 main()中完成,每次运行演示时都会调用它,但在导入时则不会调用。

  • bpo-21933:Turtledemo 用户可以pass菜单选择或控制(命令)“-”或“”或控制鼠标轮来更改代码字体大小。 Lita Cho 的原始补丁。

  • bpo-21597:现在可以用鼠标抓取并拖动 turtledemo 文本窗格和绘图画布之间的分隔符。可以扩展代码文本窗格,以轻松查看或复制文本的整个宽度。可以在小屏幕上加宽画布。 Jan Kanis 和 Lita Cho 的原始补丁。

  • bpo-18132:缩小窗口时,Turtledemo 按钮不再消失。 Jan Kanis 和 Lita Cho 的原始补丁。

  • bpo-22043:time.monotonic()现在始终可用。现在,使用超时时,threading.Lock.acquire()threading.RLock.acquire()和套接字操作使用单调时钟而不是系统时钟。

  • bpo-21527:向 ThreadPoolExecutor 添加默认数量的工作程序,其数量等于 CPU 数量的 5 倍。 Claudiu Popa 修补程序。

  • bpo-22216:退出后,smtplib 现在可以更完全地重置其状态。先前行为的最明显后果是在 connect/starttls/quit/connect/starttls 序列期间发生 STARTTLS 故障。

  • bpo-22098:ctypes 的 BigEndianStructure 和 LittleEndianStructure 现在定义一个空的__slots__,以便子类不必总是获取实例字典。 Claudiu Popa 修补程序。

  • bpo-22185:修复了由于在不持有锁的情况下更改服务员队列而在 threading.Condition.wait()中偶尔出现 RuntimeError 的问题。 Doug Zongker 的补丁。

  • bpo-22287:在 UNIX 上,_PyTime_gettimeofday()现在使用 clock_gettime(CLOCK_REALTIME)(如果可用)。作为副作用,Python 现在依赖于 Solaris 和 Linux 上的 librt 库(仅适用于早于 2.17 的 glibc)。

  • bpo-22182:使用 e.args 在 distutils.file_util.move_file 中正确解包异常。 Claudiu Popa 修补程序。

  • 现在,webbrowser 模块使用子进程的 start_new_session = True 而不是具有潜在风险的 preexec_fn = os.setsid 调用。

  • bpo-22042:如果文件 Descriptors 处于阻止模式,signal.set_wakeup_fd(fd)现在会引发异常。

  • bpo-16808:inspect.stack()现在返回一个命名的 Tuples 而不是 Tuples。 Daniel Shahaf 修补程序。

  • bpo-22236:修复了 NoDefaultRoot 模式下的 Tkinter 图像复制操作。

  • bpo-2527:向 timeit 函数添加* globals *参数,以便覆盖在其中执行定时代码的 globals 命名空间。本·罗伯茨的补丁。

  • bpo-22118:切换 urllib.parse 以使用 RFC 3986 语义来解析相对 URL,而不是 RFC 1808 和 2396.Demian Brecht 进行了修补。

  • bpo-21549:在 TarFile.list()中添加了“ members”参数。

  • bpo-19628:允许使用-r 选项指定 compileall 递归深度。

  • bpo-15696:为 Windows 上的 mmap 对象添加__sizeof_实现。

  • bpo-22068:避免在 Tkinter 中使用变量和字体进行引用循环。

  • bpo-22165:SimpleHTTPRequestHandler 现在支持无法解码的文件名。

  • bpo-15381:优化了 io.BytesIO 中的行读取。

  • bpo-8797:立即对失败的基本身份验证引发 HTTPError。 Sam Bull 的最初补丁。

  • bpo-20729:恢复在邮箱模块中使用惰性 iterkeys()/ itervalues()/ iteritems()。

  • bpo-21448:更改了 FeedParser feed()以避免在分析长行时出现 O(N ** 2)行为。 Raymond Hettinger 的原始补丁。

  • bpo-22184:当用户忘记了必需的参数时,functools LRU Cache 装饰器工厂现在会提供更早,更清晰的错误消息。

  • bpo-17923:以斜杠结尾的 glob()模式不再与 AIX 上的非目录匹配。基于 Delhallt 的补丁。

  • bpo-21725:在 smtpd 中添加了对 RFC 6531(SMTPUTF8)的支持。

  • bpo-22176:将 ctypes 模块的 libffi 更新为 v3.1. 此版本增加了对 Linux AArch64 和 POWERPC ELF ABIv2 小字节序体系结构的支持。

  • bpo-5411:在 shutil 模块中添加了对“ xztar”格式的支持。

  • bpo-21121:不要强制使用-Werror = declaration-after-statement 构建第三方 C 扩展。

  • bpo-21975:修复了在使用未初始化的 sqlite3.Row 时崩溃的问题(尤其是在对腌制的 sqlite3.Row 进行 Pickling 时)。 sqlite3.Row 现在已在__new __()方法中初始化。

  • bpo-20170:将 posixmodule 转换为使用 Argument Clinic。

  • bpo-21539:向Pathlib.mkdir()添加* exists_ok *参数以模拟mkdir -pos.makedirs()Function。如果为 true,则忽略 FileExistsErrors。 Berker Peksag 的补丁。

  • bpo-22127:绕过 IDNA,以获取套接字模块中的纯 ASCII 主机名(特别是对于数字 IP)。

  • bpo-21047:将 HTMLParser 的* convert_charrefs *参数的默认值设置为 True。 Berker Peksag 的补丁。

  • 将__all_添加到 html.entities。

  • bpo-15114:已删除 HTMLParser,HTMLParser.error 和 HTMLParserError 异常的严格模式和参数。

  • bpo-22085:在 Tkinter 中放弃了对 Tk 8.3 的支持。

  • bpo-21580:现在,Tkinter 可以正确处理传递给 Tk 的字节参数。特别地,这允许从二进制数据初始化图像。

  • bpo-22003:从字节对象初始化后,io.BytesIO()现在推迟进行复制,直到其被突变为止,从而在某些用例上提高了性能和内存使用率。 David Wilson 修补程序。

  • bpo-22018:在 Windows 上,signal.set_wakeup_fd()现在也支持套接字。副作用是 Python 依赖于 WinSock 库。

  • bpo-22054:添加 os.get_blocking()和 os.set_blocking()函数以获取并设置文件 Descriptors 的阻止模式(如果设置了 O_NONBLOCK 标志,则为 False,否则为 True)。这些Function在 Windows 上不可用。

  • bpo-17172:即使在使用子进程运行时,也要使 turtledemo 在 OS X 上启动为活动状态。 Lita Cho 的补丁。

  • bpo-21704:修复了 signal 灯不可用时_multiprocessing 的构建错误。由 Arfrever Frehtes Taifersar Arahesis 修补的补丁。

  • bpo-20173:将 sha1,sha256,sha512 和 md5 转换为 ArgumentClinic。 Vajrasky Kok 的补丁。

  • 修复 repr(_socket.socket)在 Windows 64 位上:不会因封闭套接字上的 OverflowError 而失败。 repr(socket.socket)已经可以正常工作了。

  • bpo-22033:大多数 Python 实现的类的代表现在都包含实际的类名,而不是硬编码的类名。

  • bpo-21947:现在,dis 模块可以根据其 gi_code 属性反汇编 generator-iterator 对象。 Clement Rouault 修补程序。

  • bpo-16133:asynchat.async_chat.handle_read()方法现在忽略 BlockingIOError 异常。

  • bpo-22044:修复了 call_tzinfo_method 中的过早 DECREF。 Tom Flanagan 修补程序。

  • bpo-19884:readline:如果 stdout 不是终端,则禁用 meta 修饰符键,以不将 ANSI 序列"\033[1034h"写入 stdout。在某些终端上使用此序列(例如:TERM = xterm-256color“)以支持 8 位字符。

  • bpo-4350:删除了许多长时间的 Tkinter 方法过时和无效的方法。

  • bpo-6167:如果未指定参数,Scrollbar.activate()现在将返回活动元素的名称。 Scrollbar.set()现在始终仅接受 2 个参数。

  • bpo-15275:清理并加速 ntpath 模块。

  • bpo-21888:如果指定了 fmt 参数,则 plistlib 的 load()和 load()现在可以工作。

  • bpo-22032:__qualname_而不是__name_现在总是用于格式化 Python 实现的类的完全限定的类名。

  • bpo-22031:当 reprs 包含形式为“ at 0x…”的 ID 时,现在始终使用带有“ 0x”前缀的十六进制格式。

  • bpo-22018:signal.set_wakeup_fd()现在在出现fstat()故障时引发 OSError 而不是 ValueError。

  • bpo-21044:tarfile.open()现在使用整数'name'属性处理 fileobj。基于 Antoine Pietri 的补丁。

  • bpo-21966:运行代码模块时,请遵守-q 命令行选项。

  • bpo-19076:不要将多余的“文件”参数传递给 self.error()。

  • bpo-16382:针对不良类别改善了 warnings.warn()的异常消息。 Phil Elson 的最初补丁。

  • bpo-21932:os.read()现在使用Py_ssize_t()类型而不是int作为其大小,以支持一次读取超过 2 GB。在 Windows 上,大小被截断为 INT_MAX。作为对 os.read()的任何调用,OS 读取的字节数可能少于请求的字节数。

  • bpo-21942:修复了在 Windows 上以 pydoc 服务器模式查看源文件的问题。

  • bpo-11259:现在,如果接收的字节数为负,则 asynchat.async_chat()。set_terminator()引发 ValueError。

  • bpo-12523:asynchat.async_chat.push()现在如果未获取字节字符串则引发 TypeError

  • bpo-21707:将缺少的 kwonlyargcount 参数添加到 ModuleFinder.replace_paths_in_code()。

  • bpo-20639:调用 Path.with_suffix('')允许再次删除后缀。 7 月 Tikhonov 修补程序。

  • bpo-21714:禁止使用 Path.with_name()构造无效路径。李小龙的原始补丁。

  • bpo-15014:在 smtplib 中添加了“ auth”方法,以简化实现 auth 机制的过程,并在 login 方法中内部使用了它。

  • bpo-21151:修复了将None作为REG_BINARY值传递给 SetValueEx 时 winreg 模块中的段错误。 John Ehresman 修补程序。

  • bpo-21090:io.FileIO.readall()不再忽略 I/O 错误。以前,如果至少第一个 C 调用 read()成功,它将忽略 I/O 错误。

  • bpo-5800:wsgiref.headers.Headers 的 headers 参数现在是可选的。 Pablo Torres Navarrete 和 SilentGhost 的最初补丁。

  • bpo-21781:ssl.RAND_add()现在支持长度超过 2 GB 的字符串。

  • bpo-21679:防止在 open()期间进行不必要的 fstat()调用。 Bohuslav Kabrda 修补程序。

  • bpo-21863:cProfile 现在除了显示其自身名称之外,还显示 C 扩展Function的模块名称。

  • bpo-11453:异步:销毁未关闭的 file_wrapper 对象时,发出 ResourceWarning。现在,如果需要,析构函数将关闭文件。现在可以两次调用 close()方法:第二个调用不执行任何操作。

  • bpo-21858:在 sqlite3 模块中更好地处理 Python 异常。

  • bpo-21476:请确保在解析后将 email.parser.BytesParser TextIOWrapper 丢弃,以免意外关闭 Importing 文件。

  • bpo-20295:imghdr 现在可以识别 OpenEXR 格式的图像。

  • bpo-21729:在 dbm.dumb 模块中使用“ with”语句来确保文件关闭。 Claudiu Popa 修补程序。

  • bpo-21491:套接字服务器:修复子进程获取中的竞争条件。

  • bpo-21719:在 Windows 上将st_file_attributes字段添加到 os.stat_result 中。

  • bpo-21832:要求命名的 TuplesImporting 为完全字符串。

  • bpo-21722:当上传失败时,distutils“ upload”命令现在以非零返回码退出。 Martin Dengler 修补程序。

  • bpo-21723:asyncio.Queue:支持最大大小的任何类型的数字(例如:float)。 Vajrasky Kok 编写的补丁。

  • bpo-21711:现在已从站点模块中删除了对“ site-python”目录的支持(在 3.4 中已弃用)。

  • bpo-17552:新的 socket.sendfile()方法,允许在 UNIX 上使用高性能的 os.sendfile()pass套接字发送文件。 Giampaolo Rodola 发布的补丁。

  • bpo-18039:现在,当标志的值为“ n”时,dbm.dump.open()始终创建一个新数据库。 Claudiu Popa 修补程序。

  • bpo-21326:向 asyncio.BaseEventLoop 添加新的 is_closed()方法。现在,如果关闭了事件循环,则 asyncio.BaseEventLoop 的 run_forever()和 run_until_complete()方法会引发异常。

  • bpo-21766:在检查该路径的 CGI 脚本之前,pass取消引用路径的 URL 来防止 CGIHTTPServer 中的安全漏洞。

  • bpo-21310:修复了 open()失败时可能发生的资源泄漏。

  • bpo-21256:在模拟函数调用中,关键字 args 的打印输出应以确定的 Sequences 进行。这将有助于编写更好的 doctest。

  • bpo-21677:修复了 io close()方法中的链式非规范化异常。

  • bpo-11709:修复了 sys.stdin 不是有效文件时 pydoc.help 函数不会失败的问题。

  • bpo-21515:tempfile.TemporaryFile 现在使用 os.O_TMPFILE 标志可用。

  • bpo-13223:修复 pydoc.writedoc,以便正确生成示例代码中使用“ self”的方法的 HTML 文档。

  • bpo-21463:在 urllib.request 中,修复 FTP 缓存的修剪。

  • bpo-21618:子进程模块可能无法关闭由调用进程继承的打开的 fds,否则该打开的 fds 已经超出 POSIX 资源限制。在具有正常运行的/ proc/self/fd 或/ dev/fd 接口的系统上,最大值现在被忽略,所有 fds 关闭。

  • bpo-20383:引入 importlib.util.module_from_spec()作为创建新模块的首选方法。

  • bpo-21552:修复了 64 位平台上 tkinter 模块中字符串长度太长的整数溢出的可能。

  • bpo-14315:zipfile 模块现在忽略中央目录中太短而无法解析的其他字段,而不是让 struct.unpack 错误冒泡,因为此“错误数据”出现在许多现实世界的 zip 文件中,并被忽略其他压缩工具。

  • bpo-13742:在 heapq.merge()中添加了“ key”和“ reverse”参数。 (补丁的初稿由 Simon Sapin 提供.)

  • bpo-21402:tkinter.ttk 现在可以在未设置默认根窗口的情况下使用。

  • bpo-3015:_tkinter.create()现在默认情况下创建带有 wantobject = 1 的 tkapp 对象。

  • bpo-10203:sqlite3.Row 现在 true 支持序列协议。特别是它支持 reverse()和负索引。 Claudiu Popa 的原始补丁。

  • bpo-18807:如果为 venv 指定复制(没有符号链接),则现在pass复制而不是符号链接来创建 python 解释器别名(python,python3)。

  • bpo-20197:在 imghdr 模块中增加了对 WebP 图像类型的支持。 Fabrice Aneche 和 Claudiu Popa 的补丁。

  • bpo-21513:加速 IP 地址的某些属性(IPv4Address,IPv6Address),例如.is_private 或.is_multicast。

  • bpo-21137:pass显示“已锁定”或“未锁定”状态来改进 threading.Lock()及其变体的表示。 Berker Peksag 的补丁。

  • bpo-21538:现在,当引用或偏移量大小不是 2 的幂时,plistlib 模块支持加载二进制 plist 文件。

  • bpo-21455:将默认积压添加到 socket.listen()。

  • bpo-21525:现在大多数接受 Tuples 的 Tkinter 方法也接受列表。

  • bpo-22166:借助新的内部_codecs._forget_codec 帮助Function,test_codecs 现在清除了编码缓存,以避免出现参考泄漏

  • bpo-22236:Tkinter 测试现在不再重用默认的根窗口。为每个测试类创建新的根窗口。

  • bpo-10744:修复具有非平凡形状的 ctypes 对象的 PEP 3118格式字符串。

  • bpo-20826:优化 ipaddress.collapse_addresses()。

  • bpo-21487:优化 ipaddress.summarize_address_range()和 ipaddress。\ {IPv4Network,IPv6Network} .subnets()。

  • bpo-21486:优化对 ipaddress.IPv4Network 和 ipaddress.IPv6Network 中的网络掩码的解析。

  • bpo-13916:对于非 UTF- *编码,不允许使用 surrogatepass 错误处理程序。

  • bpo-20998:修复了带有忽略大小写的重复单字符模式的 re.fullmatch()。 Matthew Barnett 的原始补丁。

  • bpo-21075:fileinput.FileInput 现在可以从标准流中读取字节(如果指定了二进制模式)。 Sam Kimbrel 修补程序。

  • bpo-19775:向 pathlib 路径对象添加一个 samefile()方法。 Vajrasky Kok 的最初补丁。

  • bpo-21226:在 PyImport_ExecCodeModuleObject(和朋友)中正确设置模块。

  • bpo-21398:当文档中包含标准编码格式无法编码的字符时,请在 pydoc 传呼机中修复 unicode 错误。

  • bpo-16531:ipaddress.IPv4Network 和 ipaddress.IPv6Network 现在接受(地址,网络掩码)Tuples 参数,以便轻松地从现有地址构造网络对象。

  • bpo-21156:importlib.abc.InspectLoader.source_to_code()现在是静态方法。

  • bpo-21424:简化并优化了 heaqp.nlargest()和 nmsmallest(),以减少 Tuples 比较。

  • bpo-21396:修复 TextIOWrapper(...,write_through = True)不会在基础二进制流上强制使用 flush()。由 akira 修补。

  • bpo-18314:现在,取消链接将删除 Windows 上的联结。 KimGräsman 的补丁

  • bpo-21088:3.4.0 中 curses.window.addch()回归的错误修复。在移植到 Argument Clinic 时,前两个参数被颠倒了。

  • bpo-21407:_decimal:该模块现在支持Function签名。

  • bpo-10650:从 Python 版本的 Decimal.quantize()方法中删除非标准的“ watchexp”参数。它从未出现在 C 版本中。

  • bpo-21469:pass在 can_fetch()中返回 True 之前进行检查以确保已读取或不存在 robots.txt,从而降低了 robotparser 中误报的风险。

  • bpo-19414:将 OrderedDict 标记删除的链接无效。如果链接在迭代过程中被删除,这将导致早期故障。

  • bpo-21421:将__slots_添加到 MappingViews ABC。 Josh Rosenberg 修补程序。

  • bpo-21101:消除了 collections.Counter()的 C 加速代码中的双重哈希。

  • bpo-21321:现在,当切片耗尽时,itertools.islice()释放对源迭代器的引用。 Anton Afanasyev 修补程序。

  • bpo-21057:TextIOWrapper 现在允许基础二进制流的 read()或 read1()方法返回任意类似字节的对象(例如 memoryview)。 Nikolaus Rath 的补丁。

  • bpo-20951:现在,如果操作将阻塞,则 SSLSocket.send()会在非阻塞套接字上引发 SSLWantReadError 或 SSLWantWriteError。以前,它将返回 0.Nikolaus Rath 修补程序。

  • bpo-13248:删除了以前不推荐使用的 asyncore.dispatcher __getattr_廉价继承 hack。

  • bpo-9815:assertRaises 现在try清除异常回溯中对局部变量的引用。

  • bpo-19940:ssl.cert_time_to_seconds()现在解释 UTC 时区(如 RFC 5280 中指定)中的给定时间字符串,而不是本地时区。

  • bpo-13204:调用 sys.flags .__ new_将使解释器崩溃,因为它现在引发 TypeError。

  • bpo-19385:在关闭的 dbm.dumb 数据库上进行操作总是会引发相同的异常。

  • bpo-21207:检测 os.urandom 缓存的 fd 是何时关闭或更换的,然后重新打开。

  • bpo-21291:子进程的 Popen.wait()现在是线程安全的,以便多个线程可以同时在 Popen 实例上调用 wait()或 poll(),而不会丢失 Popen.returncode 值。

  • bpo-21127:现在可以从 str 子类实例(例如numpy.str_)实例化路径对象。

  • bpo-15002:使用_TemporaryFileWrapper(和_TemporaryFileCloser)工具的 urllib.response 对象。提供更好的方式处理文件 Descriptors 关闭。补丁由 Christian Theune 提供。

  • bpo-12220:mindom 现在引发一个自定义 ValueError,指示它不支持 URI 中的空格,而不是让'split'ValueError 冒泡。

  • bpo-21068:ssl.PROTOCOL *常量现在是枚举成员。

  • bpo-21276:posixmodule:不要在 KFreeBSD 和 Hurd 上定义 USE_XATTRS。

  • bpo-21262:为 Mock 调用了新方法 assert_not_。如果已调用该模拟,则会引发 AssertionError。

  • bpo-21238:将新的关键字参数unsafe传递给 Mock。如果属性以 assert 或 assret 开头,则会引发AttributeError

  • bpo-20896:ssl.get_server_certificate()现在使用 PROTOCOL_SSLv23,而不是 PROTOCOL_SSLv3,以实现最大的兼容性。

  • bpo-21239:多次修补同一名称时,patch.stopall()无法确定地工作。

  • bpo-21203:更新了 fileConfig 和 dictConfig 以消除不一致之处。感谢 Jure Koren 的补丁程序。

  • bpo-21222:现在可以将 name 关键字参数传递给 mock.create_autospec。

  • bpo-21197:在 64 位非 OS X POSIX 上的 venvs 中添加 lib64-> lib symlink。

  • bpo-17498:某些 SMTP 服务器在某些错误后会断开连接,这违反了严格的 RFC 一致性。 smtplib 现在不但不会在发出后续的 RSET 时丢失错误代码,反而会返回错误代码并推迟引发 SMTPServerDisconnected 错误,直到发出下一个命令为止。

  • bpo-17826:现在可以在由 create_autospec 创建的模拟函数上设置可迭代的 side_effect。 Kushal Das 修补程序。

  • bpo-7776:修复Host:Headers 并在使用 http.client.HTTPConnection.set_tunnel()时重新连接。 Nikolaus Rath 的补丁。

  • bpo-20968:unittest.mock.MagicMock 现在支持除法。 Johannes Baiter 的补丁。

  • bpo-21529:使用负第二个参数修复 JSONDecoder.raw_decode 中的任意内存访问。 Guido Vranken 报告的错误。 (另请参阅:CVE-2014-4616)

  • bpo-21169:getpass 现在处理 Importing 流编码无法pass使用替换错误处理程序进行重新编码而编码的非 ASCII 字符。

  • bpo-21171:修复了 rot13 编解码器的未公开文档的过滤器 API。 Berker Peksag 的补丁。

  • bpo-20539:改进了适用于大型正 Importing 的 math.factorial 错误消息,并更改了适用于大型负 Importing 的异常类型(OverflowError-> ValueError)。

  • bpo-21172:从 dict 到 collection 的 isinstance 检查放松了。

  • bpo-21155:如果同时指定了路径和袜子,asyncio.EventLoop.create_unix_server()现在会引发 ValueError。

  • bpo-21136:避免因电源和其他操作导致不必要的分数归一化。 Raymond Hettinger 修补程序。

  • bpo-17621:引入 importlib.util.LazyLoader。

  • bpo-21076:将 signal 模块常量转换为枚举。 Giampaolo Rodola 发布的补丁。

  • bpo-20636:改进了 Tkinter 小部件的代表。

  • bpo-19505:OrderedDict 的项目,键和值视图现在支持使用 reversed()进行反向迭代。

  • bpo-21149:改进了解释器关闭过程中日志清理的线程安全性。感谢 Devin Jeanpierre 的补丁。

  • bpo-21058:修复tempfile.NamedTemporaryFile()中文件 Descriptors 的泄漏,如果io.open()失败,则关闭文件 Descriptors

  • bpo-21200:缺少__spec_时,从 pkgutil.get_loader()返回 None。

  • bpo-21013:增强了用于服务器端套接字的 ssl.create_default_context()的默认设置,以提供更好的安全性。

  • 如果第二个参数不是字符串或已编译的正则表达式,则bpo-20145assertRaisesRegexassertWarnsRegex现在引发 TypeError。

  • bpo-20633:用绝对导入替换相对导入。

  • bpo-20980:使用 ThreadPool 时停止包装异常。

  • bpo-21082:在 os.makedirs 中,请勿设置整个进程的 umask。请注意,当 exist_ok = True 时,这会更改 makedir 的行为。

  • bpo-20990:修复 pyflakes 发现的用于 multiprocessing 的问题。

  • bpo-21015:SSL 上下文现在将自动为 OpenSSL 1.0.2 和更高版本上的 ECDH 密钥交换选择一条椭圆曲线,否则默认为“ prime256v1”。

  • bpo-21000:改进 json.tool 的命令行界面。

  • bpo-20995:增强 ssl 模块使用的默认密码,以提高安全性并确定完美的前向保密性。

  • bpo-20884:不要假定在 importlib .__ init_上定义了__file__。

  • bpo-21499:在多个 test_importlib.test_api 测试中忽略__builtins__。

  • bpo-20627:xmlrpc.client.ServerProxy 现在是上下文 Management 器。

  • bpo-19165:格式化程序模块现在引发 DeprecationWarning 而不是 PendingDeprecationWarning。

  • bpo-13936:删除 datetime.time 实例在布尔上下文中被视为 false 的Function。

  • bpo-18931:selectors 模块现在在 Solaris 上支持/ dev/poll。 Giampaolo Rodola 发布的补丁。

  • bpo-19977:当LC_TYPE语言环境是 POSIX 语言环境(C语言环境)时,sys.stdinsys.stdout现在正在使用surrogateescape错误处理程序,而不是strict错误处理程序。

  • bpo-20574:为 cp65001 代码(Windows 代码页 65001,Microsoft UTF-8)实现增量解码器。

  • bpo-20879:延迟 base64 模块中的 base32,ascii85 和 base85 编解码器的编码和解码表的初始化,并延迟 urllib.parse 模块的 unquote_to_bytes()表的初始化,以免浪费内存(如果不使用这些模块)。

  • bpo-19157:将 Broadcast 地址包含在 ipaddress 中 IPv6 的可用主机中。

  • bpo-11599:当设置了环境变量 DISTUTILS_DEBUG 时,当外部命令(例如编译器)失败时,distutils 现在将打印出整个命令行(而不仅仅是命令名)。

  • bpo-4931:distutils 不应再产生无用的“错误:无”消息。 distutils.util.grok_environment_error 会保留,但不建议使用 doc。

  • bpo-20875:防止可能的 gzip“未定义'read'” NameError。 Claudiu Popa 修补程序。

  • 如果在is_multipart为 False 的消息上调用attach,则bpo-11558email.message.Message.attach现在返回更有用的错误消息。

  • bpo-20283:RE 模式方法现在接受记录的字符串关键字参数。 pattern 和 source 关键字参数保留为不推荐使用的别名。

  • bpo-20778:修复 modulefinder 以与仅字节码的模块一起使用。

  • bpo-20791:当 Importing 是字节对象时,copy.copy()现在不会进行复制。 Peter Otten 的最初补丁。

  • bpo-19748:在 AIX 上,time.mktime()现在引发年份超出范围[1902; 2037]。

  • bpo-19573:inspect.signature:将枚举用于参数种类常量。

  • bpo-20726:检查签名:使签名和参数可腌制。

  • bpo-17373:添加 inspect.Signature.from_callable 方法。

  • bpo-20378:改进检查的代表。签名和检查。参数。

  • bpo-20816:修复了 inspect.getcallargs()以针对缺少仅关键字参数的情况引发正确的 TypeError。 Jeremiah Lowin 的补丁。

  • bpo-20817:如果缺少 3 个以上的参数,则将 inspect.getcallargs()修复为正确失败。 Jeremiah Lowin 的补丁。

  • bpo-6676:确保在try每个 pyexpat xmlparser 实例解析多个 XML 文档时引发有意义的异常。 (Hirokazu Yamamoto 和 Amaury Forgeot d'Arc 的原始补丁,David Gutteridge 建议的措词)

  • bpo-21117:修复 inspect.signature 以更好地支持 functools.partial。由于 functools.partial 实现的特定性,作为关键字参数传递的位置或关键字参数变为仅关键字。

  • bpo-20334:inspect.Signature 和 inspect.Parameter 现在可哈希化。感谢 Antony Lee 提供的错误报告和建议。

  • bpo-15916:doctest.DocTestSuite 返回一个空的 unittest.TestSuite,而不是在未找到任何测试的情况下引发 ValueError

  • bpo-21209:修复 asyncio.tasks.CoroWrapper 来解决 3.4.1 之前的 CPython 中 yield-from 实施中的错误。

  • 异步:将 gi_{frame,running,code}属性添加到 CoroWrapper(上游bpo-163)。

  • bpo-21311:避免使用非标准编译器配置的_osx_support 中的异常。 John Szakmeister 的补丁。

  • bpo-11571:确保在 OS X 上启动时,turtle 窗口成为最上面的窗口。

  • bpo-21801:验证__signature_为 None 还是 Signature 的实例。

  • bpo-21923:由于可能未初始化的_config_vars,请防止 distutils.sysconfig.customize_compiler 中的 AttributeError。

  • bpo-21323:修复了 http.server,以再次处理 CGI 子目录中的脚本,但由于安全性bpo-19435的修复而被破坏。 Zach Byrne 的补丁。

  • bpo-22733:修复 ffi_prep_args 不能在 64 位 Windows 上正确将参数扩展为零。

  • bpo-23302:构建 HTTPConnection 时默认为 TCP_NODELAY = 1.取消了对硬编码 MSS 的使用,因为它是禁用 Nagle 时不再需要的优化。

IDLE

  • bpo-20577:FormatParagraphextensions 的最大行长配置已从“空闲”首选项对话框的“常规”选项卡移至“配置 extensions”对话框的“ FormatParagraph”选项卡。 Tal Einat 修补程序。

  • bpo-16893:更新空闲文档章节以匹配当前的空闲并添加新信息。

  • bpo-3068:将“空闲扩展”配置对话框添加到“选项”菜单。所做的更改将写入 HOME/.idlerc/config-extensions.cfg。 Tal Einat 的原始补丁。

  • bpo-16233:模块浏览器(文件:类浏览器,Alt C)需要带有文件名的编辑器窗口。否则,如果从 Shell 程序,输出窗口或“无标题”编辑器中请求“类浏览器”,则“空闲”不再显示错误框。现在,它会弹出一个“打开模块”框(Alt M)。如果 Importing 了有效名称并打开了模块,则还将打开相应的浏览器。

  • bpo-4832:另存为键入 Python 文件会自动将.py 添加到您 Importing 的名称中(即使您的系统未显示它)。当类型为文本文件时,某些系统会自动添加.txt。

  • bpo-21986:咸菜模块通常不会腌制代码对象。为此,它们在空闲状态下运行时不再被腌制。

  • bpo-17390:调整编辑器窗口标题;删除“ Python”,将版本移至末尾。

  • bpo-14105:插入或删除行时,空闲调试器断点不再消失。

  • bpo-17172:现在可以从空闲运行 Turtledemo。当前,该条目位于“帮助”菜单上,但它可能会移至“运行”。 Ramchandra Apt 和 Lita Cho 的补丁。

  • bpo-21765:向 HyperParser 添加对非 ASCII 标识符的支持。

  • bpo-21940:为 WidgetRedirector 添加单元测试。 Saimadhav Heblikar 的最初补丁。

  • bpo-18592:为 SearchDialogBase 添加单元测试。 Phil Webster 修补程序。

  • bpo-21694:为 ParenMatch 添加单元测试。 Saimadhav Heblikar 修补程序。

  • bpo-21686:为 HyperParser 添加单元测试。 Saimadhav Heblikar 的原始补丁。

  • bpo-12387:为 Idle 添加缺少的默认 Windows 键绑定的大写(小写)版本,因此 Caps Lock 不会禁用它们。 Roger Serwy 修补程序。

  • bpo-21695:在搜索仍在进行时关闭“在文件中查找”输出窗口不再关闭“空闲”。

  • bpo-18910:为 textView 添加单元测试。 Phil Webster 修补程序。

  • bpo-18292:添加有关自动扩展的单元测试。 Saihadhav Heblikar 的补丁。

  • bpo-18409:添加自动完成的单元测试。 Phil Webster 修补程序。

  • bpo-21477:htest.py-改进框架,完成整套测试。 Saimadhav Heblikar 的补丁

  • bpo-18104:添加带有一些示例测试的 idlelib/idle_test/htest.py,以开始合并和改进经过人工验证的 Idle 测试。根据需要更改其他文件以使用 htest。以__main_运行模块将运行所有测试。

  • bpo-21139:将默认段落宽度更改为 PEP 8建议 72.

  • bpo-21284:用户更改格式宽度后,段落格式重新测试pass。

  • bpo-17654:确保在 OS X 上为非框架版本和 Tk 的所有变体正确定制了 IDLE 菜单。

  • bpo-23180:将 IDLE“ Windows”菜单项重命名为“ Window”。 Al Sweigart 的补丁。

Build

  • bpo-15506:在配置脚本中使用标准的 PKG_PROG_PKG_CONFIG autoconf 宏。

  • bpo-22935:如果 openssl 不支持 SSL 3,则允许编译 ssl 模块。

  • bpo-22592:放弃对 Borland C 编译器的支持以构建 Python。 distutils 模块仍然支持它来构建扩展。

  • bpo-22591:删除对 MS-DOS 的支持,尤其是对 DJGPP 编译器(GCC 的 MS-DOS 端口)的支持。

  • bpo-16537:检查 setup.py 中的 self.extensions 是否为空。 Jonathan Hosmer 的补丁。

  • bpo-22359:删除对递归 make 的不正确使用。 Jonas Wagner 的补丁。

  • bpo-21958:使用 Visual Studio 2013 及更高版本进行构建时,请定义 HAVE_ROUND。 Zachary Turner 的补丁。

  • bpo-18093:嵌入 CPython 运行时的程序现在位于单独的“程序”目录中,而不是保留在模块目录中。

  • bpo-15759:仅当出现故障时,Doc /中的“使可疑”,“使链接检查”和“使 doctest”现在显示特殊消息。

  • bpo-21141:Windows 构建过程不再try查找 Perl,而是依靠已配置并准备构建的 OpenSSL 源。 PCbuild\build_ssl.py脚本已被重写并重命名为PCbuild\prepare_ssl.py,并负责为 32 位和 64 位平台配置 OpenSSL 源。从 svn.python.org 获得的 OpenSSL 源将始终被预先配置并可以构建。

  • bpo-21037:添加一个构建选项以启用 AddressSanitizer 支持。

  • bpo-19962:Windows 构建过程现在在源树的根目录中创建“ python.bat”,它将所有参数传递给最新构建的解释器。

  • bpo-21285:重构和修复 curses 配置检查,使其始终在 ncursesw 目录中搜索。

  • bpo-15234:对于 BerkelyDB 和 Sqlite,仅添加找到的库并包括目录(如果尚未搜索它们)。这样可以避免显式的运行时库依赖性。

  • bpo-17861:Tools/scripts/generate_opcode_h.py 会自动从 Lib/opcode.py 中重新生成 Include/opcode.h(如果后者有任何更改)。

  • bpo-20644:OS X 安装程序对 3.4.1 中的文档构建更改的构建支持:假定/ usr/bin 中提供了外部提供的 sphinx-build。

  • bpo-20022:消除在 OS X 构建中使用不推荐使用的 bundlebuilder。

  • bpo-15968:将 Tcl,Tk 和 Tix 合并到 Windows 构建解决方案中。

  • bpo-17095:修复模块/设置共享支持。

  • bpo-21811:支持 OS X 版本 10.9 的预期修复。

  • bpo-21166:防止 pybuilddir.txt 构建目标中 python –generate-posix-vars 的可能的段错误和其他随机故障。

  • bpo-18096:修复 python-config 返回的库 Sequences。

  • bpo-17219:为 Python 扩展交叉构建添加库构建目录。

  • bpo-22919:Windows 版本已更新为支持 VC 14.0(Visual Studio 2015),它将用于正式版本。

  • bpo-21236:使用 cabinet.lib 而不是 fci.lib 构建_msi.pyd

  • bpo-17128:将 OpenSSL 的私有版本用于 OS X 10.5 安装程序。

C API

  • bpo-14203:删除 PyBuffer_FillInfo(),bytearray_getbuffer(),bytesiobuf_getbuffer()和 array_buffer_getbuf()中对 view == NULL 的过时支持。在这种情况下,所有函数现在都会引发 BufferError。

  • bpo-22445:PyBuffer_IsContiguous()现在实现精确的邻接测试,与 NumPy 的 NPY_RELAXED_STRIDES_CHECKING 编译标志兼容。以前,该Function报告了极端情况下的假阴性。

  • bpo-22079:PyType_Ready()现在检查静态分配的类型是否没有动态分配的基数。

  • bpo-22453:删除了未记录的宏 PyObject_REPR()。

  • bpo-18395:将_Py_char2wchar()重命名为Py_DecodeLocale(),将_Py_wchar2char()重命名为Py_EncodeLocale(),并记录这些Function。

  • bpo-21233:添加新的 C 函数:PyMem_RawCalloc(),PyMem_Calloc(),PyObject_Calloc(),_PyObject_GC_Calloc()。对于大型对象,bytes(int)现在使用calloc()而不是malloc(),这更快并且使用了更少的内存。

  • bpo-20942:PyImport_ImportFrozenModuleObject()不再设置__file_来匹配 importlib 所做的;这会影响_frozen_importlib 以及使用 imp.init_frozen()加载的任何模块。

Documentation

  • bpo-19548:更新编解码器模块文档,以更好地涵盖文本编码和其他编解码器之间的区别以及其他说明。 Martin Panter 修补程序。

  • bpo-22394:Doc/Makefile 现在支持make venv PYTHON=../python来创建 venv 来生成文档,例如make html PYTHON=venv/bin/python3

  • bpo-21514:json 模块的文档现在引用了新的 JSON RFC 7159,而不是废弃的 RFC 4627.

  • bpo-21777:现在已明确记录字节和字节数组上的二进制序列方法,而不是假设用户将能够从相应的 str 方法的行为中得出预期的行为。

  • bpo-6916:不推荐使用的 asynchat.fifo 类。

  • bpo-17386:扩展了Doc/make.bat脚本的Function,使其与Doc/Makefile更具可比性。

  • bpo-21312:更新 thread_foobar.h 模板文件以包括较新的线程 API。杰克·麦克拉肯(Jack McCracken)的补丁。

  • bpo-21043:删除针对特定 CA 组织的建议,并提及加载 OS 证书的Function。

  • bpo-20765:添加缺少的 PurePath.with_name()和 PurePath.with_suffix()文档。

  • bpo-19407:基于 Python Packaging Authority 工具的新软件包安装和分发指南。现有指南已保留为 distutils 文档的旧链接,因为它们仍然包含工具开发人员所需的一些参考资料,而这些资料在其他任何地方都没有记录。

  • bpo-19697:记录__main . spec_为 None 的情况。

Tests

  • bpo-18982:添加 calendar 模块的 CLI 测试。

  • bpo-19548:对 test_codecs 添加了一些其他检查,以确保更新的文档中的语句保持准确。 Martin Panter 修补程序。

  • bpo-22838:现在,所有 test_re 测试均可与 unittest 测试发现一起使用。

  • bpo-22173:更新 lib2to3 测试以使用 unittest 测试发现。

  • bpo-16000:将 test_curses 转换为使用 unittest。

  • bpo-21456:如果_ssl 模块不存在,请跳过 test_urllib2net.py 中的两个测试。 Remi Pointel 修补程序。

  • bpo-20746:修复 test_pdb 以使其处于 refleak 模式(-R)。 Xavier de Gaye 的补丁。

  • bpo-22060:test_ctypes 已经过一些清理和简化;现在,它使用 unittest 测试发现来查找其测试。

  • bpo-22104:regrtest.py 不再保留对未定义 test_main()的测试模块加载的测试套件的引用。

  • bpo-22111:test_imaplib 中的各种清理。 Milan Oberkirch 修补程序。

  • bpo-22002:为 test.support 添加了load_package_tests函数,并用于在 test_asyncio,test_email,test_importlib,test_json 和 test_tools 中实施/增强测试发现。

  • bpo-21976:修复 test_ssl 以接受 LibreSSL 版本字符串。感谢威廉·奥尔。

  • bpo-21918:将 test_tools 从模块转换为包含每个测试脚本的单独测试文件的软件包。

  • bpo-9554:在 test_argparse 中使用现代的单元测试Function。 Denver Coneybeare 和 Radu Voicilas 的最初补丁。

  • bpo-20155:更改了 test_httpservers 中失败的测试中的 HTTP 方法名称,以便数据包筛选软件(特别是 Windows 基本筛选引擎)不会干扰测试所需的事务语义。

  • bpo-19493:重构了 ctypes 测试包,以显式而不是静默地跳过测试。

  • bpo-18492:regrtest.py 未运行测试时,现在允许所有资源。

  • bpo-21634:修正 pystone 的微基准:使用底数除法而不是真除法来基准整数而不是浮点数。将 pystone 版本设置为 1.2. Lennart Regebro 编写的补丁。

  • bpo-21605:添加了对 Tkinter 图像的测试。

  • bpo-21493:添加了对 ntpath.expanduser()的测试。 Claudiu Popa 的原始补丁。

  • bpo-19925:添加了对 spwd 模块的测试。 Vajrasky Kok 的原始补丁。

  • bpo-21522:为 Listbox.itemconfigure(),PanedWindow.paneconfigure()和 Menu.entryconfigure()添加了 Tkinter 测试。

  • bpo-17756:从安装位置运行时修复 test_code 测试。

  • bpo-17752:从安装位置运行时,修复 distutils 测试。

  • bpo-18604:合并检查 GUI 可用性。现在,所有平台至少都在请求 GUI 资源时检查 Tk 是否可以实例化。

  • bpo-21275:修复 KFreeBSD 上的套接字测试。

  • bpo-21223:当某些扩展构建为内置插件时,请pass test_site/test_startup_imports。

  • bpo-20635:添加了用于 Tk 几何 Management 器的测试。

  • 添加测试用例以冻结。

  • bpo-20743:修复了 test_tcl 中的参考泄漏。

  • bpo-21097:将 test_namespace_pkgs 移至 test_importlib。

  • bpo-21503:在 test_importlib 中一致使用 test_both()。

  • bpo-20939:避免由于新的http://www.python.org/重定向到https://www.python.org而导致各种网络测试失败:请改用http://www.example.com

  • bpo-20668:asyncio 测试不再依赖 tests.txt 文件。 (由 Vajrasky Kok 修补)

  • bpo-21093:如果$ HOME/lib 或/ usr/local/lib 中存在 libz 副本,则可以防止 OS X 上 ctypes test_macholib 的失败。

  • bpo-22770:运行 gui 测试时,防止在 OS X 上出现一些 Tk 段错误。

  • bpo-23211:解决方法在某些 OS X 10.6 系统上 test_logging 失败。

  • bpo-23345:使用较大的 OpenSSL 补丁程序级别值(例如 0.9.8zc)防止 test_ssl 失败。

Tools/Demos

  • bpo-22314:设置 LINES 环境变量后,pydoc 现在可以工作。

  • bpo-22615:参数诊所现在支持 int 转换器的“ type”参数。这允许将 int 转换器与 enums 和 typedef 一起使用。

  • bpo-20076:makelocalealias.py 脚本不再忽略 UTF-8Map。

  • bpo-20079:makelocalealias.py 脚本现在可以解析来自 glibc 源的 SUPPORTED 文件,并支持源路径的命令行选项。

  • bpo-22201:zipfile 模块的命令行界面现在可以正确提取包含目录条目的 ZIP 文件。 Ryan Wilson 修补程序。

  • bpo-22120:对于使用无符号整数返回转换器的函数,Argument Clinic 现在将生成该类型的强制转换,以便与所生成代码中的-1 比较。 (这将禁止编译警告.)

  • bpo-18974:Tools/scripts/diff.py 现在使用 argparse 而不是 optparse。

  • bpo-21906:使 Tools/scripts/md5sum.py 在 Python 3 中工作。Zachary Ware 修补。

  • bpo-21629:修复 Argument Clinic 的“ –converters”Function。

  • 将对yield from的支持添加到 2to3.

  • 将对 PEP 465矩阵乘法运算符的支持添加到 2to3.

  • bpo-16047:修复冻结中的模块异常列表和__file_处理。 Meador Inge 修补程序。

  • bpo-11824:请考虑冻结 ABI 标签。 Meador Inge 修补程序。

  • bpo-20535:PYTHONWARNING 不再影响 run_tests.py 脚本。由 Arfrever Frehtes Taifersar Arahesis 修补的补丁。

Windows

  • bpo-23260:更新 Windows 安装程序

  • Tcl/Tk 的 Binding 版本已更新至 8.6.3. 此更改最明显的结果是,在 Windows Vista 或更高版本上运行时,添加了新的本机文件对话框。有关更多信息,请参见 Tcl/Tk 的 TIP 432.另外,此版本的 Tcl/Tk 包括对 Windows 10 的支持。

  • bpo-17896:Windows 构建脚本现在期望外部库源位于PCbuild\..\externals而不是PCbuild\..\..中。

  • bpo-17717:Windows 构建脚本现在使用从 svn.python.org 中提取的 NASM 副本来构建 OpenSSL。

  • bpo-21907:改进了用于构建 Python 的批处理脚本。

  • bpo-22644:Binding 的 OpenSSL 版本已更新为 1.0.1j。

  • bpo-10747:在 Windows 开始菜单中使用版本化标签。 Olive Kilburn 的补丁。

  • bpo-22980:现在将优先加载具有版本和平台标签(例如,“.cp35-win32.pyd”)的.pyd 文件,而不加载那些没有标签的文件。

(有关旧版本的信息,请参阅“历史记录”文件.)