Интерпретатор Python 3 на Rust, который запускает код без привязки к CPython и поддерживает WebAssembly и встраивание в приложения.
dop251/goja
Движок JavaScript на чистом Go с поддержкой ECMAScript 5.1 для встраивания выполнения JS-кода в приложения на Go.
- Звёзды
- 7,155
- Форки
- 497
- Открытые issues
- 33
- Последний коммит
- 16 часов назад
Что это?
Goja — движок JavaScript, полностью реализованный на Go. Он поддерживает ECMAScript 5.1, а большинство возможностей ES6 пока находятся в разработке. С его помощью программа на Go может загружать и выполнять JavaScript-код, передавать в скрипты значения Go и получать результаты — без cgo и обёртки над V8.
Движок предназначен для сценариев, в которых скрипты управляют логикой внутри приложения на Go: например, отвечают за конфигурацию, правила или код плагинов. Поскольку Goja написан на чистом Go, его легко собирать, и он работает на любой платформе, поддерживаемой Go. Кроме того, хост-приложение получает точный контроль над средой выполнения: например, может прерывать долго работающие скрипты и задавать соответствие имён полей структур Go соглашениям об именовании в JavaScript.
В Goja нет setTimeout, setInterval и API Node.js — их предоставляет отдельный проект goja_nodejs. Каждый экземпляр Runtime может использоваться только из одной горутины, а на вычислительно сложных задачах Goja значительно медленнее V8.
Ключевые возможности
- 01Реализует ECMAScript 5.1, включая поддержку регулярных выражений и строгого режима.
- 02Преобразует значения Go в JavaScript и экспортирует значения JavaScript обратно в Go.
- 03Вызывает функции JavaScript из Go, с заданным значением this или без него.
- 04Сопоставляет поля и методы структур Go с именами в JavaScript с помощью настраиваемого преобразователя имён.
- 05Позволяет прерывать выполняющиеся скрипты из другой горутины.
- 06Поддерживает sourcemaps и позволяет запускать Babel и компилятор TypeScript.
Сценарии использования
- Встраивание пользовательских скриптов или правил в сервис на Go.
- Запуск библиотек ES5 или инструментов сборки внутри программы на Go без cgo.
- Создание системы плагинов или конфигурации на JavaScript для приложения на Go.
- Изучение среды выполнения JavaScript или управление ею из Go.
Темы
Частые вопросы
- Что такое goja?
- Движок JavaScript на чистом Go с поддержкой ECMAScript 5.1 для встраивания выполнения JS-кода в приложения на Go. Goja — движок JavaScript, полностью реализованный на Go. Он поддерживает ECMAScript 5.1, а большинство возможностей ES6 пока находятся в разработке. С его помощью программа на Go может загружать и выполнять JavaScript-код, передавать в скрипты значения Go и получать результаты — без cgo и обёртки над V8.
- goja можно использовать бесплатно? Какая у него лицензия?
- goja распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- goja всё ещё поддерживается?
- Активно поддерживается. Последний коммит в goja — 21 окт. 2026 г..
- Для чего можно использовать goja?
- Встраивание пользовательских скриптов или правил в сервис на Go. Запуск библиотек ES5 или инструментов сборки внутри программы на Go без cgo. Создание системы плагинов или конфигурации на JavaScript для приложения на Go. Изучение среды выполнения JavaScript или управление ею из Go.
- Где скачать goja?
- Исходный код и инструкции по установке — на GitHub: https://github.com/dop251/goja
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Сверхбыстрый компилятор и парсер TypeScript/JavaScript на Rust, доступный из Rust и JavaScript.
Инструмент на JavaScript для написания скриптов в стиле shell: обёртка над child_process с безопасным экранированием аргументов и кроссплатформенными помощниками.
Решение для написания игровой логики Unity и Unreal Engine на TypeScript/JavaScript, с поддержкой Lua и Python в Unity.
Кроссплатформенная оболочка, язык сценариев и платформа автоматизации для Windows, Linux и macOS, работающая со структурированными данными и объектами.
Интерактивный интерпретатор C++ на базе Clang и LLVM с REPL для выполнения кода построчно.