11 Марта вышел аннонс Typescript 7, в котором рассказали о разработке нового tsgo компилятора.
Андерс Хейлсберг (разработчик языков TurboPascal, C#) объявил о следующем этапе в развитии Typescript, направленном на кардинальное повышение производительности.
Основная ценность Typescript — это удобный опыт разработки, с ростом кодовой базы эта ценность становится всё более очевидной. Но, как показала практика, текущая реализация часто не справляется с очень крупными проектами. Разработчики сталкиваются с долгим временем загрузки, медленным автокомплитом и проблемами с производительностью.
Нативный порт компилятора на Go — tsgo доступен в репозитории на GitHub — typescript-go. Уже сейчас его можно потестировать и попытаться собрать какой-нибудь проект, но пока реализовано 80% функционала языка. А завершить разработку tsgo обещают в пределах 2025 года.
Насколько быстрее?
Нативная реализация уже способна загружать многие популярные проекты 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. Проект оказался настолько огромным, что на рендеринг первого кадра уходило несколько дней.
Разработчик уже успел высказаться о новом компиляторе:
Заключение
Typescript продолжает активно развиваться. Ждем, когда будет возможность транслировать TS в Go так, чтобы потом скомпилировать проект в бинарник и запускать бекенд на сервере (хотя такая возможность уже есть в Deno, но если это будет реализовано через Go, то, мне кажется, в TS могли бы появиться свои горутины для параллельного выполнения кода). А что думаете вы?
ссылка на оригинал статьи https://habr.com/ru/articles/890560/
Добавить комментарий