Skip to content

コンポーネント構成

YanmaJS リポジトリを構成するコンポーネントの一覧と役割をまとめます。

  • エンジン本体とホスト責務(イベントループ・モジュールローダーなど)はソースツリー上で分離されています
  • ビルドはリポジトリルートの単一の build.zig / build.zig.zon に集約され、各コンポーネントの src/ をモジュールとして繋ぎます。zig build(既定)・zig build testzig build capizig 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 実行ファイル yanmajsyanmajs_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)から呼ばれる