ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CPython 3.13.0a3 变更全解:核心解释器、标准库、平台构建与 C API 的百余项改进

CPython 3.13.0a3 变更全解:核心解释器、标准库、平台构建与 C API 的百余项改进 CPython 3.13.0a3 变更全解核心解释器、标准库、平台构建与 C API 的百余项改进【免费下载链接】cpythonThe Python programming language项目地址: https://gitcode.com/GitHub_Trending/cp/cpython本文以 CPython 仓库中的归档发布说明 Misc/NEWS.d/3.13.0a3.rst 为主体展开。该文件记录了 CPython 3.13.0 第三个 alpha 版本计划发布于 2024 年 1 月 17 日条目时间跨度从 2023 年 9 月到 2024 年 1 月前后合入的约 200 项变更覆盖安全修复、解释器核心与内建类型、标准库各模块、测试与构建系统、Windows/macOS 平台适配以及 C API。阅读本指南你可以系统地掌握 3.13 早期开发阶段的重点方向自由线程化前的 GIL 重构、Tier 2 优化器、递归保护、跨平台一致性与安全加固并借助源码定位理解每条变更背后的实现位置与后续演进脉络。需要说明的是当前仓库开发分支已推进到Include/patchlevel.h所标注的 3.16.0a0本文件是 3.13 周期的历史记录但其中大量行为与 API 至今仍以演化后的形式存在于源码中适合作为研读解释器演进史的切片。一、如何阅读 CPython 的 NEWS.d 发布说明CPython 的每一条用户可见变更都先以独立条目形式沉淀在 Misc/NEWS.d/ 目录下、按里程碑命名的.rst文件中例如3.13.0a3.rst。每个条目的元数据字段reStructuredText 注释形式提供了完整溯源信息字段含义如下date该变更合入源码的 UTC 时间gh-issue/bpo对应的 GitHub Issue 或 Python bug tracker 编号是回溯讨论、补丁与测试的锚点nonce条目唯一标识用于 blurb 工具去重section变更分类本文件中出现Security、Core and Builtins、Library、Documentation、Tests、Build、Windows、macOS、IDLE、C API十个分区release date里程碑的整体发布时间。下文严格沿用上述分区组织正文把散落的条目按主题归类讲解并补充其在当前仓库源码中的对应证据。二、安全修复Security该版本的安全改动集中在两条跳过以点开头或带隐藏属性的.pth文件gh-113659。.pth文件会在解释器启动时被site模块自动执行若攻击者能在sys.path目录中放置恶意命名文件可能造成任意代码执行。这一改动规定文件名以.开头的.pth文件如.evil.pth以及带有隐藏文件属性Windows 上FILE_ATTRIBUTE_HIDDEN的文件一律被忽略。该行为在源码中得到延续并进一步演进——在 Lib/site.py 中站点目录扫描器在枚举sys.path扩展文件时会过滤name.endswith(.pth) and not name.startswith(.)之外的文件同时在 Lib/site.py 的_read_pthstart_file中对隐藏文件会输出Skipping hidden .pth file的跟踪日志并跳过。引入软件物料清单SBOM文档与依赖追踪工具gh-112302。仓库根目录下的 Misc/sbom.spdx.json 与 Misc/externals.spdx.json 即这一工作的落地产物以 SPDX 格式声明 CPython 自身及其打包的外部依赖便于供应链审计。三、核心与内建Core and Builtins这是本次条目数量最庞大的分区可归纳为四条主线递归深度保护、Tier 2 优化器与执行器推进、编译与字节码修正、语言与内建行为的精确化。3.1 C 递归深度保护的两次调整gh-113655将 C 递归限制Python/C 相互递归时的硬上限在 Windows 上设为4000Linux/macOS 上设为10000作者称这是“在保证安全与不破坏向后兼容之间的甜点区”。gh-112215将非调试构建的 C 递归限制整体提高 3 倍webassembly 与 s390 平台除外以缓解 3.12 中 Python 代码与内建C代码深度混叠递归时出现的回归。围绕递归限制仓库还专门处理了测试与平台的适配Tests 分区中 gh-111798 在 pydebug 构建下于 WASI 禁用test_super_deepgh-111801 降低test_isinstance中test_infinitely_many_bases的递归深度gh-111802 为test_bad_getattr指定低递归深度均是避免受限平台栈溢出的配套措施。另外作为后续演进的印证Doc/whatsnew/3.14.rst记录了非文档化宏Py_C_RECURSION_LIMIT在 3.14 被彻底移除——阅读时需注意这一系列保护机制后来被归并进sys的递归设置体系。3.2 Tier 2 执行器与“保证进展”语义3.13 是 CPython 实验性 Tier 2基于迹的优化执行器成型的关键阶段本文件集中了多项语义约束gh-113853保证所有 executor 都取得进展进而保证 Tier 2 执行永远能向前推进避免死循环gh-108866改写_PyExecutorObject的 API 与契约——改为返回next_instr指针而非 frame并且每次至少执行一条指令gh-113657修复一个导致“重要指令指针更新被从 Tier 2 trace 中优化掉”的问题gh-113710为解释器 DSL 增加类型化栈效应typed stack effects及多种指令注解为机器生成执行代码的类型检查铺路gh-112320Tier 2 翻译器依据分支指令 “counter” 的置位位数跟踪“留在 trace 上”的置信度置信度低于 1/3 时终止 trace 翻译。与之协同的是针对“eval breaker”的多处编译器改动均属 gh-107901不带行号、有多个前驱、带 eval breaker 检查的基本块会被复制跳出异常处理器回到普通代码的跳转、以及不在循环末尾的合成跳转均不再检查 eval breaker。Eval breaker 是解释器周期性让出控制权用于信号处理、GC、gil 切换的检查点这一系列调整使检查点布局更紧凑同时保证异常与信号语义不丢失。3.3 字节码特化、编译与解析的精确化gh-89811执行依赖tp_version_tag的字节码特化前先校验该值有效防止版本标签失效时误特化gh-113603 与 gh-113054修复“冗余 NOP 未被移除导致调试模式断言失败”的编译器缺陷gh-113297修复 with 语句含19 个上下文管理器时编译器段错误深层嵌套的栈式压栈展开问题gh-113703修复codeop模块把未完成的 f-string 误判为完整代码的回归影响 REPL 补全判断gh-113602修复解析器试图覆盖既有错误信息而崩溃的问题gh-112388 同理修复对 tokenizer 错误的覆盖gh-112387 修正了 tokenizer 反向报错时“解码字符串”的错误位置gh-106905AST 解析器的递归深度跟踪从全局状态改为每解析器per-parser状态消除多线程并发ast.parse的潜在竞态该竞态在 3.11 主要由多线程用户触发3.12 因 GC 时机变化一度被掩盖gh-99606使空 f-string 生成与空普通字符串完全一致的代码统一内联缓存行为gh-111488改进列表推导式中for后缺少in关键字的错误信息。3.4 异常、内建行为与错误报告gh-111375异常栈中仅用NULL标记“异常已处理”收紧哨兵值的语义Patch by Carey Metcalfegh-112217对raise from T中T构造出的__cause__增加类型检查gh-112716修复__builtins__非字典时import语句及内建类型__reduce__()抛SystemError的问题gh-112125修复None.__ne__(None)返回NotImplemented而非Falsegh-74616input()在提示串包含内嵌空字符时改为抛出ValueError不再静默截断gh-112730traceback 中的错误位置现在用颜色高亮与PYTHON_COLORS相关gh-95754访问部分初始化模块的非法属性时错误信息纳入模块来源帮助定位“模块遮蔽”问题gh-113212改进super相关的错误信息gh-113486对类的优化调用不再产生虚假的PY_UNWIND事件gh-113753修复PyAsyncGenASend对象从 free list 分配时终结器可能不被调用的缺陷gh-105967规避 Apple macOS 平台自带 zlib 中zlib.crc32/binascii.crc32在多 GB 输入下结果错误的问题包括经zipfile处理大文件时gh-111058协程/生成器被close()后coro.cr_frame/gen.gi_frame返回None使inspect.getcoroutinestate与getgeneratorstate对已关闭对象返回正确状态gh-112367perf trampolines 相关——为避免未定义行为代码 arenas 延迟到解释器 shutdown 时才释放gh-109598PyComplex_RealAsDouble/PyComplex_ImagAsDouble在回退到__float__()之前先尝试用对象的__complex__()方法转为复数。3.5 优化、内建模块与平台行为gh-90350优化内建min/max改走特化的比较路径gh-112943tokenize模块对多行 token正确计算结束列偏移gh-112625修复bytearray.join()在迭代实参期间 bytearray 可能被清除、从而读取已释放内存的 buggh-77046Windows 上包装系统句柄的文件描述符默认不可继承落实 PEP 446Python 3.4 即要求的“make newly created file descriptors non-inheritable”此处补齐了句柄包装路径gh-113710/gh-113853 等涉及Python/下生成式解释器基础设施的演进可结合 Python/ceval.c 的调用入口研读。较长历史的合并条目还包括bpo-21861 让_io.FileIO、_io._WindowsConsoleIO、TextIOWrapper的__repr__使用对象的真实类名以利于子类化bpo-45369 按 PEP 644OpenSSL 1.1.1 及以上成为唯一选择删除 LibreSSL 相关 workaroundbpo-34392 增加sys._is_internedgh-94606 修复email.message.get_payload读取含 surrogate 字符且内容不满足 surrogateescape 良构性时的UnicodeEncodeError。四、标准库LibraryLibrary 分区改动最多覆盖asyncio、pathlib、zipfile、subprocess、pickle、plistlib、typing、tkinter、multiprocessing、ssl等模块。以下按主题分类讲解。4.1 asyncio取消语义与并发健壮性gh-113848asyncio.TaskGroup与asyncio.timeout上下文管理器现在同时处理CancelledError的子类而不再只认精确的CancelledErrorgh-111693asyncio.Condition.wait在被打断时原样重抛同一个CancelledError实例同时修复Semaphore.acquire在取消打断时的竞态gh-96037在超时的asyncio.timeout块退出时将TimeoutError作为 context 插入到被抛出的原异常上__context__便于追溯因果链gh-112622确保asyncio.create_task的name参数真正传给事件循环gh-113538StreamReaderProtocol.connection_made中包装“connected callback”的任务被取消时只关闭 transport 而不再误记错误日志gh-113214修复 SSL-over-SSL 场景下 SSL 协议 abort 过程中的AttributeErrorgh-112800修复SubprocessTransport.close()在 setuid 可执行文件场景下误抛PermissionErrorgh-112989降低SelectorEventLoop连接 socket 的开销gh-112559signal.signal/signal.getsignal不再对可调用处理器调用reprasyncio.run与Runner.run也不再对任务结果调用repr避免用户代码副作用gh-112182Future.set_exception将StopIteration转换为RuntimeError避免挂起等异常行为。4.2 pathlib 家族提速与 API 归位gh-113225Path.glob尽可能利用os.DirEntry.path省去重新拼接路径gh-112727加速Path.absolutegh-112405优化PurePath.relative_togh-112361通过削减临时对象提速少量 pathlib 方法gh-77621延迟部分导入改善 pathlib 的 import 时间gh-113568弃用警告统一由公开类PurePath而非私有基类发出使过滤目标更精确gh-113568Library审计事件改由pathlib.Path而非私有PathBase触发保证addaudithook用户能捕获到gh-103363Path.owner()与Path.group()新增follow_symlinks关键字参数默认Truegh-110109新增私有pathlib._PurePathBase省略若干魔术方法的PurePath基类未来可能连_PathBase一并公开。4.3 zipfile安全与兼容并进gh-109858防御“quoted-overlap” zipbomb——当条目与其它条目或中央目录重叠时抛BadZipFilegh-113971将原本保护的ZipInfo._compresslevel属性公开为.compress_level旧名以 property 形式保留以兼容gh-112932恢复extractall对含/目录条目 zip 的处理wiki、bug tracker 导出工具常见gh-112578修复模块运行时的虚假RuntimeWarninggh-105967见 Corezipfile 大文件场景同样受益于 macOS zlib 规避。4.4 subprocess / os / shutilPOSIX 语义回归与安全gh-112334修复 3.12 在 Linux 上因逻辑 bug 不再走快速路径vfork()的性能回归同时修复一个安全缺陷——传入extra_groups[]时子进程在exec()前未执行setgroups(0, NULL)清空附加组列表代码审查中发现gh-113117subprocess在支持posix_spawn_file_actions_addclosefrom_np的平台可用os.posix_spawnclose_fdsTruegh-112970closefrom从仅 FreeBSD 扩展到 Linuxglibc ≥ 2.34gh-113119os.posix_spawn支持envNone使新进程继承当前进程环境gh-113191 / gh-59616Windows 上补齐os.fchmod、os.lchmod以及os.chmod的follow_symlinks参数lchmod在 Windows 的follow_symlinks默认为Falsegh-113188修复 Windows 上shutil.copymode/copystat对符号链接的操作语义gh-94692shutil.rmtree现在只捕获OSError避免符号链接攻击抵御版在非法参数下吞掉/透传任意异常给错误处理器gh-112645移除向shutil.rmtree传onerror时的弃用错误较老合并项gh-91133/bpo-43153 的TemporaryDirectory清理修复、bpo-37260 的rmtree竞态、bpo-26791 的shutil.move符号链接语义、bpo-35332 的rmtree忽略os.close错误共同让目录树操作在不同平台更加一致。4.5 pickle / marshal / plistlib跨版本互操作与 C 实现补全gh-113626marshal模块新增allow_code参数传allow_codeFalse时禁止序列化/反序列化代码对象此类数据在 Python 版本间不兼容gh-89850为 C 实现的Pickler/Unpickler补充persistent_id/persistent_load默认实现——此前在子类中调用super().persistent_id()会无限递归gh-113028Python 实现下协议 0 中第二次引用同一字符串且含换行等字符时此前会产生重复对象现保证单份复制、重载后共享同一对象gh-111803plistlib支持加载二进制格式中嵌套更深的列表提升递归深度上限gh-113537plistlib.loads支持直接传入strgh-53502plistlib新增aware_datetime选项用于加载/导出带时区的datetime较老项bpo-41422 修复Pickler/Unpickler经 memo 映射的循环引用内存泄漏gh-85567 修复 pickle 与 pickletools CLI 未关闭文件的资源警告。4.6 typing / typing 生态运行时检查提速与元数据修正gh-74690仅含一个可调用成员的runtime_checkable协议isinstance提速约 20%、issubclass提速约 10%针对简单协议的整体issubclass检查提速约 6%gh-113320修复 3.12 回归——未标记runtime_checkable的Protocol类不再被多余内省避免其有问题的成员抛出异常gh-112509修复TypedDict的键同时出现在__required_keys__与__optional_keys__的边界情形gh-112345改进对含非方法成员的Protocol调用issubclass时的错误信息gh-112618修复typing.Annotated缓存 bug——Annotated[str, True]不再与Annotated[str, 1]相等gh-111874创建NamedTuple时确保对类字典值中所有定义__set_name__的对象调用该方法。4.7 tkinter / 其它 GUI 与编辑器相关gh-113877修复 64 位 Windows 上winfo_pathname()gh-68166tkinter.ttk.Style.element_create支持vsapi元素类型Windows Vista 风格gh-75666修复widget.unbind(sequence, funcid)两参形式——此前会销毁该 sequence 的全部绑定现只移除指定 funcid、仅当 funcid 为最后一个绑定命令时才解绑 sequencegh-102980pdb的interact命令输出重定向到与调试器相同的通道并补充测试与文档gh-99367pdb在设置safe_path时不再篡改sys.path[0]gh-52161cmd.Cmd.do_help写入帮助前用inspect.cleandoc清洗 docstringgh-102130cmd模块支持editline下的 Tab 补全。4.8 网络、ssl、socket、httpgh-63284ssl模块新增TLS-PSK预共享密钥模式支持gh-40262合并项SSLContext下recv_into不再要求 buffer 实现__len__支持任意元素大小的 buffergh-114077修复 32 位平台上socket.sendfile传入大于 2 GiB 的count时的OverflowErrorgh-81194修复socket.if_indextoname在特定值UINT_MAX下的崩溃以及 64 位非 Windows 平台的整数溢出gh-113199http.client.HTTPResponse.read1/readline在已知 content-length 并读尽数据后关闭底层 IOgh-102988email.utils.getaddresses/parseaddr在更多非法地址场景返回(, )并新增strict参数strictFalse恢复旧行为用getattr(email.utils, supports_strict_parsing, False)探测可用性——这是对 CVE-2023-27043 修复的补强gh-113594修复 email 重折行时 unknown-8bit 与其它编码部分混杂导致的UnicodeEncodeError。4.9 数值与统计gh-112540statistics.geometric_mean()对含 0 的数据集返回 0此前抛异常gh-67790fractions.Fraction实现基础格式规范最小宽度、对齐、填充gh-114014修复Fraction解析中小数部分出现d字母时与其他非法字符错误不一致的 buggh-81620为random.binomialvariate补充额外测试。4.10 并发与共享内存gh-82300SharedMemory新增track参数——可让共享内存块不注册到 POSIX 资源跟踪器避免退出时自动释放带来的误回收gh-101225提高multiprocessing.manager/resource_sharer创建Listener的 backlog显著降低创建Connection时的 connection refused 概率gh-113421修复多进程日志记录对%(filename)s的支持gh-109786修复itertools.pairwise的__next__()被重入时的引用泄漏与崩溃gh-113202itertools.batched()新增strict选项bpo-34321合并项Unix 上mmap.mmap新增trackfd参数为False时不再复制fileno指定的文件描述符。4.11 平台常量与低层模块gh-113868mmap新增一批 macOSmmap(2)标志MAP_NORESERVE、MAP_NOEXTEND、MAP_HASSEMAPHORE、MAP_NOCACHE、MAP_JIT、MAP_RESILIENT_CODESIGN、MAP_RESILIENT_MEDIA、MAP_32BIT、MAP_TRANSLATED_ALLOW_EXECUTE、MAP_UNIX03、MAP_TPROgh-113791time在 macOS 新增CLOCK_MONOTONIC_RAW_APPROX与CLOCK_UPTIME_RAW_APPROXmacOS 10.12gh-87286syslog新增 macOS 常量LOG_FTP、LOG_NETINFO、LOG_REMOTEAUTH、LOG_INSTALL、LOG_RAS、LOG_LAUNCHDgh-51944termios新增 macOS 系统头文件中的ALTWERASE、B14400、B28800、EXTPROC、IUTF8、VSTATUS等 20 个常量gh-110190修复 ctypes 结构体含数组在 PPC64LEMAX_STRUCT_SIZE64与 ArmMAX_STRUCT_SIZE32平台的问题gh-112510新增readline.backend指示 readline 实际使用的后端editline或readlinegh-112105 让readline.set_completer_delims在 libedit 下可用gh-112292 修复从子解释器导入 readline 时的崩溃。4.12 对象内省、反汇编、traceback 与函数对象gh-112962dis的Instruction实例直接携带 cache 信息不再伪造代表 cache 条目的假Instructiongh-112137dis将无行号显示为--替代None且跳转目标改用逻辑标签而非偏移量gh-112332弃用traceback.TracebackException.exc_type字段新增exc_type_str替代避免引用已清除的异常类型gh-106922 让 traceback 在错误跨越多行时分行展示gh-113358 修复渲染带损坏__getattr__的异常时的问题gh-112640types.FunctionType新增kwdefaults参数以设置关键字默认值gh-112139inspect.Signature.format可将签名格式化为字符串pydoc借此渲染参数间换行的更可读签名gh-61648doctest 可正确检测 property 所在行号gh-94722 修复DocTest实例 lineno 为None时的比较失败gh-99437runpy.run_path解码 path-like 对象保证模块的__file__与sys.argv[0]恒为字符串。4.13 导入、打包与分发gh-113175同步 importlib_metadata 7.0——改进类型注解、修复package_distributions中符号链接包问题、新增EntryPoints.__repr__、引入diagnose脚本、新增Distribution.origin属性并移除按数字索引访问EntryPoint元组行为的弃用路径gh-113238为importlib.resources补充文档承诺过的Anchor导出gh-112414修复 3.12 回归——经自定义 loader 导入的模块调用repr可能AttributeErrorgh-113781解释器终结期间产生警告时静默不可 raise 的AttributeErrorgh-113661unittest runner 在测试被跳过时不再以退出码 5 结束退出 5 的意图是侦测“测试套件完全未被发现”跳过说明发现成功gh-113569Mock.assert_has_calls失败信息现在会指明“根本没有发生调用”gh-104003新增warnings.deprecated装饰器对应 PEP 702标记函数给静态类型检查器并在使用弃用类/函数时告警gh-113407修复无 docstring 构建下unittest.mock的导入gh-113246 / gh-112516捆绑 pip 更新至 23.3.2后 23.3.1 条目先于其合入。4.14 文件格式与既有模块的杂项修复gh-108364sqlite3.Connection.iterdump在存在外键违规时导出 schema 前确保禁用外键支持gh-87264tarfile.list()现在显示文件类型gh-113421见上、gh-66515mailbox.MH支持不含.mh_sequences文件的文件夹如 Claws Mail IMAP 缓存目录bpo-21360mailbox.Maildir忽略以点开头的文件gh-79325 / gh-91133 / bpo-43153TemporaryDirectory在 Windows 的清理问题无限递归、PermissionError被误遮、符号链接解引用集中收尾gh-113149JSON 数组/对象尾随逗号给出更明确的错误信息gh-91539urllib.request.getproxies_environment获得 10%–20% 的小幅性能提升gh-112358回退struct.Struct初始化改动恢复部分子类化场景gh-110275namedtuple 的_replace()/__replace__()对非法关键字参数改抛TypeError原为ValueErrorgh-112328EnumDict、EnumDict.member_names、EnumType._add_alias_、EnumType._add_value_alias_公开化gh-111615修复 gh-93162 修复引入的“未指定 handlers 时无法配置 QueueHandler”的回归gh-111049修复io.BytesIObuffer 对象在 GC 期间的崩溃gh-112640 / gh-103708将硬编码的 python 名称改为可配置参数便于其他实现覆盖 sysconfig长期条目还包括bpo-29779 的PYTHON_HISTORY环境变量、bpo-32731 的getpass.getuser抛OSError、gh-83162 将re.error别名发布为PatternError、bpo-35928 的TextIOWrapper解码缓冲修正等。五、测试、构建与平台Tests / Build / Windows / macOS5.1 测试基础设施Testsgh-44626修复os.path.isabs在 Windows 对恰好一个反斜杠前缀路径误返回True同时修复PureWindowsPath.is_absolute对双反斜杠开头部分路径返回Falsegh-113633_testcapi扩展改用模块状态module state适配多解释器gh-112769测试正确比较含非整数后缀的 zlib 运行时版本如 zlib-ng 的1.3.0.zlib-nggh-112334Tests为 subprocess 在启用 vfork 的 POSIX 系统Linux添加“按预期使用 vfork”的回归测试gh-108927修复同进程内串行跑测试时“有子模块的测试跟随导入其子模块的测试、再被依赖方使用”的顺序依赖问题gh-109980test_shutil的test_tarfile_vs_tar在 macOS 上与系统 tar 对齐bpo-40648测试 Windows 上chmod()可产生的文件模式。5.2 构建系统Buildgh-103065 / gh-114013引入Tools/wasm/wasi.py简化 WASI 构建并修正其把python.wasm路径混入HOSTRUNNER环境变量的缺陷该变量只应描述如何运行 WASI host修复make testgh-113258Windows 构建把生成的 frozen modules 写入构建树而非源码树gh-112305check-clean-src步骤现在能侦测 out-of-tree 构建残留的$(srcdir)/Python/frozen_modules/*.h并给出清理建议gh-112536为构建系统加入ThreadSanitizerTSAN支持gh-112867修复WITH_PYMALLOC_RADIX_TREE0配置下的构建历史条目gh-11102 使os.major/os.makedev/os.minor在 HP-UX v3 可用bpo-36351 交叉编译时不再设置ipv6type。5.3 Windows 专项gh-114096创建目录联接junction后恢复此前激活的进程特权避免影响程序其它部分gh-111877修复os.stat对无法直接访问的文件返回错误时间值gh-111973Windows 安装器升级 SQLite 至 3.44.2gh-113009multiprocessing.Process.terminate()竞态修复——不再无条件把returncode设为“需调用WaitForSingleObject()”的占位值避免进程仍存活时被误判gh-86179修复通过符号链接启动 Python 时的路径计算gh-71383Windows 安装器 Tcl/Tk 升级至 8.6.13含抑制错误 ThemeChanged 警告的补丁gh-111650确保Py_GIL_DISABLED预处理变量定义进 PC/pyconfig.h供 C 扩展模块引用gh-112278当前用户无 WMI 权限时降低platform部分函数的耗时gh-73427弃用sys._enablelegacywindowsfsencoding改用PYTHONLEGACYWINDOWSFSENCODING环境变量gh-87868_winapi.CreateProcess对环境变量正确排序并去重bpo-37308修复mmap.mmap在 Windows 传入非 ASCIItagname时的乱码。5.4 macOS 专项gh-113666stat模块新增 macOS 文件标志常量UF_SETTABLE、UF_TRACKED、UF_DATAVAULT、SF_SUPPORTED、SF_SETTABLE、SF_SYNTHETIC、SF_RESTRICTED、SF_FIRMLINK、SF_DATALESS其中部分仅 macOS 提供gh-113536os.waitid在 macOS 上可用gh-110459修复 macOS 上configure --with-openssl-rpathX/Y/Z无法检测 OpenSSL 的问题gh-74573文档化dbm.ndbm在超出平台未文档化限制时可能静默损坏 DBM 文件、读取损坏文件可能崩溃的风险gh-65701freeze工具不适用于 framework 构建现在提前退出并说明gh-87277webbrowser在 macOS 不再探测 X11 浏览器避免无谓启动 XQuartzgh-108269macOS framework/内嵌 Python.app/IDLE.app 的 Info.plist 设置CFBundleAllowMixedLocalizationstrue使应用拾取用户首选语言gh-102362sysconfig.get_platform结果始终含主次版本号即使构建时MACOSX_DEPLOYMENT_TARGET只给主版本匹配 pip 期望格式gh-110820修正 Universal 2 构建中ALIGNOF_MAX_ALIGN_T、SIZEOF_LONG_DOUBLE、HAVE_GCC_ASM_FOR_X64的预处理定义gh-109981test.support.os_helper.fd_count用/dev/fd统计打开文件数避免“guarded”描述符探测崩溃。六、IDLE 与 C API6.1 IDLE 集成开发环境gh-72284改进 IDLE 文档中的特性列表、编辑器与 Shell 键绑定说明gh-113903修复test_configdialog的偶发失败gh-113729修复 3.11.7 / 3.12.1 中 “Help → IDLE Doc” 菜单无法打开文档的回归gh-113269修复 macOS Catalina 上test_editor挂起gh-112898修复 macOS 退出 IDLE 时未保存文件的处理bpo-13586打开 “Replace” 对话框时自动带入当前选中的文本。6.2 C APIgh-106560清理公共 C API 中的冗余声明——PyBool_Type、PyLong_Type、PySys_Audit()仅声明一次gh-112438修复PyArg_ParseTuple系列函数在嵌套元组中支持格式单元es、et、es#、et#带编码的字符串转换的问题gh-111545新增 Include/pyhash.h 之外的指针哈希函数Py_HashPointer用于按指针地址做一致性哈希gh-65210将PyArg_ParseTupleAndKeywords与PyArg_VaParseTupleAndKeywords的keywords参数声明为char *const形式提升与 C 的兼容性。七、从 3.13.0a3 看解释器演进脉络回看这份清单3.13.0a3 所处的 2023 年末–2024 年初正是 CPython 历史上承前启后的节点一方面Tier 2 优化器相关条目executor 契约、指令指针返回、trace 置信度、typed stack effects表明下一代执行引擎正在被系统性收紧正确性约束另一方面Py_GIL_DISABLED进入 Windows 的 PC/pyconfig.hgh-111650预示了后续 3.13t 自由线程化构建而_elementtree、pickle 的 C 实现、_testcapi全面转向模块状态/强引用持有则在为多解释器与模块隔离铺路。对于希望深入某个具体修复的读者最好的做法是从本文件条目出发沿gh-issue编号反查当时的讨论再对照当前分支源码例如追踪 Lib/site.py 中.pth处理逻辑的持续演化理解设计取舍。八、小结Misc/NEWS.d/3.13.0a3.rst 是一份极具研读价值的“解释器手术记录”。它告诉我们一个 alpha 版本并不只是新功能堆叠还包括对 eval breaker 布局的数学式微调、对vfork/closefrom/posix_spawn等 POSIX 快速路径的逐一校正、对字节码特化前tp_version_tag合法性的防守以及对 traceback、错误信息、repr输出等“可观测表面”的精细打磨。对于解释器开发者它提供了性能与安全权衡的一手案例对于库使用者则能借此预判行为变化如.pth隐式执行面收窄、zipfile 对 zipbomb 的拒绝策略、dis/traceback输出格式调整从而在升级到 3.13 及后续版本时有的放矢。【免费下载链接】cpythonThe Python programming language项目地址: https://gitcode.com/GitHub_Trending/cp/cpython创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表