f0608e9bb1
feat: Phase 2.4 レガシーアーカイブ整理完了(151MB削減)
...
## 🎉 完了項目
- ✅ plugin_box_legacy.rs削除(7.7KB、参照ゼロ確認済み)
- ✅ REMOVEDコメント整理(encode.rs簡潔化)
- ✅ venv削除(143MB節約、.gitignoreは既存)
- ✅ llvm_legacyスタブ化(8KB、compile_error!による安全化)
## 🏆 成果
- **リポジトリサイズ改善**: 151MB削減
- **コード整理**: レガシーコード安全にアーカイブ
- **プラグインファースト**: StrictPluginFirst継続動作
## ✅ 検証完了
- cargo build --release --features llvm (警告のみ、エラーなし)
- LLVMハーネス実行: print出力正常
- プラグイン動作: StringBox等正常動作
codex先生の戦略に従った安全な段階的削除を実行
Co-Authored-By: codex <noreply@anthropic.com >
2025-09-24 14:13:15 +09:00
adbb0201a9
chore(fmt): add legacy stubs and strip trailing whitespace to unblock cargo fmt
2025-09-17 07:43:07 +09:00
4f360e0fbb
fix: Replace static mut with Lazy for thread safety in FileBoxRegistry
...
- Eliminate static_mut_refs warnings by using once_cell::sync::Lazy
- Make FileMode enum public to fix private_interfaces warning
- Reduce warnings from 6 to 3
- Prepare for Rust 2024 edition compatibility
2025-08-21 12:14:33 +09:00
670615d1de
feat: WASMビルド完全対応+finiシステム修正 🎉
...
## WASMビルド対応
- TimerBox、AudioBox等の問題のあるBoxをWASM環境では条件付きコンパイルで除外
- WebBox (WebDisplayBox, WebConsoleBox, WebCanvasBox) にas_anyメソッド追加
- プラグイン関連コードに#[cfg]ガードを追加
- web-sysフィーチャーを追加(Performance、MouseEvent等)
- projects/nyash-wasmのビルドが完全に通るように!
## finiシステム修正
- フィールド差し替え時の自動fini削除(Nyashの明示的哲学に従う)
- スコープ離脱時のみfini実行(meは除外)
- ドキュメント更新で正しいfiniルールを明記
## その他
- CLAUDE.mdにWASMビルド方法を追記(wasm-pack build --target web)
- 開発サーバー起動方法を記載(python3 -m http.server 8010)
- cargo testで全テスト成功を確認
これでNyashがブラウザで動作可能に!🐱 ✨
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-20 07:33:18 +09:00
e8b1ccaeaf
feat: Complete v2 plugin system migration with compilation fixes
...
🎉 Phase 9.75g-1: v2プラグインシステム移行完成
### ✅ 修正完了項目
- bid/mod.rs: 古いregistryモジュールの無効化
- generic_plugin_box.rs: registry依存の削除、簡易clone実装
- objects.rs: 古いBIDレジストリ呼び出しを無効化、v2システム用コメント追加
- main.rs, runner.rs: import修正(nyash_rust::cli::CliConfigへ)
- lib.rs: CLI モジュール export追加
### 🚀 達成事項
- ✅ 全コンパイルエラー修正完了
- ✅ v2プラグインシステム正常起動確認
- ✅ nyash.toml読み込み・設定統合成功
- ✅ BoxFactoryRegistry + PluginLoaderV2連携実装
- ✅ test_filebox_v2.nyash テストファイル追加
### 📊 実行結果
```
🔌 v2 plugin system initialized from nyash.toml
✅ v2 plugin system fully configured
📦 Registering plugin provider for FileBox
```
### 🔧 次のステップ (Phase 9.75g-2)
- BoxFactoryRegistry統合: new FileBox() → v2プラグインBox生成
- TLV通信実装: 実際のプラグインメソッド呼び出し
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-19 05:36:01 +09:00
806aece8ad
refactor: Begin migration to nyash.toml v2 plugin system
...
- Rename legacy plugin files to *_legacy.rs for protection
- Comment out old plugin loader and Host VTable dependencies
- Add temporary stub for create_plugin_box during migration
- Fix doc comment placement in io_methods.rs
- Prepare for v2 plugin system with single FFI entry point
2025-08-19 05:05:21 +09:00
e1b148051b
feat: nyash.toml v2完全対応とinit関数オプション化
...
主な変更:
- nyash.toml v2形式(マルチBox型プラグイン)に完全対応
- plugin-testerをv2対応に全面更新
- Host VTable完全廃止でシンプル化
- init関数をオプション化(グローバル初期化用)
- FileBoxプラグインを新設計に移行(once_cell使用)
仕様更新:
- nyash_plugin_invoke(必須)とnyash_plugin_init(オプション)の2関数体制
- すべてのメタ情報はnyash.tomlから取得
- プラグインは自己完結でログ出力
テスト確認:
- plugin-testerでFileBoxの動作確認済み
- birth/finiライフサイクル正常動作
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-19 04:48:25 +09:00
5f6f946179
feat: 汎用プラグインBox生成システム実装とnyash.toml v2対応準備
...
- GenericPluginBoxを実装し、任意のプラグインBoxを動的に生成可能に
- FileBox決め打ちコードを削除(設計思想違反の解消)
- CURRENT_TASK.mdを更新し、nyash.toml v2対応の必要性を明確化
- 問題: プラグインテスターとNyash本体が古い単一Box型形式のまま
次のステップ:
1. nyash.tomlをv2形式(マルチBox型)に更新
2. プラグインテスターをv2対応に
3. Nyash本体のレジストリをv2対応に
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-19 03:48:44 +09:00
c6c3c8e2f9
fix(bid-ffi): Fix HostVtable lifetime issue causing segfault
...
🚨 Critical memory safety fix:
- HostVtable was created on stack and destroyed after init
- Plugin stored reference to destroyed memory → NULL pointer access
- Changed to static LazyLock storage for lifetime safety
✅ Results:
- Segfault completely eliminated
- Plugin logging now works properly
- Type info system confirmed working
- Full E2E FileBox plugin operation successful
🔧 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-18 14:10:41 +09:00
7fc3adef66
feat(phase-9.75g-0): Implement BID-FFI Day 6 - Dynamic method discovery system
...
- Enhanced plugin metadata API with find_method() and get_methods()
- Implemented generic plugin method calling system (execute_plugin_method_generic)
- Fixed TLV encoding: use Bytes tag for string data in write()
- Fixed read() method: provide default size argument when called without args
- Replaced hardcoded execute_plugin_file_method with dynamic system
- Full end-to-end test successful: FileBox plugin write/read working
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-18 12:23:58 +09:00
0441608db3
BID-FFI integration:\n- Add plugin-tester io subcommand and TLV helpers; E2E open/write/read/close\n- Implement FileBox plugin invoke (birth/open/read/write/close) with BID-1 two-pass\n- Add BID loader/registry/plugin_box modules; prefer plugin-backed FileBox in interpreter\n- Introduce PluginFileBox with minimal read/write/close dispatch\n- Update runner debug paths; add local simple tests\n- Docs: plugin-tester guide and FileBox Nyash↔BID mapping; CURRENT_TASK updated
2025-08-18 11:07:03 +09:00
939c621b47
feat(phase-9.75g-0): Implement BID-FFI Day 4 - FileBox plugin (50% complete)
...
- ✅ FileBox plugin design with open/read/write/close API
- ✅ FileBoxRegistry for handle management
- ✅ FileMode enum for file access modes
- ✅ FileBoxPlugin implementation with BidHandle integration
- ✅ Complete test suite for FileBox operations (1/1 passing)
- 🎯 Everything is Box philosophy applied to file operations!
Remaining tasks:
- ⏳ FileBox host integration (Nyash側からの呼び出し)
- ⏳ Plugin loading mechanism (動的ロード実装)
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 21:09:32 +09:00
ea6cc1fe9e
feat(phase-9.75g-0): Complete BID-FFI Day 3 - FutureBox integration
...
- Add FutureBox BID bridge implementation for async Box types
- Support FutureBox in box_to_bid_handle conversion
- Add comprehensive FutureBox BID round-trip test
- Update CURRENT_TASK.md to reflect Day 3 completion (100%)
Day 3 fully completed! All Box types (String/Integer/Future) now integrated with BID-FFI.
Everything is Box philosophy proven through unified handle management! 🎉
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 20:55:49 +09:00
a5ff3ecafe
feat(phase-9.75g-0): Implement BID-FFI Day 3 - Box type integration
...
- Implement BID Box Bridge interface for Nyash Box <-> BID Handle conversion
- Add StringBox BID bridge implementation with handle/TLV support
- Add IntegerBox BID bridge implementation with handle/TLV support
- Implement BoxRegistry for managing Box instances and handles
- Add comprehensive tests for StringBox/IntegerBox BID round-trip
- Extract helper functions for string/integer value extraction
Everything is Box philosophy shines through unified BID integration! 🎉
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 19:54:57 +09:00
ec99a97957
feat(phase-9.75g-0): Implement BID-FFI Day 2 - Metadata API and plugin lifecycle
...
BID-1 Implementation Progress (Day 2 Complete\! 🎉 ):
Metadata API Implementation:
- Add NyashHostVtable for host function integration
- Memory allocation/free functions
- FutureBox wake support
- Logging capability
- Implement plugin metadata structures
- NyashPluginInfo: type_id, type_name, methods
- NyashMethodInfo: method_id, method_name, signature_hash
- PluginMetadata: Rust-side holder with lifecycle state
Plugin API Definitions:
- Define C FFI function signatures
- nyash_plugin_abi(): Get ABI version
- nyash_plugin_init(): Initialize with host vtable
- nyash_plugin_invoke(): Unified method invocation
- nyash_plugin_shutdown(): Cleanup resources
- Implement PluginHandle for loaded plugin management
- Add two-call pattern support for dynamic result sizes
Test Coverage: 7/7 ✅
- bid::types::tests (2 tests)
- bid::tlv::tests (2 tests)
- bid::metadata::tests (2 tests)
- bid::plugin_api::tests (1 test)
Everything is Box philosophy progressing with practical FFI design\!
Next: Day 3 - Existing Box integration (StringBox/IntegerBox/FutureBox bridge)
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 19:01:16 +09:00
2a96c91a81
feat(phase-9.75g-0): Implement BID-FFI Day 1 - TLV encoding/decoding foundation
...
BID-1 Implementation Progress (Day 1 Complete\! 🎉 ):
- Add BID module structure (src/bid/)
- Implement BID-1 TLV (Type-Length-Value) format
- TlvEncoder: Encode primitives, strings, handles
- TlvDecoder: Decode with version checking
- Full test coverage for all types
- Define core types and error codes
- BidType enum with Handle design
- Standard error codes (NYB_SUCCESS, NYB_E_*)
- Platform-dependent pointer size (Usize)
- Fix unrelated Arc<dyn NyashBox> conversion error
Additional improvements:
- Add Rust build error handling guide to CLAUDE.md
- Error file output pattern
- 32-thread build rules
- Common error patterns and solutions
Tests passing: 4/4 ✅
- bid::types::tests (2 tests)
- bid::tlv::tests (2 tests)
Next: Day 2 - Metadata API implementation (init/abi/shutdown)
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 18:32:15 +09:00