写点什么

Meta 开源 Pyrefly,Rust 中的高性能 Python 类型检查器

  • 2025-05-29
    北京
  • 本文字数:989 字

    阅读完需:约 3 分钟

大小:474.23K时长:02:41
Meta开源Pyrefly,Rust中的高性能Python类型检查器

目前处于 alpha 阶段的PyreflyMeta开发的一款新的开源 Python 类型检查器,其使用 Rust 编写,以实现最佳性能。Pyrefly 的灵感来自于Pyre、Pyright 和 MyPy 等工具,旨在取代之前用于 Instagram 代码库的基于 OCaml 的 Pyre 类型检查器。

 

我们构建了一个自定义的增量计算引擎,并基于多年的渐进类型理论经验和 Rust 专业知识设计了我们的类型检查算法。通过开源这项技术,我们希望它能够更好地服务于任何规模的项目。

 

根据 Meta 工程师的说法,开发 Pyrefly 的主要动机是需要支持响应式的 IDE 类型检查,随着 Instagram 类型系统的复杂性的增加,使用 Pyre 来实现这一点变得越来越困难了。

 

我们探索了替代解决方案,并利用 Pyright 等社区工具进行了代码导航。但是,由于需要一个可扩展的类型检查器来进行代码导航、大规模检查和向其他服务导出类型,我们不得不重新开始,于是创建了 Pyrefly。

 

Pyrefly 是为高性能而设计的,并使用 Rust 实现,以最大限度地提高效率。根据 Meta 的说法,它可以在大型代码库上每秒检查 180 万行代码,从而使得在每次按键点击时进行类型检查成为可能。

 

Meta 的基准测试显示,Pyrefly 可以在 13.4 秒内完成对整个 Instagram 代码库的类型检查,而 Pyre 需要 100 多秒。类似地,Pyrefly 只需要 2.4 秒即可完成对 PyTorch 的类型检查,而 Pyright 需要 35.2 秒,MyPy 需要 48.1 秒。

 

除了性能之外,Meta 选择使用 Rust 来构建 Pyrefly,还因为它的安全性、跨平台支持以及能够编译成 WebAssembly 的能力,这使得基于浏览器的游乐场(Playground)体验成为可能。

 

除了对带注解的 Python 代码库进行类型检查之外,Pyrefly 还致力于对未带注解的代码也有用。为此,它可以自动推断返回值和局部变量的类型,允许开发人员根据需要显式地将推断的类型插入到他们的代码中。

 

Meta 已经发布了 Pyrefly 的 alpha 版本,因为存在开放的缺陷并且一些功能正在开发中,但其计划在今年夏天进入 beta 阶段。Visual Studio Code扩展已经可以在 Visual Studio Marketplace 中找到了。

 

Pyrefly 并不是唯一一个用 Rust 编写的 Python 类型检查器。专门从事开发者工具的公司 Astral 最近推出了Ty的预览版。Ty使用一个手写的Python解析器,用 Rust 编写,并基于 Python 的官方规范。如果你想尝试一下,它还提供了一个游乐场(playground)。Astral 开发的其他工具还包括Ruff代码检查器和uv包管理器,它们也都是用 Rust 编写的。

 

原文链接:

https://www.infoq.com/news/2025/05/meta-pyrefly-python-typechecker/

2025-05-29 16:005457

评论

发布
暂无评论

JavaWeb之Cookie和Session技术(四)

爱好编程进阶

Java 程序员 后端开发

JavaWeb快速入门--JSP(2)

爱好编程进阶

Java 程序员 后端开发

JAVA中的位运算与二进制操作

爱好编程进阶

Java 程序员 后端开发

Java中的复用类

爱好编程进阶

Java 程序员 后端开发

DRBD是什么意思?优缺点是什么?

行云管家

高可用 运维 HA高可用

有更新!鸿蒙智联生态产品《接入智慧生活App开发指导》(官方版)

HarmonyOS开发者

HarmonyOS 鸿蒙智联

如何成为一名亚马逊云科技 Community Builder

亚马逊云科技 (Amazon Web Services)

Cloud 亚马逊云科技 career

Java8-Stream:2万字20个实例,玩转集合的筛选

爱好编程进阶

Java 程序员 后端开发

堡垒机是什么意思?别称是啥?

行云管家

网络安全 防火墙 数据安全 堡垒机

离AI无处不在还有多远?从一个英特尔开源平台开始实现

科技新消息

it资产管理系统解决方案

低代码小观

资产管理 企业管理系统 CRM系统 IT治理 资产安全

Cube 技术解读 | Cube 渲染设计的前世今生

蚂蚁集团移动开发平台 mPaaS

mPaaS Android; cube

在亚马逊云科技上搭建静态无服务器 Wordpress,每天仅需 0.01 美元

亚马逊云科技 (Amazon Web Services)

Serverless CDN WordPress

Java基础06 数组基础

爱好编程进阶

Java 程序员 后端开发

3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力

白鲸开源

Bigdata DolphinScheduler workflow Open Source apache 社区

web前端培训React调度器原理分析

@零度

前端开发 React

直播预告|青藤云安全 x 极狐,云原生 DevSecOps 安全左移全解析

极狐GitLab

云原生 DevSecOps 主机安全 容器安全 软件安全

华为推出OpenHarmony生态使能服务 加速OpenHarmony商用发行版落地

科技汇

netty系列之:使用Jboss Marshalling来序列化java对象

程序那些事

Java Netty 程序那些事 4月月更

必示科技入围未来银行科技服务商Top100榜单

BizSeer必示科技

JavaWeb之JSP技术(三)

爱好编程进阶

Java 程序员 后端开发

Java代理模式,一次复习完4种动态代理实现方式

爱好编程进阶

Java 程序员 后端开发

RNG战队LPL春季赛夺冠!中国电竞产业未来如何实现“破与立”?

易观分析

电竞产业

容器化|在 S3 备份恢复 RadonDB MySQL 集群数据

RadonDB

MySQL 数据库 Kubernetes 高可用 容器化

带你认识2种基于深度学习的场景文字检索算法

华为云开发者联盟

深度学习 计算机视觉 文本检测 场景文本检索 文字检索

企业如何应对知识管理中的文档管理

小炮

知识管理

列举GaussDB(DWS)常见的查询时索引失效场景

华为云开发者联盟

索引 GaussDB(DWS) 隐式类型转化 GIN索引 analyze

一个平面设计师的异想世界

万事ONES

研发管理 设计师 ONES workbalance

Java Script

爱好编程进阶

Java 程序员 后端开发

macOS 安装 Nebula Graph 看这篇就够了

NebulaGraph

macos 图数据库 安装部署

9个国内/外行业 NPS (净推荐值)基准网站

龙国富

NPS

Meta开源Pyrefly,Rust中的高性能Python类型检查器_开源_Sergio De Simone_InfoQ精选文章