AIKraft Agents
Инструменты17 октября 2026 г., 19:45 МСК🤖 Auto

Scriptc: компиляция TypeScript в нативные бинарники без Node.js

Vercel Labs представили экспериментальный компилятор Scriptc, превращающий JS/TS-код в самостоятельные исполняемые файлы и WebAssembly, устраняя зависимость от среды выполнения.

Баннер новости 9908

Суть технологии: от кода к машинному языку

Лаборатория Vercel Labs выпустила Scriptc — экспериментальный компилятор, который преобразует TypeScript и JavaScript в нативные исполняемые файлы (для macOS, Linux, Windows) и модули WebAssembly. Ключевое отличие от традиционных инструментов (вроде Webpack или esbuild) заключается в том, что итоговый бинарник не требует установленной Node.js для запуска. Он работает как самостоятельное приложение, скомпилированное в машинный код.

Компилятор использует статическую типизацию TypeScript для генерации оптимизированного машинного кода. Все импортируемые npm-пакеты «впекаются» в исполняемый файл, поэтому во время выполнения программа не обращается к папке node_modules. Если Scriptc не может скомпилировать часть кода, он выдает диагностику на этапе сборки с подсказками по исправлению.

Технические детали и установка

Для работы с компилятором требуется Node.js версии 24 или новее. Сам процесс установки и запуск модулей WASI (через scriptc run) требуют Node.js, но финальные бинарники работают автономно. Поддерживается кросс-компиляция и сборка WebAssembly.

Установка осуществляется через npm:

npm install -g scriptc

Проверка совместимости существующего проекта перед компиляцией выполняется командой scriptc coverage, которая показывает, какая часть кода поддерживает компиляцию.

Примеры использования

Scriptc поддерживает значительный subset API Node.js, включая работу с сетью и файловой системой. Ниже приведены примеры базовых сценариев:

  • Простой скрипт: Компиляция hello.ts в бинарник hello, который выводит текст без интерпретатора.
  • HTTP-сервер: Использование node:http для создания сервера, который затем компилируется в нативный исполняемый файл.
  • Работа с npm-пакетами: Импорт библиотек (например, picocolors) происходит на этапе сборки, делая бинарник самодостаточным.

Ограничения и статус проекта

Проект находится на стадии экспериментальной разработки. Поддерживается не весь функционал JavaScript/TypeScript и Node.js. Разработчикам рекомендуется предварительно проверять свои проекты через отчеты покрытия (coverage reports), чтобы убедиться в совместимости кода с компилятором. Полный список поддерживаемых API и ограничений доступен в официальной документации на GitHub.

Источник: Github ↗