実行領域

Lambda C スクリプトは明確に区切られた境界の内側で動作します。FFI(ホストが登録した関数群)と サンドボックスモード(ポインタアクセス制限)という2つのスイッチが、その境界の大きさと形を決定します。このページでは、その境界を明示します。

2 つの軸

sandbox OFFsandbox ON
FFI なし計算 + 任意メモリアクセス純粋計算
FFI ありフル統合 + ベアメタル抜け穴統合済(推奨)

各象限はそれぞれ異なる性格を持ちます。


第1象限: 純粋計算

sandbox ON、FFI なし

最小の Lambda C。スクリプトはあらゆるインメモリ計算を実行できますが、外界には一切触れられません。

利用可能なもの:

利用不可:

実態: スクリプトは sqrt(2) を計算してローカル変数に正解を入れることはできますが、その答えを外界に伝える手段がありません。アルゴリズムを単独で検証するには便利ですが、組み込み製品としては単独では成立しません。


第2象限: + 任意メモリアクセス

sandbox OFF、FFI なし

第1象限と同じ機能に加えて、スクリプトは任意のポインタ値を参照解決できます:

int *gpio = (int *)0x40020000;
*gpio = 1;

理論上は FFI バインディングなしで MMIO レジスタを直接叩けますが、実用性は乏しいです ── アドレスを正確に知らねばならず、型安全なマーシャリングも、状態検証も、ホストへのエラー報告もなく、ハードウェアマッピングが変わった瞬間に破綻します。この象限は存在しますが、本番コードはここに住んでいません。


第3象限: 統合済 ── 本番運用の推奨構成

sandbox ON、FFI あり

スクリプトはホスト登録済み FFI 関数を呼び出せ(型付き・検証付き・整数ID経由で約100nsのディスパッチ)、かつ raw ポインタによる VM 管理領域外へのアクセスは禁じられます。

実プロダクトが住むのはこのレイヤーです。ホストが FFI として公開したものはすべて到達可能 ── GPIO、センサ、アクチュエータ、実時刻、通信バス、RTOS プリミティブ、ドメイン固有呼び出し。スクリプト側のバグは VM データを破壊し得ても、OS メモリ・MMIO・他タスクには到達しません。ホストの FFI 実装は依然として安全境界として機能し、各呼び出しを物理状態に対して検証します。

ほとんどの組み込み製品でリリース時に採用すべき構成です。


第4象限: フル権限

sandbox OFF、FFI あり

最大の表現力。スクリプトは FFI raw ポインタアクセスの両方を持ちます。以下のような場面で有用です:

トレードオフは、スクリプト側のバグが任意のメモリを破壊し得ること。ソースまで自社管理下にある信頼バイトコード専用です。


なぜこれが重要か

4象限を上から下まで読むと、パターンは明白です:

Lambda C 単体はサンドボックス化された計算機にすぎません。プロダクトとして生きるのは、ターゲットハードウェア向けのホスト側 FFI 層が組み上がった後です。

その FFI 層 ── GPIO バインディング、センサドライバ、タイマフック、安全インタロック ── こそが、共同開発・カスタマイズ案件の本体です。Lambda C はバイトコード VM、コンパイラ、そして契約上のフレームを提供します。残る作業は統合であり、それは設計上プロジェクトごとに固有です。

もしあなたの製品が第1象限(純粋計算)の中だけで完結するなら、Lambda C 単体で十分かもしれません ── ただしその場合は Lua、mruby、お好みの組み込みインタープリタでも同等に機能します。Lambda C を選ぶ理由は 第3象限 にあり、第3象限に独力で到達するのが難しい理由は、私たちがパートナーとして存在する理由と同じものです。

詳しくは ライセンスとお問い合わせ をご覧ください。