Python周刊2026W37 | asyncio 依赖图修复、内存越界写修补、3.15 默认 UTF-8

举报
右耳朵猫AI 发表于 2026/09/14 16:38:25 2026/09/14
【摘要】 asyncio 的任务依赖图与取消语义得到修复,wait_for(fut, 0) 与 gather() 不再产生缺失或陈旧的依赖边。解释器同时补上三处缓冲区越界写漏洞,PEP 847 为包索引 API 引入结构化错误响应。

本周 Python 主线仍是稳定性与性能。asyncio 修复了任务依赖图与取消语义,依赖边不再缺失;解释器同时修补三处缓冲区越界写漏洞。打包侧 PEP 847 草案为包索引 API 引入结构化错误响应,标准库还修正了 datetime.time 的 UTC 偏移比较。社区方面,Den Odell 谈性能预算与新书《Fast by Default》。

🐍 Python 官方开发进展

🔧 运行时

🐛 asyncio 任务依赖图与取消语义修复

asyncio 修复任务依赖图:wait_for(fut, 0) 与 gather() 产生的依赖边不再缺失或陈旧,Task 在刚抛出 SystemExit/KeyboardInterrupt 时也不再被追加取消。依赖任务内省的工具会看到更准确的关系图,普通用户行为基本不变。

🐛 修复缓冲区溢出与内存安全缺陷

xmlcharrefreplace()? 多写终止 NUL、struct.pack('0p', b'')? 空 Pascal 串越界写、PyBytesWriter_FinishWithSize()? 未校验长度,三处越界写已修复,此前可能破坏相邻内存。用户升级即可,无需改动代码。

🐛 标准库用户可见行为修复

datetime.time 在秒或微秒级 UTC 偏移下比较与哈希错误,已按整数归一化修正;tarfile 现在可直接把 getnames() 返回的带尾斜杠名传给 extract();libedit 构建写历史文件不再丢头。依赖旧行为的代码升级后需复核。

📦 包管理器与打包

🐛 pip 修复 keyring 测试在并行跑测下的随机失败

pip 的 test_keyring_cli_outdated_version 在 pytest-xdist 并行跑测时因其他用例改动日志级别而随机失败。该 PR 显式固定测试内的日志捕获级别,使断言不再受执行顺序影响。普通用户不受影响,仅参与 pip 开发的贡献者跑测试时结果更稳定。

📋 PEP 流程

📝 PEP 847 草案:为 Simple Repository API 引入 Problem Details 结构化错误响应

PEP 847 草案为 Simple Repository API 引入 Problem Details 结构化错误响应,让安装器与私有包源之间能交换机器可读的错误信息。目前仍是 Draft 且无参考实现,打包工具与镜像源暂无需改动。

✏️ PEP 832 草案回退为 `.venv` 重定向文件方案

PEP 832 草案在内部回退了设计,重新采用 .venv? 重定向文件方案,并补充 08-Sep-2026 的讨论记录。该约定影响虚拟环境探测,但方案仍处草案阶段,uv、IDE 与 CI 脚本暂不必调整。

🔄 PEP 825 标记为临时接受,PEP 785 修正参数名拼写

PEP 825 被标记为临时接受,流程元数据已同步更新,将进入实现与稳定化阶段;PEP 785 仅修正 leaf_exceptions 的参数名拼写,对行为无影响。按新提案编写代码前仍需留意后续可能的调整。

🔥 头条

性能剖析:让应用默认就快?

你如何为自己的 Python 应用规划性能?性能预算包含哪些内容,资源又该投在哪里?本周节目中,我们与 Den Odell 聊了他的新书《Fast by Default: Practical Performance Engineering》。REAL PYTHON podcast

Code-Review-Bench 上排名第一的开源代码审查工具?

由开放权重模型 GLM-5.2 驱动的 PR-AF 在 Martian Code-Review-Bench 上登顶,在 38 个可运行 PR 上取得 0.706 的 golden recall,在参与对比的 42 个工具中击败 cubic-v2 以及 qodo、coderabbit、greptile、copilot 和 devin 的各个版本。多数 AI 审查工具止步于浅层的 diff 摘要,因结论缺乏代码级证据而被忽略;PR-AF 则按 PR 汇总审查维度,生成临时审查 agent,并在采纳每条发现前拉取调用方代码片段与 import 上下文作为依据。文章涵盖基准测试快照、af? CLI 与原始 HTTP 入口、GitHub 行内评论,以及相较闭源工具约 10 倍的成本优势。

📖 文章与教程

用 Pydantic 与 FastAPI 构建插件架构?

插件必须先证明自己与平台兼容,才被允许承载生产流量。当 RAG 团队希望外部贡献者自带视觉与音频 embedding 模型时,真正的问题不是给出多大的灵活性,而是如何避免各自独立部署的服务破坏契约。文章把 /ready?、/catalog?、/encode/? 的 Pydantic 模型打包进共享的 API 契约库,由插件作者实现,并对每次注册做校验,使无法解析的响应在插件上线前就报错。

PyPI 下载统计不再计入元数据请求?

过去,向 PyPI 请求包的元数据也会被计入该包的下载统计。近期这一行为已修改,现在只更准确地统计 wheel、tar ball 与 zip 文件的下载。本文解释了这一变更。PYPI.ORG

用 Python 打造自己的人脸识别工具?

在本教程中,你将用 Python 构建自己的人脸识别命令行工具。你会学到如何用人脸检测在图像中定位人脸,并用人脸识别为其打标签。掌握这些知识后,你就能从零到一做出自己的人脸识别工具!REAL PYTHON

如何修复 ‘NoneType’ 对象没有属性这类错误?

