谷歌把用了多年的Python类型检查器Pytype换掉了,接任者是Meta开源的Pyrefly。换人的理由很直接:更快、更准、基础设施成本更低。
![]()
Pytype的麻烦出在底层机制上。它分析的是编译后的字节码,而不是源码AST。Python的类型系统这几年演进得很快,字节码在不同Python版本之间又不稳定,Pytype要跟上新的类型PEP,维护负担越来越重。
谷歌内部基准给出的数字很扎眼:Pyrefly比Pytype快约10倍,增量重建延迟最多降低98%,Python类型检查的峰值计算成本削减超过80%。在干净构建的关键路径上,类型检查时间减少了90%到99%。谷歌的说法是,这基本消掉了一个长期存在的开发瓶颈。
Pyrefly的另一项优势是对Python类型规范的贴合度。谷歌称它在一致性测试套件中通过了约97%的用例。社区在持续跟进支持,新语法能较快被覆盖。诊断信息也更可操作,包括内联代码标注,能定位错误的根因,部分场景下还会给出修复建议。
Meta去年把Pyrefly开源,用Rust实现,目标就是高性能。按Meta的说法,它在大代码库上每秒能检查180万行代码,快到可以在每一次按键时都跑一遍类型检查。
社区的反应分两派。多数人认同Pytype确实不如Pyrefly,但讨论很快转向Pyrefly和Ty、Mypy之间的横向比较。Gushys认为Pyrefly成熟得多,版本已经过了1.0,速度与Ty接近,是经过验证的工具,Ty还差一口气。WindHawkeye则提醒,Mypy在大型项目里的速度比大家想的快,增量检查仍然是最快的。BeamMeUpBiscotti接话说,Mypy 2.0在大型项目的冷检查上据称能快5倍,但新一代检查器还能再快一个数量级。
Python开发者Amirrea Azadmher在LinkedIn上给了另一个角度:类型检查器的价值不只是给CI流水线省下30秒,更在于它如何改善开发过程中的编辑-检查循环。他的建议是,评估Pyright、Pyrefly、Mypy时别信别人monorepo里的数字,要在自己的代码树上测冷启动和热启动时间,并且把诊断质量和吞吐量放在一起打分——一个快但满屏噪音的检查器,成本仍然高于一个慢一点但能指出真正问题所在的检查器。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.