Вийшов tsc-ts — експериментальний компілятор TypeScript, написаний на TypeScript

tsc-ts — експериментальне перенесення компілятора TypeScript 7.0.2 на TypeScript. Пакет можна встановити через npm і перевірити на власному проєкті; порівняння з tsgo не гарантують однакової роботи з будь-якою кодовою базою.

· 4 хв читання · 5 коментарів

17 жовтня 2026 року на Hacker News опублікували матеріал про tsc-ts — експериментальне перенесення компілятора TypeScript 7.0.2, відомого як TypeScript-Go або tsgo, на TypeScript. Отриманий код збирають у нативний виконуваний файл за допомогою scriptc. Розробник може встановити пакет через npm і запустити його на своєму проєкті. Порівняння з tsgo дають орієнтир, але не замінюють такої перевірки.

Що перенесли і як перевіряли

Пакет tsc-ts містить компілятор, команду для термінала й API-сервер. Після встановлення через npm компілятор можна запустити, вказавши tsconfig.json. Під час такого запуску використовується нативний файл із необов’язкової залежності для відповідної платформи. У репозиторії є й еталонні збірки tsgo: з їхніми результатами порівнюють роботу перенесеного компілятора.

Перенесення охоплює сканування й парсинг коду, побудову синтаксичного дерева, зв’язування символів, визначення розташування модулів і перевірку типів. Компілятор також обробляє налаштування проєкту, видає діагностичні повідомлення, створює JavaScript і файли декларацій типів. Перевірено режими --build, --incremental і --watch. Ідеться не лише про те, чи зможе компілятор прочитати вихідний файл: порівнюють і те, що він повідомляє та записує на виході.

Як зазначено в README репозиторію tsc-ts, для порівнянь використовують корпус тестів TypeScript: близько 12 500 файлів і 17 000 тестових одиниць після поділу випадків із кількома файлами. Результати роботи сканера збіглися з tsgo на всіх файлах корпусу, парсера й дерева — на всіх тестових одиницях, визначення розташування модулів — на всіх запитах. Для перевірки типів зазначено збіг діагностичних повідомлень для всіх файлів.

Окремо порівнювали вихідні файли. Для JavaScript використали 39 наборів налаштувань: результати збіглися на всіх порівнюваних одиницях. Для декларацій типів заявлено збіг на всіх одиницях; сценарії збірки та інкрементального режиму теж порівняли з tsgo. Це результати перелічених перевірок, а не обіцянка однакової роботи на будь-якому проєкті.

У репозиторії передбачені команди для повторного порівняння з tsgo та вимірювання часу роботи порівняно з tsgo і JavaScript-компілятором TypeScript. Підсумкових показників швидкості в представленому матеріалі немає. Лише за охопленням тестового корпусу не можна зробити висновок, чи буде новий варіант швидшим на конкретній кодовій базі.

API, збірка та межі проєкту

Режим --api працює через стандартні потоки введення й виведення. Він надає той самий API, що й tsc --api версії 7.0.2, тому інструмент, який звертається до цього інтерфейсу, може запускати замість нього tsc-ts. У матеріалі таким інструментом названо scriptc. Відповіді сервера окремо порівнюють із відповідями tsc --api; також перевіряють збірку тих самих програм через scriptc з обома компіляторами.

Підтримуються методи мовного сервісу для отримання підказок, тегів JSDoc, коментарів документації та відомостей про використання символів. Водночас методи запуску профілювання CPU та збереження профілю пам’яті не підтримуються. Якщо для підказок потрібні автоматичні імпорти, сервер повідомляє про цю потребу, як і tsc --api. Тому сумісність API не слід розуміти як наявність усіх можливих методів.

Для збірки з вихідного коду потрібні Node.js 24+ із npm, Go 1.26, macOS, Linux або Windows як середовище для scriptc і clang для компонування. У проєкті зафіксовано версію scriptc 0.3.6 та його пакет для потоків; з іншою версією scriptc збірка, згідно з README, завершується помилкою. Передбачено збірку варіанта для Node.js, нативного файлу й еталонних збірок tsgo. Готовий пакет встановлюється через npm окремо від цих кроків.

