内容提要
本周Python生态主要动态:TurboPython可将带类型标注的Python编译为无运行时、无GC、无GIL的原生二进制;Python 3.15.0发布,新增惰性导入和内置不可变字典;Polars 2.0支持溢写磁盘、SQL和新Map类型,基准测试领先;NumPy正移植至Limited API以支持abi3轮子,并将searchsorted提速达25倍;CPython探讨逐步引入Rust。
延伸解读
编译型Python的取舍
TurboPython将带类型标注的Python编译为无运行时、无GC、无GIL的原生二进制,这为性能敏感场景提供了新选择。但文章未说明其类型系统覆盖范围、与现有C扩展的兼容性及调试支持。读者需注意,此类工具通常要求代码严格类型化,且可能牺牲动态特性,迁移前应评估生态依赖。
Polars 2.0的基准与边界
Polars 2.0引入溢写磁盘、一等SQL和新Map类型,并报告在TPC-H和TPC-DS上领先DataFusion与DuckDB。基准结果虽亮眼,但文章未披露测试规模、硬件配置及查询类型分布。实际选型时,应结合自身数据量、并发模式和SQL兼容性需求验证,而非仅凭基准排名。
NumPy的ABI3与性能双线推进
NumPy正移植至Limited API以支持abi3轮子,可减少按Python版本构建的轮子矩阵,并简化新版本支持;同时通过批量化二分搜索和O(1)额外内存,使searchsorted在2.5版提速达25倍。这两项工作分别改善分发效率和运行时性能,但abi3迁移仍受multiarray等模块限制,落地时间未明确。
CPython引入Rust的渐进路径
CPython开发者探讨逐步引入Rust,计划先在Python 3.16中提供可选的Rust版zlib实现,再考虑I/O、JSON、解析和memoryview等区域。提案强调不重写CPython,但需解决平台支持、依赖、构建复杂性和社区接受度等问题。读者应关注可选实现的实际维护成本与性能收益是否匹配。
Q&A
TurboPython 是什么?它有什么特点?
TurboPython 是一个 Python 到 C++ 的编译器,可将带类型标注的 Python 代码编译为原生二进制文件,无需 Python 运行时,没有垃圾回收(GC),也没有全局解释器锁(GIL)。
Python 3.15.0 有哪些新功能?
Python 3.15.0 引入了惰性导入、内置不可变字典、推导式中的简化解包、新的采样分析器,并默认使用 UTF-8 编码。
Polars 2.0 有哪些重要更新?
Polars 2.0 引入了初步的溢写磁盘支持、重大性能改进、一等公民的 SQL 支持、新的 Map 数据类型以及更严格的 dtype 处理。在 TPC-H 和 TPC-DS 基准测试中,Polars 报告其性能领先于 DataFusion 和 DuckDB。
NumPy 在性能优化和兼容性方面有哪些进展?
NumPy 正被移植到 Python 的 Limited API,以便最终提供跨多个 Python 版本可用的 abi3 轮子,减少轮子矩阵并简化对新版本的支持。同时,NumPy 2.5 通过批处理独立搜索和向量化操作,将 np.searchsorted 的速度提升了高达 25 倍。
CPython 是否计划引入 Rust?具体如何实施?
CPython 开发者正在探索逐步引入 Rust,首先在 Python 3.16 中为 zlib 提供可选的 Rust 实现,然后考虑在 I/O、JSON、解析和 memoryview 等领域更广泛地使用。该提案旨在提高安全性和性能,而无需重写 CPython,同时解决平台支持、依赖、构建复杂性等担忧。
ai-agents-zero-to-hero 项目是什么?
ai-agents-zero-to-hero 是一个全面的指南项目,教授如何使用标准的 Python 3.11+ 从第一性原理到生产环境构建 AI 代理。它零强制依赖,纯标准 Python,不使用魔法框架。