Google переходит на анализатор типов Pyrefly для Python

Google переходит на анализатор типов Pyrefly для Python

Екатерина Иванова
Екатерина Иванова Стажер технический редактор
19 октября 2026

Google перевел внутреннюю проверку типов Python с собственного инструмента Pytype на Pyrefly — инструмент с открытым исходным кодом, который работает примерно в 10 раз быстрее, сокращает задержку при инкрементальной пересборке до 98% и снижает пиковую нагрузку на вычислительные мощности более чем на 80%.

Изображение записи

Как Google использует Python

Python входит в число основных инструментов Google и применяется для исследований в области машинного обучения, разработки инфраструктуры и обработки данных в монорепозитории из сотен тысяч файлов. Для поддержания безопасности кода и скорости работы инженеров компании необходима статическая проверка типов.

Более 10 лет Google использовал собственный инструмент Pytype, разработанный внутри компании и участвовавший в создании проекта typeshed. Программа Pytype проверяла типы путем анализа скомпилированного байт-кода, а не синтаксических деревьев (AST) исходного кода. Нестабильность байт-кода в разных релизах Python усложняла поддержку новых спецификаций языка. В связи с этим компания ограничила поддержку Pytype версией Python 3.12 и перешла на использование открытых альтернативных решений.

Технические характеристики и функциональность Pyrefly

Новым стандартом проверки типов в Google стал open source-инструмент Pyrefly, созданный компанией Meta* на языке Rust. Pyrefly рассчитан на высокую пропускную способность, использует ленивые параллельные вычисления и демонстрирует масштабируемость на крупных графах зависимостей.

По данным Meta*, производительность инструмента позволяет анализировать до 1,8 млн строк кода в секунду. Инструмент проходит 96,6% тестов из официального набора проверки соответствия спецификации типов Python и регулярно обновляется вслед за новыми стандартами языка.

Таблица результатов тестирования различных статических анализаторов типов Python.
Источник.

Pytype разрешал передавать значение типа объединения (например, int | None или int | str) в функцию, ожидающую конкретный тип (например, int), если хотя бы один из элементов объединения был с ним совместим. Pyrefly же строго фиксирует такие ошибки:


      # foo.py
def process_id(x: int) -> None:
    ...
def get_id() -> int | None:
    ...
val = get_id()
# Принято Pytype, но отклонено Pyrefly:
process_id(val) 

Диагностика Pyrefly выполнена в стиле компилятора Rust и содержит фрагменты кода с подстрочными аннотациями, указанием причины сбоя и вариантами исправления.

Влияние на инфраструктуру и скорость работы

По данным внутренних тестов Google, Pyrefly превосходит Pytype по скорости примерно в 10 раз. Задержки при повторной сборке в циклах редактирования кода с активным демоном снизились до 98%. Время проверки типов для крупных моделей машинного обучения уменьшилось с нескольких минут до нескольких секунд. При чистой сборке с холодным кэшированием доля проверки типов на критическом пути сократилась на 90–99%. Пиковое суточное потребление вычислительных мощностей для проверки типов снизилось более чем на 80%, что экономит тысячи процессорных ядер ежедневно.

График сравнения задержки повторной сборки (Edit-and-Rebuild Latency) между Pytype и Pyrefly для проектов разного размера.
Источник.

Сравнение с другими анализаторами типов

Meta* перевела Pyrefly в разряд проектов с открытым исходным кодом в 2025 году. В сообществе разработчиков Pyrefly рассматривается как зрелый инструмент версии выше 1.0, сопоставимый по скорости с анализатором Ty. При сравнении с Mypy отмечается, что Mypy сохраняет высокую скорость при инкрементных проверках в крупных проектах, однако новое поколение анализаторов превосходит его по скорости при холодных проверках. При оценке эффективности статических анализаторов учитывается не только экономия времени в системах непрерывной интеграции, но и скорость цикла редактирования кода и точность диагностических сообщений.

*Компания признана в России экстремистской организацией; деятельность запрещена на территории страны решением Тверского районного суда Москвы от 21 марта 2022 года.