当 Python 抛出 AttributeError: ‘NoneType’ object has no attribute ‘x’ 时,读起来像是解释器故意在说废话,但它其实传达了一个精确信息:你期望持有对象的那个变量其实是 None。SYSTEM CRAFT PRESS • Shared by Bob Morrison

Python 装饰器入门?

在本教程中,你会了解什么是 Python 装饰器,以及如何定义和使用它们。装饰器能让代码更易读、更易复用。来看看装饰器在底层如何工作,并动手练习编写自己的装饰器。REAL PYTHON

类型检查或许正是你的 agent 缺失的护栏?

编码 agent 会写大量 Python,而且写得很快。让 agent 调用类型检查器,可以阻止常见的类型 bug 混入。Pyrefly 是用 Rust 构建的开源类型检查器,速度足以跟上你 agent 的推理节奏。PYREFLY TEAM sponsor

不崩溃地测试异步 Python?

真正可用的异步 Python 测试模式:事件循环作用域、异步 fixture 生命周期,以及在默认假设下会失效的具体 pytest-asyncio / anyio 模式。DEV.TO • Shared by Anonymous

在 Cloudflare R2 上存储 Django 静态文件与媒体文件?

分析瘫痪真要命?

初级开发者不动手,是因为知道得还不够。资深开发者不动手,是因为知道太多可能出错的地方。两者都卡住了。KEVIN RENSKERS

OOP 为何存在?

了解面向对象编程(OOP)背后的基本原理,以及它如何与 Python 中定义类的语法相关联。RODRIGO GIRÃO SERRÃO

Python 3.15 预览:默认启用 UTF-8?

预览 Python 3.15 的 UTF-8 默认行为:看看有哪些变化,在预发布版本上试用,并让你的文件 I/O 在所有平台上都保持可移植。REAL PYTHON

小测验:Python 3.15 预览——默认启用 UTF-8?

同一段读文件的代码在不同机器上会解码出不同文本,因为 Python 默认的文本编码跟随操作系统 locale,直到 3.15 把 UTF-8 设为默认值。这种对隐式默认值的静默依赖,意味着“在我机器上能跑”的代码只是碰巧可移植,而一旦出问题又极难定位。本次小测验涵盖旧默认值的由来、哪些操作依赖它、如何找出依赖它的代码、如何在自己的函数与库中显式传入 encoding,以及何时恢复基于 locale 的行为。

空客 A380 的最优座位排布?

Mark 分析了一篇论文的结果,该论文确定了空客 A380 上的最优座位排布方式。MARK LITWINTSCHIK

🛠 项目与代码

shedskin:受限 Python 到 C++ 的转译器?

Shed Skin 能把纯的、隐式静态类型的 Python 3 转成优化后的 C++;在 80 多个非平凡程序(超过 25,000 行)上,它比 CPython 3.14 快 1 到 100 倍,平均 20 倍,中位数 12 倍。这种速度的代价是语言表面:只有受限的 Python 子集能编译,不能用第三方库,只支持约 25 个标准库模块,不支持嵌套函数和可变参数个数,且需要 Boehm 垃圾回收器,因此代码可能需要大幅重构甚至重写。文章讨论了代码规模在几百到几千行之间时何时值得做这种取舍、如何安装和编译,以及 sieve 示例对比 CPython、Numba 与 PyPy 的基准耗时。

用 Python 实现的浏览器 DOM!?

GITHUB.COM/BYTEFACE • Shared by byteface

mitti:新一代 ASGI 框架?

GITHUB.COM/GRANDIMAM

jsonstore:把 Django JSONField 数据当作虚拟模型字段?

这些 Django 字段存在于单个 models.JSONField 之中,不创建列、不产生迁移,却仍能在 ModelForms、admin、过滤、排序和投影中正常工作。这项能力处在两个代价高昂的极端之间:裸 JSONField 会迫使应用代码手工解析无类型字典,并丢掉 Django 的转换、校验与表单控件;而当记录需要不同属性、或属性频繁变化时,真实列又太重。文章涵盖安装与版本约束、ModelForms 和 ModelAdmin 中的虚拟字段、共用的 django.db.models 参数、json_field_name 与 json_key 路径选择,以及何时该换成真实字段。

📅 活动

每周 Real Python Office Hours 问答(线上)?

2026 年 9 月 9 日 REALPYTHON.COM

Python Atlanta?

2026 年 9 月 10 日至 9 月 11 日 MEETUP.COM

PyDay Boyacá 2026?

2026 年 9 月 12 日至 9 月 13 日 PYDAY.CO

DFW Pythoneers 第二个周六教学聚会?

2026 年 9 月 12 日 MEETUP.COM

DjangoCologne?

2026 年 9 月 15 日 MEETUP.COM

PyCon Cameroon 2026?

2026 年 9 月 17 日至 9 月 20 日 PYTHONCAMEROON.ORG


往期精选

  • Python周刊2026W36 | Python 3.15候选版、RISC-V获CPython支持、PEP 843、asyncio修复
  • Python周刊2026W35 | Mojo 开源发布 1.0、PEP 843 export 推进、PEP 839 冻结构建器、PyCon AU 2026
  • Python周刊2026W34 | Python 3.12.14 安全发布、Django 转年度发布、asyncio 连接泄漏修复、PEP 843 export 草案推进
  • Rust周刊2026W36 | rustup 1.29.1 更名 target tuple、Wasmi 2.0 提速 2.2 倍、Box map 稳定化、aarch64 FFI 传参修复、Cargo feature 元数据
  • Web前端周刊2026W37 | Shopify 转原生、React 编译 Rust 化、Vitest 5.0、Rslib 1.0
  • Java周刊2026W37 | Quarkus 三维护版齐发、Micronaut 三公告、Kotlin 2.4.20

阅读原文


扫码关注「右耳朵猫AI」

扫码关注「右耳朵猫AI」

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。