Найти в Дзене
Цифровая Переплавка

🐍🚀 Битва за скорость: Как Rust меняет правила игры в проверке типов Python

Python уже давно перестал быть просто языком «для простых задач». Сегодня на нём работают гигантские приложения, миллионы строк кода и тысячи разработчиков. И там, где раньше хватало человеческой внимательности, теперь необходима мощная автоматическая проверка типов. Раньше доминировали mypy и pyright, но на PyCon 2025 появились два новых игрока, способных полностью изменить ландшафт — Pyrefly и Ty. Интересно, что оба новых инструмента написаны на Rust, языке, уже доказавшем свою невероятную эффективность в задачах, где скорость — это всё. До сих пор проверка типов была медленной и иногда болезненной процедурой. Большие проекты типа Django или PyTorch могли занимать целые минуты, и разработчики часто отключали проверку при каждой правке, ограничиваясь проверкой перед релизом. Но Pyrefly и Ty обещают изменить это навсегда, предлагая: Разработанный компанией Meta, Pyrefly — это прямой наследник Pyre (предыдущего инструмента компании, написанного на OCaml). Однако, в отличие от предшестве
Оглавление
Над неоновой платформой с логотипом Python и шестернёй Rust парят два соперника — огненный светлячок-дрон (Pyrefly) и кристаллическая буква «T» (Ty), между ними искры скорости, подчёркивая дуэль новых Rust-типизаторов.
Над неоновой платформой с логотипом Python и шестернёй Rust парят два соперника — огненный светлячок-дрон (Pyrefly) и кристаллическая буква «T» (Ty), между ними искры скорости, подчёркивая дуэль новых Rust-типизаторов.

Python уже давно перестал быть просто языком «для простых задач». Сегодня на нём работают гигантские приложения, миллионы строк кода и тысячи разработчиков. И там, где раньше хватало человеческой внимательности, теперь необходима мощная автоматическая проверка типов. Раньше доминировали mypy и pyright, но на PyCon 2025 появились два новых игрока, способных полностью изменить ландшафт — Pyrefly и Ty.

Интересно, что оба новых инструмента написаны на Rust, языке, уже доказавшем свою невероятную эффективность в задачах, где скорость — это всё.

🔍 Что нового принесли Pyrefly и Ty?

До сих пор проверка типов была медленной и иногда болезненной процедурой. Большие проекты типа Django или PyTorch могли занимать целые минуты, и разработчики часто отключали проверку при каждой правке, ограничиваясь проверкой перед релизом. Но Pyrefly и Ty обещают изменить это навсегда, предлагая:

  • ⚡️ Значительное ускорение (в 10–20 раз быстрее существующих решений),
  • 🦀 Надёжность Rust (меньше ошибок и меньше потребления памяти),
  • 🎨 Новые подходы к типизации (инференция типов, пересечения и отрицания типов).

🦋 Pyrefly: «максимум проверки, минимум кода»

Разработанный компанией Meta, Pyrefly — это прямой наследник Pyre (предыдущего инструмента компании, написанного на OCaml). Однако, в отличие от предшественника, Pyrefly стремится быть максимально открытым и дружественным сообществу. Он пытается вывести типизацию Python на новый уровень, даже там, где программисты не указали явно типы.

Например, Pyrefly способен:

  • 🧙‍♂️ Автоматически выводить типы, даже когда их нет явно,
  • 🕵️‍♀️ Находить скрытые ошибки, которые пропускают другие инструменты (например, сложные случаи с коллекциями и пересечением типов).

Однако это иногда ведёт к ложным ошибкам: Pyrefly может «слишком усердно» пытаться найти тип там, где это не нужно. Но Meta считает, что лучше ошибиться в сторону большей безопасности, чем пропустить важную ошибку.

🎯 Ty: «тихо, быстро и без сюрпризов»

Ty, напротив, разработан командой Astral, уже известной такими проектами, как Ruff и UV. Их подход совершенно иной. Ty следует философии «постепенной гарантии»: код, работающий без типовых аннотаций, не должен выдавать ошибки после их удаления или добавления.

Особенности Ty:

  • 🛠️ Постепенная типизация — инструмент не навязывает программисту избыточные проверки типов,
  • 🚦 Ясные и информативные ошибки — Ty специально разрабатывался с учётом максимально удобной диагностики,
  • 🌌 Уникальные фичи, такие как пересечения и отрицания типов, которые ранее в Python никто не использовал.

Astral стремится к тому, чтобы Ty был максимально прост и интуитивен. Вместо того, чтобы делать проверку «любой ценой», Ty предпочитает «меньше, да лучше», избегая навязывания типизации там, где это не нужно.

🏎️ Тест-драйв: кто быстрее на реальных проектах?

Автор оригинального материала, Эдвард Ли, провёл серию тестов на популярных репозиториях — PyTorch, Django и Mypy:

  • 📦 На репозитории PyTorch Ty оказался быстрее Pyrefly примерно в 2–3 раза.
  • 🎸 В случае Django картина повторилась — Ty снова оказался на шаг впереди.
  • 📘 При проверке самого mypy, Ty также занял первое место по скорости.

Однако стоит учитывать, что оба инструмента пока находятся на ранней стадии альфа-версии, и показатели могут меняться.

🎭 Различия в подходах и философии

Самая важная разница между Pyrefly и Ty — не в скорости, а в философии:

  • Pyrefly старается быть максимально строгим и безопасным, даже если это иногда приводит к ложным срабатываниям.
  • Ty стремится быть менее агрессивным и давать разработчикам больше свободы, не наказывая за отсутствие явных аннотаций.

Например, в следующем коде:

my_list = [1, 2, 3]
my_list.append("foo")

  • ⚠️ Pyrefly выдаст ошибку, так как решил, что список только для чисел.
  • Ty не увидит проблем, так как технически Python допускает разные типы в одном списке, и аннотации не указаны явно.

🧩 Технические детали: как это сделано?

Оба инструмента построены на Rust и используют Ruff для парсинга AST, но есть различия в инкрементальной проверке:

  • 🗂️ Pyrefly проверяет изменения на уровне модуля целиком.
  • 🔍 Ty проверяет изменения вплоть до отдельной функции или блока кода, благодаря интеграции с движком Salsa (тот же используется в Rust Analyzer).

Это означает, что Ty потенциально может быть более отзывчивым при работе в редакторе.

💬 Личное мнение автора статьи

Как человек, много лет работавший с Python и испытывавший боль от медленной типизации, я искренне рад появлению этих инструментов. Для крупных проектов Pyrefly кажется более предпочтительным, поскольку гарантирует безопасность и строгую проверку, что особенно важно в масштабах Meta. Для большинства других задач, особенно где важна гибкость и удобство, подход Ty выглядит гораздо привлекательнее.

Кроме того, интересны и технические решения Astral, такие как пересечение и отрицание типов, которых раньше просто не существовало в Python-экосистеме. Это может вывести всю типизацию на принципиально новый уровень.

И лично я особенно впечатлён тем, что тесты для Ty написаны прямо в Markdown-файлах. Это так просто и элегантно, что хочется использовать его уже сейчас.

🌟 Выводы и будущее Python

Pyrefly и Ty — ещё один шаг к тому, чтобы Python окончательно перестал считаться медленным и нестрогим языком. Благодаря мощи Rust, оба инструмента делают проверку типов не просто «необходимым злом», а удобным и незаметным помощником для разработчиков.

Уже сейчас вы можете попробовать оба инструмента онлайн:

📰 Полезные ссылки и оригинал статьи: