Nim VM
Nimプログラムをすぐに実行し、命令・フレーム・値をその場で観測します。デバッグ可能性は後付けのアダプターではなく、実行モデルそのものに組み込みます。
gudgeon run app.nifGUDGEONは、Nimプログラミング言語のための仮想マシン兼実行プラットフォームです。lowered Nim IRをすぐに実行し、ソースレベルのデバッグと計測を可能にし、同じプログラムモデルのままネイティブコードへの道を開きます。
Nimonyは解析・型検査・lowering・IR生成を担います。GUDGEONはその先で、Nimプログラムを動かし、止め、測り、別の実行エンジンへ渡します。
GUDGEONは第一に、NimのためのVMです。最初の入力はNIFですが、実行境界をtyped, lowered program IRに置くことで、単一のフロントエンドを超えて進化できる設計にします。
NIF / Final IRをVM専用bytecodeとして閉じ込めず、解釈とコンパイルの共通境界として扱います。どちらの実行方式でも、Nimのソース位置・型・フレーム情報を保ちます。
Nimプログラムをすぐに実行し、命令・フレーム・値をその場で観測します。デバッグ可能性は後付けのアダプターではなく、実行モデルそのものに組み込みます。
gudgeon run app.nif同じNim IRをAhead-of-Timeでコンパイルします。C/NIFC、LLVM、直接codegenのいずれにも接続でき、プロジェクトをひとつの性能バックエンドに固定しません。
gudgeon build app.nif生成Cのポインタをpretty-printするのではなく、VM自身のフレームとNimの型メタデータをデバッガへ返します。停止したプログラムは、作者が書いた抽象度のままです。
目指すのは模倣ではなく、言語ランタイムを長く使えるものにする分離を取り入れることです。
設計原則: ネイティブバックエンドを先に決めない。まずVMが持つValue、Frame、Heap、Type Metadata、Source Locationを、すべての実行エンジンが共有する契約として整える。
FFIはC関数を呼べるだけではありません。GUDGEONはdowncall、Nim VMへのcallback、ガベージコレクション、所有権、例外、型変換を、ランタイムが理解できる境界として定義します。
GUDGEONはNimを別の方法で走らせるだけではありません。コンパイラとランタイムの境界を更新し、実行・デバッグ・プロファイリング・ネイティブコンパイルで同じモデルを共有します。
lowered NIF / Final IRを読み込み、安定した内部Execution IRへ正規化する。
breakpoint、step、stack、locals、evaluateをVMの第一級APIとして扱う。
VM executorとネイティブバックエンドが、Nimの型・ソースマップ・FFIメタデータを共有する。
デバッグ・プロファイリング・トレースの観測点を実行エンジン横断で公開する。
GUDGEON — Gudgeon Unified Debuggable Guest Execution Orchestrator for NIF
ページ上部へ ↑