Компания Cloudflare совместно с VoidZero и Максом Швенком из компании Owner.com анонсировала открытый проект tsrs — порт компилятора TypeScript на языке Rust. Проект разрабатывается внутри инструментария Oxc при участии официальной команды разработки TypeScript и распространяется под лицензией Apache-2.0.
Исходный код порта создан без ручной разработки. Инженер Макс Швенк руководил работой автономных ИИ-агентов под управлением модели Claude Opus 5.5, задав в качестве полной спецификации 15 197 эталонных тестов соответствия оригинальному TypeScript. В настоящее время Cloudflare объединяет tsrs с проектом tsc-rs от Тео Брауна в единый пакет, добавляя поддержку протокола языкового сервера (LSP).
Производительность
tsrs можно запустить из командной строки через npm, pnpm или npx. По данным Cloudflare, при использовании одинакового количества рабочих потоков tsrs выполняет проверку типов до восьми раз быстрее и потребляет примерно на 70% меньше оперативной памяти по сравнению с TypeScript 7.0. На монорепозитории Owner.com из 37 000 файлов время проверки снизилось с 80 секунд до 7 секунд.

Независимый бенчмарк разработчика Фрэнка Чу зафиксировал ускорение проверки в 5,3 раза и сокращение расхода памяти на 72% при байтово-идентичном сгенерированном коде и совпадении диагностических сообщений. При сравнении с бета-версией TypeScript 7.1 зафиксировано ускорение в 2,7 раза, поскольку часть оптимизаций из tsrs уже перенесена в официальный компилятор.
Режимы работы
Начиная с версии 0.20.0, инструмент включает режим быстрой проверки, который активируется флагом --fast или переменной окружения TSRS_FAST=1:
pnpm exec tsrs --noEmit --fast
# Or enable the same preset through the environment:
TSRS_FAST=1 pnpm exec tsrs --noEmit
Этот режим использует адаптивное число потоков проверки (до 32 на многоядерных системах), локальное планирование и перераспределение задач, отложенный разбор файлов объявлений .d.ts и освобождение памяти для завершенных модулей.
Благодаря компиляции в WebAssembly через пакет @tsrs/wasm проверку типов можно выполнять непосредственно в браузере, в среде Cloudflare Workers или на встраиваемых устройствах без подключения сборщика мусора Go.
Текущие ограничения и особенности
Релиз носит экспериментальный статус. В текущей версии отсутствует режим непрерывного отслеживания файлов watch, не поддерживаются CLI-флаги --init и --showConfig, а порядок вывода диагностических сообщений может отличаться от оригинала. При обнаружении ошибок типов tsrs завершает работу с кодом выходящего статуса 2, в то время как tsc использует код 1, что может потребовать корректировки скриптов CI.
Так как tsrs ориентирован на версию TypeScript 7, командам на TypeScript 5 или 6 перед переходом рекомендуется сначала обновиться с помощью официального порта tsgo на языке Go от Microsoft.
Разработчики подчеркивают, что tsrs не является форком. Официальная команда TypeScript сохраняет полный контроль над дизайном и эволюцией языка. Для поддержания совместимости применяется автоматизированный процесс: ИИ-агенты ежедневно проверяют коммиты в оригинальном репозитории TypeScript, запускают тесты и формируют задачи на устранение обнаруженных расхождений.
Исходный код проекта опубликован на GitHub в репозитории oxc-project/tsrs.