Как вы знаете, несколько месяцев назад команда Typescript публично анонсировала переписывание компилятора с собственно Typescript на Go. Обещали ускорение в 10 раз, что в принципе звучит реально, учитывая, что текущий компилятор однопоточный.
Вся разработка ведется публично в репозитории typescript-go, доступны экспериментальные сборки. Полную feature parity обещают к концу года. Раньше он мне казался слишком сырым для реального использования, но на самом деле немалое количество фич уже поддержано.
Решил протестировать его в нашей продакшен монорепе, в частности для подсказок в IDE (для сборки пока что всё-таки ещё сыроват, в частности из-за отсутствия поддержки target-ов отличных от esnext). Обычный тайпскрипт там просто задыхается, ответов от LSP можно ждать секунд по 10. Завести было подозрительно легко: всего лишь поставить расширение и включить нативный режим.
Я думаю, никого не удивлю, если скажу, что стало быстрее. Прямо конкретно быстрее. Подсказки появляются раньше, чем успеваешь дописать название переменной. Раньше так было только в небольших проектах, а теперь и в огромной монорепе на 350к строк кода. Каких-то критичных регрессий не заметил, разве что переименование переменных пока не завезли, кажется.
Но главный минус в том, что я не смог завести нативный режим в курсоре. Дело в том, что курсор (и другие форки vscode) по лицензии не могут использовать Visual Studio Marketplace, и вместо этого они тянут расширения из сторонних источников, например open-vsx. И расширения туда нужно публиковать отдельно, и разумеется Typescript этого не сделал. Но это только полбеды: я кое-как сумел стянуть .vsix файл расширения из стора, и оказалось, что оно поддерживает только новые версии vscode, а актуальная версия курсора построена на базе v1.96.2, релизнутой в ноябре прошлого года. Пришлось запускать сам vscode.
И хоть я попробовал и Copilot, и Supermaven, всё равно они даже близко не стоят с качеством подсказок в курсоре. И получилась такая неприятная дилемма: либо молниеносный LSP в обычном vscode, либо гениальные AI-подсказки в медленном курсоре. День покодил по-старинке и понял — без нейросетей уже не то. Жду, когда курсор обновится и можно будет получить всё и сразу. Вот тогда заживём.
Вся разработка ведется публично в репозитории typescript-go, доступны экспериментальные сборки. Полную feature parity обещают к концу года. Раньше он мне казался слишком сырым для реального использования, но на самом деле немалое количество фич уже поддержано.
Решил протестировать его в нашей продакшен монорепе, в частности для подсказок в IDE (для сборки пока что всё-таки ещё сыроват, в частности из-за отсутствия поддержки target-ов отличных от esnext). Обычный тайпскрипт там просто задыхается, ответов от LSP можно ждать секунд по 10. Завести было подозрительно легко: всего лишь поставить расширение и включить нативный режим.
Я думаю, никого не удивлю, если скажу, что стало быстрее. Прямо конкретно быстрее. Подсказки появляются раньше, чем успеваешь дописать название переменной. Раньше так было только в небольших проектах, а теперь и в огромной монорепе на 350к строк кода. Каких-то критичных регрессий не заметил, разве что переименование переменных пока не завезли, кажется.
Но главный минус в том, что я не смог завести нативный режим в курсоре. Дело в том, что курсор (и другие форки vscode) по лицензии не могут использовать Visual Studio Marketplace, и вместо этого они тянут расширения из сторонних источников, например open-vsx. И расширения туда нужно публиковать отдельно, и разумеется Typescript этого не сделал. Но это только полбеды: я кое-как сумел стянуть .vsix файл расширения из стора, и оказалось, что оно поддерживает только новые версии vscode, а актуальная версия курсора построена на базе v1.96.2, релизнутой в ноябре прошлого года. Пришлось запускать сам vscode.
И хоть я попробовал и Copilot, и Supermaven, всё равно они даже близко не стоят с качеством подсказок в курсоре. И получилась такая неприятная дилемма: либо молниеносный LSP в обычном vscode, либо гениальные AI-подсказки в медленном курсоре. День покодил по-старинке и понял — без нейросетей уже не то. Жду, когда курсор обновится и можно будет получить всё и сразу. Вот тогда заживём.
Ловите гайд, как использовать tsgo в Cursor
1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим там последнюю версию (они выпускают новую каждый день)
2. Переходим по ссылке
3. Скачанный .vsix файл переименовываем в .zip, распаковываем
4. Внутри находим файл extension/package.json, меняем в нем поддерживаемую версию в engines.vscode
5. Папку extension сжимаем в .zip, переименовываем в .vsix (не всё содержимое оригинального пакета, а только вложенную папку)
6. В курсоре открываем Command Palette, выбираем пункт "Extensions: Install from VSIX", выбираем extension.vsix
7. Включаем tsgo через Command Palette, пункт "TypeScript (Native Preview): Enable (Experimental)"
1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим там последнюю версию (они выпускают новую каждый день)
2. Переходим по ссылке
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/TypeScriptTeam/vsextensions/native-preview/[версия]/vspackage?targetPlatform=darwin-arm64
(поменяйте платформу при необходимости, по формату [linux/win32/darwin]-[arm64/x64]
, тут подробнее)3. Скачанный .vsix файл переименовываем в .zip, распаковываем
4. Внутри находим файл extension/package.json, меняем в нем поддерживаемую версию в engines.vscode
5. Папку extension сжимаем в .zip, переименовываем в .vsix (не всё содержимое оригинального пакета, а только вложенную папку)
6. В курсоре открываем Command Palette, выбираем пункт "Extensions: Install from VSIX", выбираем extension.vsix
7. Включаем tsgo через Command Palette, пункт "TypeScript (Native Preview): Enable (Experimental)"