コンポーネント構成¶
YanmaJS リポジトリを構成するコンポーネントの一覧と役割をまとめます。
- エンジン本体とホスト責務(イベントループ・モジュールローダーなど)はソースツリー上で分離されています
- ビルドはリポジトリルートの単一の
build.zig/build.zig.zonに集約され、各コンポーネントのsrc/をモジュールとして繋ぎます。zig build(既定)・zig build test・zig build capi・zig build wasmなどをルートで実行します
yanmajs/ — エンジン(ECMA-262)
yanmajs_runtime/ — ランタイムライブラリ(全ホスト共通のホスト責務)
yanmajs_cli/ — CLI 実行ファイル
yanmajs_wasm/ — WASM ビルド
yanmajs_sandbox/ — ブラウザプレイグラウンド(HTML)
yanmajs_capi/ — C ABI 共有ライブラリ
yanmajs_doc/ — このドキュメントサイト
example/ — 利用例(C ホスト等)
script/ — 開発用スクリプト(Unicode テーブル生成・test262 取得)
yanmajs¶
- ECMA-262 を実装するエンジン本体。static ライブラリ・unit テスト・ベンチマークの 3 本立てで、実行ファイルは持たない
- 依存: なし(他の全コンポーネントの土台)
- ビルド:
make build(ルートのzig buildがエンジン static ライブラリと CLI を生成)
yanmajs_runtime¶
- どのホストでも必要になるホスト責務を共有するライブラリ
- タイマーの due 管理(
EventLoop— 非ブロッキングのpumpと native 用runBlockingの 2 層) - ファイルシステムベースのモジュール解決(
FsModuleLoader) - console 出力・未処理 rejection の報告ポリシー
- 依存:
yanmajs - テスト:
make test-runtime。詳細は組み込みガイドのイベントループ節を参照
yanmajs_cli¶
- CLI 実行ファイル
yanmajs。yanmajs_runtimeの薄いシェルで、引数パース・REPL・stdin/ファイル読み込みなど CLI 固有の処理のみを持つ - 依存:
yanmajs,yanmajs_runtime - ビルド:
make build-cli(成果物はzig-out/bin/yanmajs)
yanmajs_wasm¶
- エンジン + ランタイムを wasm32-wasi 向けにビルドした
yanmajs.wasmと、その export 面(wasm_init/wasm_eval/wasm_pump等) - 依存:
yanmajs,yanmajs_runtime - ビルド:
make build-wasm
yanmajs_sandbox¶
yanmajs_wasmの成果物をブラウザで動かすプレイグラウンドの HTML ページ- 依存:
yanmajs_wasmの成果物(ビルドは持たない) - 配置:
make build-sandbox(docs/sandbox/へコピー)
yanmajs_capi¶
- C ABI の共有ライブラリ(
libyanmajs.so)とヘッダ(include/yanmajs.h)。C FFI を持つ言語(C/C++/Rust 等)からの組み込み用 - 依存:
yanmajs - ビルド:
make build-capi、テスト:make test-capi。詳細は C API ガイドを参照
yanmajs_doc¶
- このドキュメントサイトのソース(zensical でビルド)
- ビルド:
make build-doc
example¶
- 利用例。
example/c/は C API の実行可能サンプル 4 本で、Docker だけで試せる(cd example/c && make run) - 実行:
make examples-c(リポジトリルートから)
script¶
- 開発用スクリプト。
script/unicode/は Unicode テーブル生成、script/test262/は test262 の取得 - いずれも Makefile のタスク(
make unicode-*/make test262-setup)から呼ばれる