Vercel переписала компилятор TypeScript на самом TypeScript

tsc-ts: TypeScript written in TypeScript

Эксперимент Vercel Labs: порт компилятора TypeScript 7.0.2 (tsgo) на идиоматичный TypeScript, скомпилированный в нативный код через scriptc. Каждую часть — сканер, парсер, биндер, разрешение модулей, эмит JavaScript и деклараций, проверку типов — сверяют с tsgo на корпусе из примерно 12 500 файлов (17 000 юнитов), и все результаты совпадают. Пакет tsc-ts ставится из npm и умеет работать как API-сервер, совместимый с tsc --api.

Каждая часть сравнивается с tsgo на тестовом корпусе TypeScript (около 12 500 файлов, 17 000 юнитов после разбиения многофайловых случаев).
  1. pizlonator

    Подтверждаю, это быстрее, чем версия на Go, что очень удивительно и супер впечатляюще!

    Оговорки:

    - Я не думаю, что правильно говорить, что это «написано на TypeScript». На самом деле это написано на подмножестве TypeScript, которое поддерживает scriptc. scriptc — это не просто подмножество ts; он даже хитроумно расходится с семантикой ts, чтобы облегчить свои оптимизации. Так что эти ребята на самом деле создали TypeScript-подобный нативный язык с неким гибридом RC-GC и кучей оговорок. Неясно, лучше ли это, чем просто создать новый язык.

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

    Это может быть полезно, при условии, что они вложатся в его поддержку, и если вы из тех, кому нужна компиляция ts в 2 раза быстрее.

  2. nektro

    > Экспериментальный порт компилятора TypeScript 7.0.2 (TypeScript-Go, или tsgo) на TypeScript, скомпилированный в нативный код с помощью scriptc.

    Разве не было бы проще начать с v6, той, что уже есть в typescript?

  3. _1tan

    Кто-нибудь делал бенчмарк против нового тайпчекера Buns, появившегося в v 1.4.3? Я бы сделал, но сейчас слишком далеко от своей машины.

  4. tallowen

    Чередование написания инструментов на javascript и на go или rust сейчас, похоже, находится в неустойчивом равновесии:

    - Go / Rust: Переписывать существующие инструменты на более производительных языках сейчас проще, чем когда-либо.

    - Javascript: Среда выполнения v8 для vercel или cloudflare workers — гораздо более дешёвый способ запускать определённые рабочие нагрузки (например, разговорных агентов), чем запуск тяжёлой виртуальной машины. См. just bash как ещё один пример проекта, использующего это преимущество (https://github.com/vercel-labs/just-bash).

    Мне любопытно, что получится!

  5. drewbitt

    Я уже не знаю, что мем, а что нет..

Ещё за этот день

2026-10-17