Термін виходу з експериментального статусу не вказано. Не заявлено й про те, що tsc-ts замінить tsgo або звичний компілятор TypeScript. Тим, хто стежить за перенесенням мовних інструментів, поряд із ним можна розглянути експериментальне перенесення компілятора TypeScript 7 на Rust.

Що перевірити розробнику сайту

Якщо проєкт використовує TypeScript, почати можна зі встановлення tsc-ts як залежності для розробки та запуску з його tsconfig.json. Далі варто порівняти діагностичні повідомлення й вихідні файли з поточною збіркою. Якщо проєкт спирається на інструменти, які використовують tsc --api, окремо перевірити потрібні їм методи: перелік підтримуваних викликів не означає підтримки профілювання.

Результати тестового корпусу показують, які частини компілятора вже порівняли з tsgo. Вони не дають розробнику відповіді на запитання, чи зміниться збірка його сайту і скільки часу вона займе. Експериментальний статус і відсутність готових показників швидкості залишають це питанням перевірки на власному коді.

Моя думка

Мені цікаве перенесення компілятора на TypeScript і те, що його частини порівнюють із tsgo окремо. Я б спочатку запустив tsc-ts на невеликому навчальному проєкті й подивився на діагностичні повідомлення та результат збірки. Поки не бачу причин замінювати ним звичний інструмент без такої перевірки.

Для звичайного лендінгу мені простіше зробити розмітку, не ускладнюючи інструментарій. До tsc-ts я б звертався, коли потрібно розібратися в роботі компілятора або перевірити його сумісність із конкретним проєктом.

Джерела

Звідки новина. Текст — переказ своїми словами, факти — з джерела, думка — автора.

  1. tsc-ts: TypeScript written in TypeScript github.com

Про автора

Турал Латип

початківець фронтенд-розробник

Пишу навчальні інтерфейси й створюю невеликі сторінки. Зараз розбираюся із завантаженням зображень і базовими API.

Усі публікації автора

Фронтенд 4 хв читання

ts-rust: експериментальне перенесення компілятора TypeScript 7 на Rust

Експериментальний ts-rust переносить компілятор, перевірку типів і мовний сервер TypeScript 7 на Rust. Тести показують прискорення, але проєкт ще потрібно перевіряти на конкретних застосунках.

Фронтенд 3 хв читання

Bez генерує браузерний рушій за вебспецифікаціями й тестами

Bez створює браузерний рушій за вебспецифікаціями, звіряючи результат із Chromium, Firefox і WebKit. Проєкт поки на ранній стадії, а опубліковані показники не означають готовності рушія.

Швидкість 4 хв читання

Автор блогу прибрав Next.js і отримав 100 балів у всіх категоріях Lighthouse

Автор Bloffy замінив Next.js на Hono в публічній частині блогу й отримав 100 балів Lighthouse у всіх категоріях. Пояснюємо, чому кешування та оптимізації зображень виявилося недостатньо.

Написати коментар

Не публікується. Надішлемо посилання, щоб підтвердити коментар.

Без посилань і реклами. Перший коментар публікується після перевірки. Надсилаючи коментар, ви погоджуєтеся з політикою конфіденційності.

  1. Цікаво, що в tsc-ts є ще API-сервер: він уже придатний для інтеграції в редактор чи поки радше експериментальний інтерфейс для самого компілятора?

    1. Турал Латип Автор публікації

      Поки радше експериментальний інтерфейс: у публікації є згадка про API-сервер, але готовність інтеграції з редакторами не підтверджена.

      1. А що саме має з’явитися, щоб назвати інтеграцію з редактором готовою: стабільний протокол, приклад для конкретного редактора чи перевірка на реальному проєкті? Бо згадка про API-сервер сама по собі ще не показує, наскільки його поведінка сумісна з потребами редактора.

  2. Як саме перевіряли сумісність із tsgo — є тести на реальних проєктах, чи поки лише порівняння результатів збірки?

    1. У своєму невеликому проєкті я спершу порівняв би діагностику й вихідні файли для однакового tsconfig.json: чи є в tsc-ts приклад перевірки на реальній кодовій базі, а не лише зіставлення збірок із tsgo?