🚀 feat: Phase 9.78b Step 1&2完了 - ChatGPT5による実装

ChatGPT5が実装したPhase 9.78b Step 1&2の統合

## 🎯 実装内容
1. Phase 9.78b Step 1: BoxDeclarationをcore::modelへ移動
   - src/core/mod.rs, model.rs 新規作成
   - BoxDeclarationを純粋データモデルとして分離

2. Phase 9.78b Step 2: NyashRuntime骨組み作成
   - src/runtime/nyash_runtime.rs 追加
   - 統一Box管理の基盤

3. ビルドエラー修正
   - Arc重複インポート修正
   - as_str() → as_ref() 変更
   - parent_name.to_string() 型変換
   - インポートパス調整

## 📊 ビルド結果
-  フルビルド成功 (47.34秒)
-  ユニットテスト: 145/145成功
-  統合テスト: 16/16成功
-  WASMビルド成功 (1.9MB)
-  MIRテスト: 1失敗 (ref_new命令)

## 🚀 次のステップ
- Phase 9.78b Step 3: BoxFactory dyn化
- Codexの設計に基づく段階的実装継続
This commit is contained in:
Moe Charm
2025-08-20 18:57:10 +09:00
parent 86b9f7719b
commit 41361a2f50
15 changed files with 571 additions and 95 deletions

4
src/core/mod.rs Normal file
View File

@ -0,0 +1,4 @@
//! Core model types shared across interpreter and VM
pub mod model;

29
src/core/model.rs Normal file
View File

@ -0,0 +1,29 @@
//! Core model definitions for Nyash
//!
//! This module contains pure data models that are shared between
//! the interpreter and the VM. Keep these types free of execution
//! strategy details so they can be reused across backends.
use std::collections::HashMap;
use crate::ast::ASTNode;
/// Declaration of a user-defined Box type (class) in Nyash
///
/// Pure model data used by both the interpreter and VM layers.
#[derive(Debug, Clone)]
pub struct BoxDeclaration {
pub name: String,
pub fields: Vec<String>,
pub methods: HashMap<String, ASTNode>,
pub constructors: HashMap<String, ASTNode>,
pub init_fields: Vec<String>,
pub weak_fields: Vec<String>,
pub is_interface: bool,
/// Supports multi-delegation: list of parent types
pub extends: Vec<String>,
pub implements: Vec<String>,
/// Generic type parameters
pub type_parameters: Vec<String>,
}