Lambda C

コンパクトなバイトコードVMと、C風のスクリプト言語 — 組み込みオーケストレーションのために

組み込みロボティクス — 現場で動く Lambda C
はじめる

コンパクトVM

4バイト固定長命令。1,225命令のプログラムが約5KB。外部依存ゼロで、Flash / EEPROMへの直接展開に適合。

O(1) FFIディスパッチ

関数名はロード時に一度だけ整数IDへ解決。以降は約100ns/呼び出し — リアルタイム制御ループに必要な予測可能なレイテンシ。

C言語サブセット構文

structunionenumtypedef、関数ポインタ、完全な制御構文。組み込みC開発者にとって学習コストはゼロ。アルゴリズムはホストCからほぼそのまま移植可能。

ホットリロードとデバッグ

VMを再起動せずバイトコードを差し替え可能。Watchpoint、GDB Pretty Printer、ポストモーテムクラッシュダンプ、命令単位のトレースモードを内蔵。

クイック例

ホスト提供の get_time() を呼ぶスクリプト:

// hello.c — スクリプト
double get_time();

int main() {
    double t = get_time();
    printf("Time: %.2f\n", t);
    return 0;
}
// host.c — VMを組み込むホスト側
#include "common.h"
#include "bytecode.h"

static void ffi_get_time(LcvmState *vm) {
    lcvm_push_double(vm, 123.45);
}

int main() {
    LcvmState vm;
    compact_program_t prog;

    lcvm_init(&vm);
    lcvm_register_function_ex("get_time", ffi_get_time, 0, "");

    lcvm_compact_load("hello.c.lcbc", &prog, 0);
    lcvm_link_program(&prog);
    lcvm_run_compact(&vm, &prog, 0);

    lcvm_compact_free(&prog);
    return 0;
}

組み込みオーケストレーションのために設計

Lambda Cは 単一の信頼ドメイン内で動作する組み込みオーケストレーションVM です。ホストCプログラムがハードウェアを所有し、FFI機能を登録し、自ら生成したバイトコードを配備します。

Lambda Cが意図的に 狙わない もの:

スクリプトは 意図 を表現し、FFI実装が現在の物理状態に対する 実行可能性 を判断します。これは航空宇宙・自動車制御ソフトウェアでお馴染みの階層分離 — 自動操縦は「やりたいこと」を表明し、HAL/ドライバ層が armed / キャリブレーション / 熱限界を検証して、実行・サチュレート・拒否のいずれかを行う — と同じ構造です。

設計思想の全体像は アーキテクチャ を参照してください。

なぜLuaやMicroPythonではないのか?

特徴Lambda CLua 5.4MicroPython
RAM使用量~16 KB~64 KB~128 KB
言語C言語サブセットLuaPython
ROM展開可能困難困難
起動時間高速中程度遅い
FFI呼び出しコスト~100 ns~200 ns~500 ns

Lambda Cは8〜16KB RAM(Cortex-M0+クラス)で動作します。コンパイラが生成するバイトコードはポジション独立で、FlashやEEPROMから直接実行可能。FFIディスパッチはロード時リンク後、単一の間接呼び出しで完了 — 文字列ハッシュも実行時シンボル解決も発生しません。

詳細は VM内部構造 および ベストプラクティス を参照してください。

ライセンスとお問い合わせ

Lambda C は プロプライエタリソフトウェアであり、すべての権利は Lambda 合同会社に帰属します。Lambda C の複製・改変・再配布には、Lambda 合同会社による書面での事前許可が必須 です。OSS ではありません。

バイナリ (VMランタイムおよびコンパイラ lcvmc) は 無償・無保証・現状有姿 (as-is) で提供します。評価・利用は すべてご自身の責任 で行ってください。特定用途への適合性は保証しません。別途契約しない限りサポートは提供せず、利用に起因する一切の損害について責任を負いません。

ソースコード は NDA を締結したパートナー企業にのみ開示します。この NDA および付随する個別契約が、ライセンス本文で要求される「書面での事前許可」にあたります。ソース開示は 有償案件 (共同開発・カスタマイズ・統合) とセット であり、ソース単体での販売は行いません。

製品開発や産業用途での Lambda C 利用をご検討の場合は、お気軽にご相談ください。主に以下の3つの形態でご一緒します。

お問い合わせ: Lambda合同会社