Архитектурный прорыв: от JS к Go
Microsoft официально представила TypeScript 7.0, который является не просто обновлением, а нативным портом на языке Go. Команда сохранила логику оригинальной кодовой базы, но переписала её для использования современных преимуществ железа. Ключевые технические изменения включают поддержку shared memory multithreading (многопоточности с общей памятью) и новые алгоритмы оптимизации. Это позволяет обрабатывать огромные кодовые базы с минимальными задержками.
Реальные метрики производительности
Скорость работы TypeScript 7.0 измеряется не в абстрактных бенчмарках, а на реальных open-source проектах. Компиляция стала в среднем в 10 раз быстрее, а потребление памяти снизилось. Ниже приведены сравнительные данные по крупным проектам:
| Проект | TS 6.0 (сек) | TS 7.0 (сек) | Ускорение |
|---|---|---|---|
| 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 |
Параллельно с ростом скорости наблюдается снижение потребления памяти. Например, в проекте bluesky дельта памяти составила -26%, а в vscode — -18%.
Влияние на разработку и CI/CD
Ускорение затрагивает не только билды, но и работу в редакторах. В VS Code время от открытия файла до появления первой ошибки сократилось с 17.5 секунд до менее 1.3 секунды (ускорение >13x). Для корпоративных пользователей результаты еще более впечатляющие:
- Slack: время проверки типов в CI сократилось с 7.5 минут до 1.25 минут. Локальная разработка стала «usable» после того, как была практически невозможной из-за нагрузки на Language Server.
- Microsoft Loop/PowerBI: инженеры описали новый опыт как «спасающий жизнь», так как редактор перестал зависать на больших монорепозиториях.
- News Services (Microsoft): экономия 400 часов в месяц на ожидании CI-билдов.
- Stability: количество сбоев Language Server снизилось на 60%, а падающих команд — на 80% по сравнению с TS 6.0.
Установка и совместимость
TypeScript 7.0 доступен через npm. Важно отметить, что текущая версия не предоставляет нового API для программистов (ожидаем в версии 7.1), но обеспечивает бэкенд-совместимость. Для параллельного использования с TS 6.0 (например, для утилит вроде typescript-eslint) выпущен пакет @typescript/typescript6, который предоставляет бинарник tsc6 и экспортирует API старой версии, предотвращая конфликты имен.
Установить новую версию можно стандартной командой:
npm install -D typescript
Источник: Microsoft ↗
