- エンジン - 言語処理系 - e.g. V8, … - ランタイム - ホスト環境、実行環境 - e.g. Chrome(blink), Node.js, … - 処理系を動かす環境 - JSと外界を仲介しているとも言える?( e.g. DOM, fs, net, …) - 例えばconsoleも非同期処理も持っていないエンジンがある エンジンとランタイム - 基本的にはランタイムがエンジンを埋め込む形 - e.g. V8 の C++ API をラップして Rust プログラムから呼ぶ - ランタイム兼エンジンもある( e.g. Hermes) - とはいえエンジン単体で動く CLI も大体ある(主にデバッグ・テスト用) - jsvu でまとめて簡単にインストールできる - ランタイム側でのカスタマイズ - host-definedな言語機能を実装する - e.g. イベントループ(非同