隆重推出 Pyrefly:适用于 Python 的全新类型检查器和 IDE 体验
Introducing Pyrefly: A new type checker and IDE experience for Python
今天,我们宣布推出 Pyrefly 的 alpha 版本,这是一个用 Rust 编写的开源 Python 类型检查器和 IDE 扩展。Pyrefly 是一个静态类型检查器,它分析 Python 代码以确保类型一致性,并帮助你在代码运行之前捕获代码库中的错误。它还支持 IDE 集成和 CLI 使用,为你提供将其融入工作流程的灵活性。
开源社区是 Python 语言的支柱。我们渴望与社区合作开发 Pyrefly,并改进 Python 的类型系统以及我们都依赖的许多库。
快速开始
准备好开始了吗?Pyrefly 官方网站 包含了所有详细信息,但为了快速入门:
- 通过命令行安装 Pyrefly:
pip install pyrefly
。 - 将现有的类型检查器配置迁移到 Pyrefly。
- 增强你的 IDE:下载 Pyrefly 的 VSCode 扩展,享受从入门项目到大型代码仓库的闪电般快速的 IDE 体验。
- 在 GitHub 上给我们留下反馈。
我们为什么构建 Pyrefly
早在 2017 年,我们就开始了一项任务,即创建一个可以处理 Instagram 海量代码库的类型化 Python 的类型检查器。这项任务催生了 Pyre 类型检查器,它受到 Hack 和 Flow 的强大设计的启发,并用 OCaml 编写以提供可扩展的性能。
多年来,Pyre 很好地服务了我们,但随着类型系统的发展以及对类型检查以驱动响应式 IDE 的需求出现,很明显我们需要采取一种新的方法。我们探索了替代解决方案,并利用了社区工具(如 Pyright)进行代码导航。但是,对可扩展的类型检查器的需求(可以进行代码导航、大规模检查并将类型导出到其他服务)促使我们重新开始,创建 Pyrefly。
Pyrefly 背后的原则
今天,我们很高兴推出 Pyrefly,这是一个我们在 GitHub 上公开开发的项目。我们邀请你探索我们的工作并在你自己的项目上试用它。虽然像 Pyrefly 这样的项目是数千个技术选择的总和,但我们遵循的一些值得注意的原则是:
性能
我们希望将过去发生在 CI 上的检查转移到每次击键时都发生。这需要快速检查代码(在大型代码库上,我们可以每秒检查 180 万行代码!),并仔细考虑增量和更新。Pyrefly 用 Rust 实现,专为各种规模的代码库上的高性能而设计。
IDE 优先
我们希望 IDE 和命令行共享对世界的统一视图,这意味着精心设计抽象,以捕捉差异而不会产生不必要的成本。从一开始就设计这些抽象比改造它们容易得多,而我们曾经尝试过用 Pyre 进行改造。
推断
一些 Python 程序是类型化的,但许多不是。我们希望用户即使没有注释他们的代码也能从类型中受益——因此自动推断返回和局部变量的类型,并在 IDE 中显示它们。更重要的是,在 IDE 中,你甚至可以双击插入这些推断的类型,如果你认为这会使程序更好。
开源
Python 是开源的,并且非常流行。Python 类型规范是开源的,这使得 Pyrefly 的开发变得更加容易。Meta 贡献的许多库都是开源的(例如,PyTorch)。
Pyrefly 也是开源的,在 GitHub 上以 MIT 许可证提供,我们鼓励 pull requests 和 issue reports。我们还有一个 Discord 频道 用于更自由的讨论。我们很乐意围绕 Pyrefly 构建一个社区。
Pyrefly 的未来
我们将与 Python 社区合作,推动该语言的发展并改善开发人员的体验。自从 Pyre 诞生以来,我们就开源了我们的代码,并与类型检查器维护人员社区一起贡献了许多 PEP。我们认为我们可以使用 Pyrefly 做更多的事情来帮助 Python 开发人员利用类型的优势,为开发人员、库作者和刚开始学习该语言的人们服务。
Meta 从一开始就利用动态语言中的类型,并且知道它为开发人员的生产力和安全性带来了显着的好处。我们计划通过 博客、生态系统和语言增强中更好的类型来分享更多我们的经验和工具。
今天,我们发布 Pyrefly 作为 alpha 版本。与此同时,我们正忙于消除大量的错误和功能,目标是在今年夏天删除 alpha 标签。你的反馈对于实现这一目标非常宝贵,因此请尝试一下并报告你的错误 或你认为可以改进的地方。即使 Pyrefly 不适合你的项目,我们也希望听到你如何使用类型以及你希望在编辑器中看到哪些改进。
加入我们,一起用 Pyrefly 照亮你的 bugs。祝你编码愉快!🐍✨
了解更多关于 Pyrefly 的信息
查看 Meta Tech Podcast 的剧集,其中几位团队成员分享了他们开发 Pyrefly 的经验以及有关其工作原理的技术细节。我们还在 PyCon US 上谈到了通过更快的类型检查和自由线程执行实现的高性能 Python。
要了解有关 Meta Open Source 的更多信息,请访问我们的 开源网站,订阅我们的 YouTube 频道,或在 Facebook、Threads、X 和 LinkedIn 上关注我们。
致谢
Pyrefly 由 Meta 的 Python 语言工具团队创建:Jia Chen, Rebecca Chen, Sam Goldman, David Luo, Kyle Into, Zeina Migeed, Neil Mitchell, Maggie Moss, Conner Nilsen, Aaron Pollack, Teddy Sudol, Steven Troxler, Lucian Wischik, Danny Yang, and Sam Zhou.