現在アルファ版であるPyreflyは、Meta社が開発した新しいオープンソースのPython型チェッカーで、最大限のパフォーマンスを実現するためにRustで構築されている。Pyre、Pyright、MyPyといったツールに触発されており、以前Instagramのコードベースで使用されていたOCamlベースの型チェッカーPyreを置き換えることを目的としている。
私たちは、インクリメンタル計算のためのカスタムエンジンを構築し、漸進的型付け理論に関する長年の経験とRustの専門知識を基に型チェックアルゴリズムを設計しました。この技術をオープンソース化することで、あらゆる規模のプロジェクトに役立つことを願っています。
Meta社のエンジニアによると、Pyrefly開発の主な動機は、応答性の高いIDE型チェックをサポートする必要性にあった。Instagramの型システムが複雑化するにつれて、従来のPyreではこれを実現することがますます困難になっていたためだ。
私たちは代替ソリューションを模索し、コードナビゲーションのためにPyrightのようなコミュニティツールを活用しました。しかし、コードナビゲーション、大規模な型チェック、他のサービスへの型のエクスポートを可能にする拡張性のある型チェッカーの必要性が高まり、Pyreflyの開発をゼロから始めることにしました。
Pyreflyは高性能を追求して設計されており、効率を最大化するためにRustで実装されている。Meta社によれば、Pyreflyは大規模なコードベースにおいて1秒間に180万行のコードが確認可能であり、これにより、キー入力ごとに型チェックを実行することが可能になる。
Meta社のベンチマークによると、PyreflyはInstagramのコードベース全体を13.4秒で型チェックできるのに対し、Pyreでは100秒以上かかる。同様に、PyreflyはPyTorchの型チェックをわずか2.4秒で完了するが、Pyrightでは35.2秒、MyPyでは48.1秒かかる。
Meta社は性能面以外にも、安全性、クロスプラットフォーム対応、そしてブラウザーベースのPlaygroundエクスペリエンスを実現するWebAssemblyへのコンパイル機能から、Pyreflyの構築にRustを選択した。
Pyreflyは、注釈付きのPythonコードベースの型チェックに加えて、注釈のないコードにも役立つことを目指している。そのため、Pyreflyは戻り値やローカル変数の型を自動的に推論し、開発者が希望すれば推論された型をコードに明示的に挿入可能だ。
Meta社は、未解決のバグと開発中の機能のため、Pyreflyをアルファ版としてリリースしましたが、今夏にはベータ版への移行を予定している。また、Visual Studio Code用の拡張機能はVisual Studio Marketplaceで入手できる。
PyreflyはRustで書かれた唯一のPython型チェッカーではない。開発者ツールを専門とする会社Astral社は、最近Tyをプレビュー版として公開した。TyはPythonの公式仕様に基づいてRustで書かれた手書きのパーサーを使用している。また、試してみたい方のためにプレイグラウンドも提供している。Astral社が開発したその他のツールには、Rustで書かれたRuffリンターやuvパッケージマネージャーがある。