Mypy работает уже много лет, и мы все привыкли к его скорости — точнее, привыкли к его медлительности.
Инженеры Meta явно решили, что хватит. Они создали Pyrefly — тайп-чекер и языковой сервер для Python, полностью написанный на Rust. Сейчас 6.3K звёзд, 13 234 коммита, активность сообщества выглядит солидно.
Зачем Rust
Это не новая идея. Ruff переписал линтер на Rust и получил ускорение в 10-50 раз. UV захватил управление пакетами Python. Теперь тайп-чекеры идут по тому же пути.
Главное преимущество Pyrefly простое: скорость. Rust означает отсутствие оверхеда интерпретатора Python — логика вывода типов и проверки компилируется прямо в машинный код. Для больших кодовых баз ожидание в десятки секунд при каждом запуске mypy в CI — это реально больно.
У Meta внутри огромные Python-кодовые базы. Они не стали бы делать это просто так. Серверная часть Instagram сильно зависит от Python — каждая минута, сэкономленная на тайп-чекинге, суммируется на сотнях инженеров.
Сравнение с существующими инструментами
Pyrefly целится в mypy и pyright — два основных варианта.
Mypy — де-факто стандарт для тайп-чекинга Python, самая зрелая экосистема, но скорость всегда была проблемой. Pyright от Microsoft, лучше всего интегрирован с VS Code, быстрее mypy, но не радикально.
В README Pyrefly нет конкретных бенчмарков — это жаль. По惯例 проектов на Rust, ускорение должно быть в диапазоне 5-50 раз в зависимости от размера кодовой базы и сложности типов.
Моя позиция: не спешите мигрировать. Pyrefly всё ещё в активной разработке — 459 открытых issue, 128 PR в очереди. Это значит быструю итерацию, но также означает, что стабильность и совместимость ещё не на продакшн-уровне.
Можно ли использовать сейчас
Если вы запускаете mypy в своих проектах и иногда находите его медленным, Pyrefly ещё не готов к замене. Покрытие системы типов всё ещё отстаёт от mypy, особенно в граничных случаях — дженерики, протоколы, тайп-гарды.
Но если ваша команда большая, кодовая база превышает миллион строк, и тайп-чекинг стал бутылочным горлышком в CI — стоит следить внимательно. Meta уже использует его внутри; они не стали бы рисковать продакшн-окружением.
Дождитесь Pyrefly 1.0, данных бенчмарков и завершения тестов совместимости с mypy — тогда可以考虑 миграцию. Безопаснее так.
Мой текущий подход: добавить в watch, пока не устанавливать. Тайп-чекеры — это не игрушки, стоимость неправильного выбора не мала.
Источники: