コンパクトVM
4バイト固定長命令。1,225命令のプログラムが約5KB。外部依存ゼロで、Flash / EEPROMへの直接展開に適合。
O(1) FFIディスパッチ
関数名はロード時に一度だけ整数IDへ解決。以降は約100ns/呼び出し — リアルタイム制御ループに必要な予測可能なレイテンシ。
C言語サブセット構文
struct、union、enum、typedef、関数ポインタ、完全な制御構文。組み込み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が意図的に 狙わない もの:
- マルチテナント実行。プロセス内のすべてのVMは同一のFFI能力集合を共有します。
- 信頼できないバイトコード。
.lcbcは信頼経路(署名済みファームウェア、署名済みOTA)経由で配布される前提。命令レベルのベリファイアは提供しません。 - 汎用スクリプティング。クロージャ、GC、動的型付けは意図的にありません。
- スタンドアロン展開。Lambda Cは常にCホストへ組み込まれます。
スクリプトは 意図 を表現し、FFI実装が現在の物理状態に対する 実行可能性 を判断します。これは航空宇宙・自動車制御ソフトウェアでお馴染みの階層分離 — 自動操縦は「やりたいこと」を表明し、HAL/ドライバ層が armed / キャリブレーション / 熱限界を検証して、実行・サチュレート・拒否のいずれかを行う — と同じ構造です。
設計思想の全体像は アーキテクチャ を参照してください。
なぜLuaやMicroPythonではないのか?
| 特徴 | Lambda C | Lua 5.4 | MicroPython |
|---|---|---|---|
| RAM使用量 | ~16 KB | ~64 KB | ~128 KB |
| 言語 | C言語サブセット | Lua | Python |
| 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つの形態でご一緒します。
- 共同開発 — お客様の特定ハードウェアターゲット向けに、VM・コンパイラ・FFI層を貴社チームと共同で実装します。
- カスタマイズ — 特定MCUクラス向けのチューニング、独自オペコード、ドメイン特化型シミュレータSDKなど。
- NDAベースのソース開示 — 社内拡張・監査・長期保守のためのフルソースアクセス。
お問い合わせ: Lambda合同会社