Как стать автором
Обновить

TypeScript 7 в 10 раз быстрее: анонс нативного компилятора TSGO

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.7K

11 Марта вышел аннонс Typescript 7, в котором рассказали о разработке нового tsgo компилятора.

Андерс Хейлсберг (разработчик языков TurboPascal, C#) объявил о следующем этапе в развитии Typescript, направленном на кардинальное повышение производительности.
Основная ценность Typescript — это удобный опыт разработки, с ростом кодовой базы эта ценность становится всё более очевидной. Но, как показала практика, текущая реализация часто не справляется с очень крупными проектами. Разработчики сталкиваются с долгим временем загрузки, медленным автокомплитом и проблемами с производительностью.

Нативный порт компилятора на Go - tsgo доступен в репозитории на GitHub - typescript-go. Уже сейчас его можно потестировать и попытаться собрать какой-нибудь проект, но пока реализовано 80% функционала языка. А завершить разработку tsgo обещают в пределах 2025 года.

Golang | Typescript
Golang | Typescript

Насколько быстрее?

Нативная реализация уже способна загружать многие популярные проекты Typescript, включая сам компилятор. Вот сравнительные данные по времени выполнения для различных проектов на GitHub:

Проект

Кол-во строк кода

TSC

TSGO

Ускорение

VS Code

1,505,000

77.8 с

7.5 с

10.4x

Playwright

356,000

11.1 с

1.1 с

10.1x

TypeORM

270,000

17.5 с

1.3 с

13.5x

date-fns

104,000

6.5 с

0.7 с

9.5x

tRPC (сервер + клиент)

18,000

5.5 с

0.6 с

9.1x

rxjs (observable)

2,100

1.1 с

0.1 с

11.0x


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

Скорость в редакторах

Большую часть времени разработчики проводят в редакторах, и именно здесь производительность критически важна. Новый компилятор обещает быстрое открытие крупных проектов. Например, для кодовой базы VS Code время загрузки сокращается с 9,6 секунд до 1,2 секунды — улучшение в 8 раз. Это значит, что с момента открытия редактора до первого нажатия клавиши работа станет значительно быстрее. Потребление памяти также уменьшилось примерно вдвое, хотя оптимизация ещё впереди. Операции языкового сервера, такие как автодополнение, переход к определению и поиск ссылок, тоже станут быстрее. Кроме того, они переходят на Language Server Protocol (LSP), что улучшит интеграцию с другими языками.

Дорожная карта версий

Последний релиз — Typescript 5.8, скоро выйдет 5.9. Текущая версия на JavaScript продолжит развитие в линейке 6.x, а Typescript 6.0 принесёт некоторые изменения для синхронизации с нативной версией. Когда нативная реализация достигнет достаточного уровня, её выпустят как Typescript 7.0. Пока это в разработке, и будут анонсироваться этапы стабильности и новых функций.

Для ясности, версии будут называться Typescript 6 (JS) и Typescript 7 (native). Внутренне могут упоминаться кодовые имена “Strada” (оригинальный Typescript) и “Corsa” (нативный Go).

Doom запустили на типах TS

Также недавно всех удивил необычный проект от Michigan TypeScript. На его YouTube канале вышло видео под названием TypeScript types can run DOOM. В нём он показал свой огромный проект, который с помощью типов в TS рендерит Doom. Проект оказался настолько огромным, что на рендеринг первого кадра уходило несколько дней.

Разработчик уже успел высказаться о новом компиляторе:

Doom port in typescript 7
Doom port in typescript 7

Заключение

Typescript продолжает активно развиваться. Ждем, когда будет возможность транслировать TS в Go так, чтобы потом скомпилировать проект в бинарник и запускать бекенд на сервере (хотя такая возможность уже есть в Deno, но если это будет реализовано через Go, то, мне кажется, в TS могли бы появиться свои горутины для параллельного выполнения кода). А что думаете вы?

Теги:
Хабы:
Всего голосов 12: ↑12 и ↓0+14
Комментарии13

Публикации

Работа

React разработчик
40 вакансий
Go разработчик
78 вакансий

Ближайшие события