feat(plugins): ArrayBox/MapBoxプラグイン実装とPhase 10.1計画
🎯 革命的発見: プラグインC ABI = JIT→EXE変換の統一基盤 ## 主な変更点 - ArrayBoxプラグイン: get/set/push/size/is_empty実装 - MapBoxプラグイン: size/get/has実装(ROメソッドのみ) - Phase 10.1ドキュメント: プラグインBox統一化計画 - デモファイル3種: プラグイン動作確認用 ## 技術的詳細 - BID-FFI (Box ID Foreign Function Interface) 活用 - 既存のプラグインシステムでJIT/AOT統一可能 - スタティックリンクでオーバーヘッド解消 - "Everything is Box → Everything is Plugin → Everything is Executable" ## テスト済み - array_plugin_demo.nyash: 基本動作確認 ✅ - array_plugin_set_demo.nyash: set操作確認 ✅ - map_plugin_ro_demo.nyash: RO操作確認 ✅ 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -32,6 +32,8 @@ pub trait IRBuilder {
|
||||
fn emit_host_call(&mut self, _symbol: &str, _argc: usize, _has_ret: bool) { }
|
||||
/// Typed host-call emission: params kinds and return type hint (f64 when true)
|
||||
fn emit_host_call_typed(&mut self, _symbol: &str, _params: &[ParamKind], _has_ret: bool, _ret_is_f64: bool) { }
|
||||
/// Phase 10.2: plugin invoke emission (symbolic; type_id/method_id based)
|
||||
fn emit_plugin_invoke(&mut self, _type_id: u32, _method_id: u32, _argc: usize, _has_ret: bool) { }
|
||||
// ==== Phase 10.7 (control-flow wiring, default no-op) ====
|
||||
/// Optional: prepare N basic blocks and return their handles (0..N-1)
|
||||
fn prepare_blocks(&mut self, _count: usize) { }
|
||||
@ -98,6 +100,7 @@ impl IRBuilder for NoopBuilder {
|
||||
fn emit_branch(&mut self) { self.branches += 1; }
|
||||
fn emit_return(&mut self) { self.rets += 1; }
|
||||
fn emit_host_call_typed(&mut self, _symbol: &str, _params: &[ParamKind], has_ret: bool, _ret_is_f64: bool) { if has_ret { self.consts += 1; } }
|
||||
fn emit_plugin_invoke(&mut self, _type_id: u32, _method_id: u32, _argc: usize, has_ret: bool) { if has_ret { self.consts += 1; } }
|
||||
fn ensure_local_i64(&mut self, _index: usize) { /* no-op */ }
|
||||
fn store_local_i64(&mut self, _index: usize) { self.consts += 1; }
|
||||
fn load_local_i64(&mut self, _index: usize) { self.consts += 1; }
|
||||
|
||||
Reference in New Issue
Block a user