CPython bindingsを使わずにPythonコードを実行でき、WebAssemblyや組み込みにも対応したRust製Python 3インタプリタ。
dop251/goja
Goアプリケーションへの組み込みに使える、純Go製のECMAScript 5.1 JavaScriptエンジン。
- スター
- 7,155
- フォーク
- 497
- 未解決の Issue
- 33
- 最終コミット
- 16 時間前
これは何?
Gojaは、Goだけで実装されたJavaScriptエンジンです。ECMAScript 5.1を対象としており、ES6の機能の多くは現在も開発中です。GoプログラムからJavaScriptコードを読み込んで実行し、Goの値をスクリプトに渡したり、実行結果を受け取ったりできます。cgoやV8ラッパーには依存しません。
設定、ルール、プラグインコードなど、スクリプトでGoアプリケーション内のロジックを動かす用途を想定しています。純Go製なのでビルドが簡単で、Goがサポートするあらゆるプラットフォームで動作します。また、実行時間の長いスクリプトの中断や、Goの構造体フィールド名とJavaScriptの命名規則との対応付けなど、実行環境を細かく制御できます。
Goja自体はsetTimeout、setInterval、Node.js APIを提供しません。これらは別プロジェクトのgoja_nodejsが提供します。各Runtimeインスタンスは単一のgoroutineからのみ使用でき、計算負荷の高いJavaScriptではV8より大幅に低速です。
主な機能
- 01正規表現とstrict modeに対応したECMAScript 5.1を実装。
- 02Goの値をJavaScriptに変換し、JavaScriptの値をGoにエクスポート。
- 03thisの値を指定する場合も指定しない場合も、GoからJavaScript関数を呼び出し可能。
- 04カスタムname mapperを使って、Goの構造体フィールドやメソッドをJavaScriptの名前に対応付け。
- 05別のgoroutineから実行中のスクリプトを中断。
- 06sourcemapに対応し、BabelとTypeScriptコンパイラを実行可能。
ユースケース
- Goのサービスにユーザー定義のスクリプトやルールを組み込む。
- cgoを使わずに、Goプログラム内でES5ライブラリやビルドツールを実行する。
- JavaScriptで制御するGo向けのプラグインシステムや設定システムを構築する。
- GoからJavaScriptの実行環境を調査・制御する。
トピック
よくある質問
- goja とは?
- Goアプリケーションへの組み込みに使える、純Go製のECMAScript 5.1 JavaScriptエンジン。 Gojaは、Goだけで実装されたJavaScriptエンジンです。ECMAScript 5.1を対象としており、ES6の機能の多くは現在も開発中です。GoプログラムからJavaScriptコードを読み込んで実行し、Goの値をスクリプトに渡したり、実行結果を受け取ったりできます。cgoやV8ラッパーには依存しません。
- goja は無料で使えますか?ライセンスは?
- goja は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- goja は今もメンテナンスされていますか?
- 活発にメンテナンス中。goja の最終コミットは 2026年10月21日 です。
- goja は何に使えますか?
- Goのサービスにユーザー定義のスクリプトやルールを組み込む。 cgoを使わずに、Goプログラム内でES5ライブラリやビルドツールを実行する。 JavaScriptで制御するGo向けのプラグインシステムや設定システムを構築する。 GoからJavaScriptの実行環境を調査・制御する。
- goja はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/dop251/goja
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Rust製の超高速なTypeScript/JavaScriptコンパイラ兼パーサー。RustとJavaScriptの両方から利用できます。
安全な引数エスケープとクロスプラットフォーム向けヘルパーを備え、shell風スクリプトをJavaScriptで書けるツール。
UnityやUnreal EngineのゲームをTypeScript/JavaScriptで開発できるスクリプトソリューション。UnityではLuaとPythonのバックエンドも利用できます。
Windows、Linux、macOSで動作する、構造化データとオブジェクトを扱うクロスプラットフォームのシェル、スクリプト言語、オートメーションフレームワーク。
ClangとLLVMを基盤とする対話型C++インタープリター。REPLでC++コードを1行ずつ実行できます。