TypeScript портировали на Rust... И он в 3 раза быстрее Go
Original · TypeScript Got Ported To Rust... And It's 3x Faster Than Go
Key Takeaway
Портированный на Rust компилятор TypeScript демонстрирует производительность почти в три раза выше версии на Go благодаря разработке с использованием ИИ-агентов.
Highlights
Компилятор TypeScript на Rust работает почти в три раза быстрее версии на Go.
Версия компилятора на Rust создана всего за три недели с помощью ИИ-агентов под руководством Claude Opus 5.5.
Репозиторий TypeScript содержит 793 файла и около 380 000 строк кода.
Компилятор на Rust работает примерно в 24 раза быстрее старой версии на JavaScript.
Версия на Rust успешно проходит более 13 000 тестовых программ оригинального компилятора.
Timeline
Сравнение компиляторов TypeScript
Процесс работы с TypeScript включает этап сборки с удалением типов через инструментарий вроде ESBuild или Vite, а также проверку типов. Проверка типов на крупных кодовых базах замедляет разработку, что привело к созданию новых компиляторов на Go и Rust для ускорения этого процесса.
- Microsoft перенесла компилятор TypeScript на Go еще в июле.
- Новый компилятор TypeScript написан на языке Rust.
- Проверка типов на большой кодовой базе занимает много времени в отличие от быстрого шага сборки.
Бенчмарки и результаты тестов производительности
Сравнение производительности старого компилятора JavaScript, версии на Go и новой версии на Rust охватывало четыре сценария: валидные типы, простая ошибка типа, сломанный базовый тип с каскадом ошибок и глубокие рекурсивные типы. В среднем Rust оказался в 24 раза быстрее JavaScript и почти в три раза быстрее Go.
- Тестирование проводилось на репозитории TypeScript с 793 файлами и 380 000 строк кода.
- Версия компилятора на Rust в сценарии со сломанным базовым типом показала время 0.5 секунды против 2.2 секунд у Go и 13 секунд у JavaScript.
- Компилятор на Rust работает почти в три раза быстрее версии на Go.
Разработка с помощью ИИ-агентов и тестирование
Разработка компилятора на Go заняла у Microsoft около двух лет, тогда как версия на Rust появилась за три недели силами ИИ-агентов, переписавших код функция за функцией. Наличие обширного набора тестов позволило агентам проверять корректность работы и исправлять ошибки, добившись полного совпадения выдаваемых ошибок с официальным компилятором.
- Создание версии на Rust заняло три недели от первого коммита до анонса.
- Проект разрабатывался инженером с помощью команды ИИ-агентов во главе с Claude Opus 5.5.
- Порт на Rust успешно проходит более 13 000 тестов оригинального компилятора Microsoft.
Причины выбора Rust и дальнейшие планы
Выбор Rust обусловлен необходимостью работы в песочницах и браузерах через WebAssembly без накладных расходов на сборщик мусора, присутствующий в Go. Находки из портирования на Rust также переносятся в новые релизы Go от Microsoft, а сам компилятор интегрируется в экосистему инструментария OXC для проверки типов.
- Cloudflare планирует запускать инструменты разработчика в песочницах и браузере через WebAssembly.
- Rust не использует сборщик мусора в отличие от Go, что упрощает упаковку в WebAssembly.
- Инструмент развивается внутри цепочки OXC и будет применяться в линтере OXLint.
Description
A fully compatible TypeScript compiler written in Rust just landed, and it's meant to be almost 3x faster than the Go port. We ran tsrs, the Go compiler and JavaScript tsc side by side on the TypeScript repo, and found out how it was built in three weeks. If slow type checks eat your day, watch this. 🔗 Relevant Links https://blog.cloudflare.com/typescript-rust-port https://github.com/oxc-project ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 Intro 0:40 What a TypeScript compiler actually does 1:32 JavaScript vs Go vs Rust: the benchmark 2:53 How it was built in three weeks 4:06 Why build it in Rust 4:45 What's next for tsrs
