//! Nyashランタイムモジュール //! //! プラグインシステムとBox管理の中核 pub mod box_registry; pub mod core_box_ids; // Phase 87: CoreBoxId/CoreMethodId 型安全enum pub mod core_services; // Phase 91: CoreServices trait 定義 pub mod deprecations; pub mod gc; pub mod plugin_host; // Phase 91: PluginHost skeleton pub mod ring0; // Phase 88: Ring0Context - OS API 抽象化レイヤー pub mod gc_controller; pub mod gc_mode; pub mod gc_trace; pub mod global_hooks; pub mod leak_tracker; pub mod nyash_runtime; pub mod observe; // Lightweight observability flags (OOB etc.) pub mod plugin_config; pub mod plugin_ffi_common; pub mod plugin_loader_unified; pub mod plugin_loader_v2; pub mod provider_lock; pub mod provider_verify; pub mod scheduler; pub mod semantics; pub mod unified_registry; // Deprecation warnings with warn-once guards // pub mod plugin_box; // legacy - 古いPluginBox // pub mod plugin_loader; // legacy - Host VTable使用 pub mod extern_registry; // ExternCall (env.*) 登録・診断用レジストリ pub mod host_api; // C ABI: plugins -> host 逆呼び出しAPI(TLSでVMに橋渡し) pub mod host_handles; // C ABI(TLV) 向け HostHandle レジストリ(ユーザー/内蔵Box受け渡し) pub mod modules_registry; pub mod type_box_abi; // Phase 12: Nyash ABI (vtable) 雛形 pub mod type_meta; pub mod type_registry; // Phase 12: TypeId→TypeBox 解決(雛形) // env.modules minimal registry #[cfg(test)] mod tests; pub use box_registry::{get_global_registry, BoxFactoryRegistry, BoxProvider}; pub use core_box_ids::{CoreBoxCategory, CoreBoxId, CoreMethodId}; // Phase 87: 型安全enum pub use plugin_config::PluginConfig; pub use ring0::{get_global_ring0, init_global_ring0, Ring0Context}; // Phase 88: Ring0 公開 API pub use plugin_host::CoreInitError; // Phase 92: CoreServices 初期化エラー pub use plugin_loader_unified::{ get_global_plugin_host, init_global_plugin_host, MethodHandle, PluginBoxType, PluginHost, PluginLibraryHandle, }; pub use plugin_loader_v2::{get_global_loader_v2, init_global_loader_v2, PluginLoaderV2}; pub mod cache_versions; pub use gc::{BarrierKind, GcHooks}; pub use nyash_runtime::{NyashRuntime, NyashRuntimeBuilder}; pub use scheduler::{Scheduler, SingleThreadScheduler}; pub use unified_registry::{ get_global_unified_registry, init_global_unified_registry, register_user_defined_factory, }; // pub use plugin_box::PluginBox; // legacy // Use unified plugin loader (formerly v2) // pub use plugin_loader::{PluginLoaderV2 as PluginLoader, get_global_loader_v2 as get_global_loader}; // legacy /// Runtime 初期化(Phase 92: 接続ポイント決定) /// /// Phase 93 で実装予定の接続ポイント。 /// Phase 92 では skeleton のみ(todo!() を呼ぶ)。 #[allow(dead_code)] pub fn initialize_runtime(ring0: std::sync::Arc) -> Result { use crate::box_factory::UnifiedBoxRegistry; let registry = UnifiedBoxRegistry::new(); // Phase 92: 接続ポイント決定(実装は Phase 93) let plugin_host = plugin_host::PluginHost::with_core_from_registry(ring0, ®istry)?; Ok(plugin_host) }