Skip to content
comparisons

Порт TypeScript на Rust в 3 раза быстрее — но готов ли он?

Переписанный компилятор может сократить долгую проверку типов до долей секунды и изменить ожидания от инструментов разработчика. Но за главной цифрой скрывается более сложный вопрос: насколько можно доверять одному бенчмарку?

Stork editorial team
Порт TypeScript на Rust в 3 раза быстрее — но готов ли он?

Заголовок впечатляет, но важны детали

Независимый порт TypeScript на Rust выполнил тестовые запуски примерно за 0,2–0,5 секунды, что существенно лучше результатов Go (0,6–2,2 секунды) и JavaScript (6,6–13 секунд). Это соответствует среднему ускорению от 2,5 до 3 раз по сравнению с Go и до 4,4 раза в сценариях с каскадными ошибками.

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

Это различие принципиально: компилятор на Rust — впечатляющая неофициальная разработка. Она показывает, что возможно, когда кодовая база перерабатывается с упором на производительность, нередко с помощью ИИ.

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

Четыре теста — один поразительный разрыв в производительности

Для тестирования производительности использовался официальный репозиторий TypeScript на GitHub, включающий 793 файла и примерно 380.000 строк кода. Эта надёжная тестовая база позволила провести всестороннее сравнение в четырёх различных сценариях: - Все типы корректны - Одна простая ошибка типа - Нарушенный базовый тип с каскадными ошибками - Глубоко рекурсивные типы

Результаты оказались разительными. Для корректных типов JavaScript потребовалось около 7 секунд, Go — 0,7 секунды, а Rust справился всего за 0,3 секунды. Когда был нарушен базовый тип, что вызвало каскадные ошибки, JavaScript показал 13 секунд, Go — 2,2 секунды, а Rust завершил работу всего за 0,5 секунды. Эти цифры показывают устойчивый и существенный разрыв в производительности.

В целом, согласно видео, Go оказался примерно в 9–10 раз быстрее JavaScript. Rust, в свою очередь, показал скорость примерно в 24 раза выше, чем у JavaScript, и почти в три раза выше, чем у Go. Округлённые значения времени и единственная кодовая база ограничивают абсолютную точность, но иерархия производительности очевидна.

Июльский перенос TypeScript на Go в исполнении Microsoft дал существенный выигрыш. Однако последующая реализация на Rust демонстрирует ещё больший скачок, особенно в сложных сценариях обработки ошибок. Данные ясно указывают на новый ориентир производительности.

Почему результат Rust заслуживает более внимательного изучения

Нагрузка компилятора — серьёзное испытание для любого языка, даже Go или Rust. Проверка типов включает сложные рекурсивные связи, построение больших графов зависимостей и генерацию диагностики, объём которой может расти экспоненциально, если базовый тип нарушен. Эта сложность объясняет, почему компилятору на JavaScript в сценарии «core type broken» потребовалось до 13 секунд.

Преимущество Rust над Go в производительности, в среднем от 2,5 до 3 раз, вероятно, объясняется принципиальными различиями в управлении памятью и накладных расходах среды выполнения. Абстракции без издержек, явная раскладка памяти и отсутствие сборщика мусора в Rust могут сократить объём операций выделения памяти и число промахов кэша, что даёт ощутимое преимущество в задачах, ограниченных скоростью процессора, таких как компиляция.

Появление порта TypeScript на Rust, ставшее возможным благодаря разработке с помощью ИИ, подчёркивает важную тенденцию. Крупные существующие кодовые базы с обширными наборами тестов, такие как репозиторий TypeScript на GitHub, — идеальная цель для итеративного переноса с помощью кодовых агентов. Такой подход позволяет быстро создавать работоспособные порты, как в случае проектов вроде tsrs; подробнее читайте в статье Introducing tsrs: a Port of TypeScript to Rust.

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

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

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

Победа в бенчмарке — это ещё не готовая замена

Победа в бенчмарке — это ещё не готовая замена. Прежде чем внедрять порт на Rust, разработчикам необходимо проверить несколько важнейших факторов. Прежде всего, оцените соответствие языка и API компилятора официальной реализации TypeScript, чтобы обеспечить бесшовную интеграцию с существующими инструментами редактора, системами сборки и выводом диагностики. Главная проверка — поведение на ваших собственных проектах.

Проведите корректное локальное испытание, сравнив одинаковые параметры компилятора в официальной версии и в версии на Rust. Включите запуски с чистой и инкрементальной компиляцией, отслеживайте использование памяти и оценивайте производительность на репрезентативных нагрузках CI, а не только по нескольким замерам времени. Такой комплексный подход показывает реальную готовность к промышленной эксплуатации.

Впечатляющие результаты порта на Rust, в частности ускорение в 3 раза по сравнению с Go, повышают планку производительности компиляторов. Подобные альтернативные реализации побуждают всю экосистему к инновациям, показывая, как оптимизированный нативный код может заметно улучшить опыт разработчиков. Хотя цифры убедительны, готовность к промышленной эксплуатации зависит от доверия и полной совместимости.

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

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

Написан ли теперь компилятор TypeScript от Microsoft на Rust?

Нет. В видео сравниваются независимый порт на Rust, существующий компилятор на JavaScript и реализация Microsoft на Go.

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

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

Что проверялось в бенчмарке?

Были измерены четыре случая в репозитории TypeScript: корректные типы, простая ошибка типа, каскадные ошибки в базовых типах и глубоко рекурсивные типы.

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

Нет, только на основании этих результатов. Перед переходом командам следует проверить совместимость, поддержку инструментов и производительность на собственных проектах.

Found this useful? Share it.

Для создателей инструментов

Вашего инструмента нет в этом сравнении?

Добавьте чётко помеченную рекламную запись рядом с инструментами из этого сравнения, на всех 8 языках, на которых мы публикуем. Мы проверяем соответствие до оплаты. Или предложите его бесплатно, и мы решим по существу.

Добавить инструментПредложить бесплатноРекламные записи помечены и никогда не меняют наш рейтинг

Для билдеров

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

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