Skip to content
research

Rust ускорил проверку типов TypeScript в 3 раза

Тест компилятора вновь разжег споры о языках программирования, а претендент был создан за несколько недель с помощью агентов ИИ. Но скорость — лишь часть картины, ведь инструмент должен вписываться в реальные рабочие процессы разработчиков.

Stork editorial team
Rust ускорил проверку типов TypeScript в 3 раза

Замедление TypeScript, которое у всех на виду

Разработка на TypeScript включает два разных процесса: транспиляцию и семантическую проверку типов. Быстрые инструменты сборки, такие как esbuild или Vite, быстро удаляют синтаксис TypeScript, преобразуя его в исполняемый JavaScript. Этот шаг выполняется быстро, часто за миллисекунды.

Узкое место возникает при семантической проверке типов, которая подтверждает корректность кода. Этот процесс, критически важный для обратной связи в редакторе и конвейеров CI, на крупных проектах может занимать минуты. Разработчики ощущают эту задержку как медленное отображение ошибок в IDE или как увеличенное время выполнения CI.

Microsoft официально решила эту проблему, выпустив порт компилятора TypeScript на Go, который обеспечил ускорение в 8-12 раз по сравнению с прежним движком на JavaScript. Эта версия на Go, входящая в TypeScript 7.0, значительно сократила время проверки: например, проверка типов VS Code снизилась со 125,7 секунды до 10,6 секунды.

Недавно появилась реализация на Rust, созданная сообществом, — новый претендент. Этот порт кодовой базы на Go в Rust, быстро разработанный Cloudflare и проектом Oxc с использованием агентов ИИ, по заявлениям, почти в три раза быстрее официальной версии на Go. Хотя он ещё не интегрирован во всю экосистему, он проходит более 99,9% тестов TypeScript на соответствие, что демонстрирует его потенциал.

Тест: 0,3 секунды против 0,7

Чтобы количественно оценить ускорение, в тесте сопоставили прежний компилятор на JavaScript с новыми портами на Go и Rust. В тесте использовался официальный репозиторий TypeScript — внушительная кодовая база из 793 файлов и примерно 380.000 строк кода. Производительность оценивалась в четырёх сценариях: полностью корректный код, одна ошибка типов, каскадный сбой из-за нарушенного базового типа и глубокая рекурсия.

Во всех этих разнообразных сценариях результаты оказались впечатляющими. Компилятор на JavaScript неизменно тратил больше всего времени: от 6,6 до 13 секунд. Порт на Go существенно улучшил этот показатель, выполнив проверки за 0,6–2,2 секунды. Однако версия на Rust показала лучшую производительность, уложившись всего в 0,2–0,5 секунды.

Если оценивать главные цифры в перспективе, компилятор на Rust в среднем работал примерно в 24 раза быстрее исходной реализации на JavaScript. Что ещё более впечатляет, в этом конкретном тесте он был почти в три раза быстрее порта на Go. Эти результаты показывают потенциал существенного улучшения опыта разработчиков.

Важно помнить, что результаты тестов могут различаться. На производительность могут влиять такие факторы, как характеристики оборудования, структура проекта, конкретные версии компиляторов и точная методика тестирования. Тем не менее стабильное и значительное ускорение, наблюдаемое у порта на Rust, является важным событием для экосистемы TypeScript.

Агенты ИИ воспроизвели тяжело давшуюся архитектуру

Примечательно, что порт на Rust возник не в результате того, что инженер-человек разработал новую систему типов. Вместо этого один инженер руководил агентами ИИ, в основном Claude Opus 3.5, которые переводили существующий компилятор Microsoft на Go в Rust функция за функцией. Этот подход основывался на механическом, а не творческом переводе.

Эта стратегия перевода опиралась на обширный набор тестов на соответствие (conformance suite) TypeScript, включающий более 13.000 тестовых случаев. Каждый тестовый случай определяет точные диагностические ошибки, о которых должен сообщать соответствующий спецификации компилятор. Агенты портировали функцию, запускали соответствующие тесты, устраняли расхождения и переходили к следующей функции.

Прохождение всех этих тестов, как это теперь делает версия на Rust, подтверждает её совместимость и способность давать результаты проверки типов, идентичные результатам официального компилятора на Go. Это позволило быстро и проверяемо итерировать всего за три недели разработки. Подробнее об официальном порте на Go см. A 10x Faster TypeScript - Microsoft Developer Blogs.

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

Нравится статья? Получайте такие каждое утро на почту.

одно письмо в день · отписка в два клика · без сторонних трекеров

Скорость впечатляет; настоящая проверка — внедрение

Прирост производительности Rust впечатляет, но убедительную причину для внедрения даёт его поддержка WebAssembly. Например, Cloudflare стремится запускать инструменты разработчика непосредственно в браузере и в периферийных средах. Rust компилируется в WebAssembly без включения сборщика мусора, в отличие от Go, что делает его подходящим для легковесного изолированного выполнения.

Реализация компилятора TypeScript от Microsoft на Go остаётся официальной эталонной и лежит в основе TypeScript 7.0 со значительным ускорением. Порт на Rust, в свою очередь, разрабатывается в рамках проекта Oxc — набора инструментов на Rust от создателей Vite. Это открывает возможности для таких применений, как линтинг с учётом типов в Oxc Lint, где скорость используется для обратной связи в реальном времени.

Рассматривайте этот тест как многообещающий сигнал, а не универсальную гарантию. Перед внедрением проверьте совместимость и поддержку инструментов для вашего конкретного стека проекта. Следите за тем, дойдут ли эти оптимизации и интеграции до повседневных рабочих процессов и сократят ли на практике время циклов для разработчиков. Настоящей проверкой для порта на Rust станет его путь от впечатляющего теста производительности к широкой практической пользе.

Часто задаваемые вопросы

Является ли компилятор TypeScript на Rust официальным релизом Microsoft?

Нет. Это портирование на Rust, выполненное сообществом и связанное с проектом Oxc; официальный нативный порт компилятора от Microsoft написан на Go.

Насколько быстрее оказался компилятор на Rust в тесте из видео?

В тесте на репозитории TypeScript он в среднем работал примерно в 24 раза быстрее компилятора на JavaScript и почти в три раза быстрее порта на Go.

Зачем создавать компилятор TypeScript на Rust?

Отсутствие сборщика мусора в Rust может сделать упаковку в WebAssembly привлекательной, а сам порт также исследует оптимизации производительности и памяти.

Был ли порт на Rust написан искусственным интеллектом?

Агенты ИИ выполнили значительную часть механического портирования под руководством инженера, ориентируясь на компилятор Microsoft и тесты на соответствие спецификации TypeScript.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

Для билдеров

Эта страница работает на чужой инструмент.

Её читают AI-агенты. На неё приходят покупатели. Она отвечает на восьми языках и через MCP. У вашего инструмента может быть такая же — в эфире за 24 часа.