Вышел TypeScript 7.0 — нативный порт компилятора на Go. Ждали, и наконец дождались.
Конечно же сразу идём смотреть цифры.
По скорости тайпчека крупные проекты стали проверяться в 7–12 раз быстрее (TS 6 → TS 7):
- vscode: 125.7s → 10.6s (11.9x)
- sentry: 139.8s → 15.7s (8.9x)
- bluesky: 24.3s → 2.8s (8.7x)
- playwright: 12.8s → 1.47s (8.7x)
- tldraw: 11.2s → 1.46s (7.7x)
А если увеличить количество воркеров — можно выйти примерно на 16x.
По памяти также есть улучшение, хотя и не такое заметное. Потребление памяти в этих же проектах падает на 5%-25%.
Также и все фишки typescript стали работать быстрее — проверка конкретного файла, go to definition и другие.
Отдельно радует фидбек разработчиков крупных компаний. Он одновременно хвалебный и показывает, какой же, извините, мрак у некоторых на проектах:
- Slack: typecheck в CI с ~7.5 мин до ~1.25 мин, merge queue быстрее на 40%
- Microsoft News Services: экономия 400 часов в месяц на ожидании CI
- Canva: first error в редакторе с ~58 сек до ~4.8 сек
В любом случае, проделана огромная работа, которая ускоряет один из важнейших инструментов для современной фронтенд-разработки. Это, конечно же, очень круто.
Что ещё интересного в релизе:
Я уже выше упоминал воркеров. Так вот, процесс тайпчека теперь идёт параллельно в 4 воркера по умолчанию, но можно сделать больше. Воркеры частично повторяют работу друг друга, т.к. у них изолированная память, но для разных целей может потребоваться работать с одними и теми же объектами. Поэтому для окружений, где нужно оптимизировать использование ОЗУ, можно оставить одного воркера.
Для работы watch-режима сделали порт
@parcel/watcher, который отлично себя показывает в vscode, на Go.Для кейсов, где важна совместимость с TS6, оставили отдельный бинарь с реализацией ts6. В частности, совместимость нужна тем, кто использует typescript через API, т.к. у ts7 его ещё нет (ждём в 7.1).
Кто-то уже поставил себе?
https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
#development #typescript #javascript #tsgo #performance #releaseNotes