Meta 推出 Pyrefly:Rust 编写的高效 Python 类型检查器和 IDE 扩展
今日,Meta 公司宣布了其新项目 Pyrefly 的 alpha 版本。Pyrefly 是一个基于 Rust 开发的开源 Python 类型检查器和 IDE 扩展工具。该项目旨在通过静态类型检查提高 Python 代码的一致性,帮助开发者在代码运行前发现错误。Pyrefly 支持与 IDE 集成以及命令行使用,为开发者提供了灵活的应用方式。 此前,Meta 开始开发名为 Pyre 的类型的检查工具,以应对 Instagram 大量类型化 Python 代码库的需求。Pyre 受启发于 Hack 和 Flow 这两种语言中的健壮设计,用 OCaml 编写,具有高度的可伸缩性能。然而,随着类型系统的发展以及 IDE 实时响应的要求越来越高,团队意识到需要一种新的解决方案来满足这些需求。虽然在代码导航方面利用了社区工具如 Pyright,但开发团队仍然希望有一个更加可扩展的类型检查器,能够实现实时类型检查、支持大型代码库以及与其他服务交换类型信息的功能。为此,他们启动了 Pyrefly 项目,以全新的方式解决这些问题。 Pyrefly 的开发遵循了几项重要原则: 高性能:项目实现了每秒处理 180 万行代码的能力,确保在大型代码库中快速完成类型检查。这得益于 Rust 语言的高性能特性以及增量更新的设计思路。 IDE 集成优先:确保 IDE 和命令行之间具有一致性,从一开始就设计了能够捕捉两者差异的抽象层,避免了重构带来的额外成本。 类型推断:对于未完全类型化的 Python 代码,Pyrefly 会自动推断返回值和局部变量的类型,并在 IDE 中显示。此外,用户可以通过双击操作直接将推断出的类型插入到代码中。 开源精神:Python 和其类型规范都是开源的,这使得 Pyrefly 的开发变得更加容易。团队在 GitHub 上公开了 Pyrefly 的源代码,并采用 MIT 许可证发布,欢迎社区贡献和反馈。 从最初启动 Pyre 项目到如今发布 Pyrefly,Meta 一直致力于推动 Python 语言和开发生态系统的发展。公司计划继续与 Python 社区合作,进一步提升开发者体验。Meta 在动态语言中长期应用类型系统,深谙其对开发者生产力和代码安全性的巨大提升。因此,他们会通过技术博客、生态系统中的类型改进以及语言增强提案(PEPs)等方式,分享更多关于类型系统的研究成果和工具。 现阶段发布的 Pyrefly 仍处于 alpha 测试阶段,开发团队正在努力修复各种 bug 和完善功能,目标是在今年夏季解除 alpha 标签。团队高度重视用户的反馈,即使 Pyrefly 不适用于某些项目,他们也欢迎了解用户在类型检查和 IDE 使用方面的具体需求和建议。