Mypy は何年も使われてきて、その速度には——というより、その遅さには——みんな慣れた。
Meta のエンジニアたちは、もうこれで十分とは言わなかった。Rust で完全に書き直された Python 型チェッカー兼言語サーバー、Pyrefly を作った。現在 6.3K stars、13,234 回コミット。コミュニティの活動は活発だ。
なぜ Rust か
これは新しい発想ではない。Ruff はリンターを Rust で書き直して 10〜50 倍の高速化を達成した。UV は Python パッケージ管理を乗っ取った。今度は型チェッカーが同じ道を進んでいる。
Pyrefly の核心的な売りはシンプル:速い。Rust なら Python インタプリタのオーバーヘッドがない。大規模コードベースでは、mypy を CI で毎回数十秒待つのは本当に苦痛だ。
Meta には社内に膨大な Python コードベースがある。Instagram のサーバーサイドは Python で動いている。型チェックで1分節約できれば、数百人のエンジニアで積み上げれば小さな数字ではない。
既存ツールとの比較
Pyrefly は mypy と pyright をターゲットにしている。
mypy は Python 型チェックのデファクトスタンダードだが、速度は常に課題だった。pyright は Microsoft 製で VS Code との統合が一番良いが、mypy より速いものの劇的に速いわけではない。
Pyrefly の README には具体的なベンチマーク数値が載っていない——これは残念だ。Rust 書き換えプロジェクトの慣例から言えば、コードベースの規模と型の複雑さにもよるが 5〜50 倍の高速化が期待できる。
私の判断:急いで移行するな。 Pyrefly はまだ活発に開発中——オープンな issue が 459 件、PR キューが 128 件。これは急速にイテレーションしているということだが、安定性と互換性がまだプロダクショングレードではないということでもある。
今使えるか
自分のプロジェクトで mypy を走らせていて、時々遅いと感じているなら、Pyrefly はまだ置き換える時期ではない。型システムのカバレッジは mypy にまだ差があり、特にジェネリクス、プロトコル、タイプガードといったエッジケースで。
だがチームが大きく、コードベースが百万行を超え、CI で型チェックがボトルネックになっているなら——密切关注する価値はある。Meta は内部ですでに使っている。プロダクション環境で賭けはしない。
Pyrefly 1.0、ベンチマークデータ、mypy 互換性テストが完了してから——移行を検討するのが安全だ。
現在のスタンス:ウォッチリストに入れる、まだインストールしない。 型チェッカーはおもちゃではない——間違った選択のコストは小さくない。
主な情報源: