Commit Graph

91 Commits

Author SHA1 Message Date
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
cc8553380c feat: Add multi-box plugin support (v2) with test implementation
- Extend plugin-tester to support multi-box plugins with v2 API
- Add nyash_plugin_get_box_count/get_box_info/get_type_id functions
- Create test multi-box plugin providing TestBoxA and TestBoxB
- Update plugin-system.md documentation for v2 format
- Add nyash.toml v2 specification for multi-box support
- Successfully tested multi-box plugin lifecycle and type resolution

This enables one plugin to provide multiple Box types, solving the
dependency issue where HTTPServerBox needs SocketBox.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 01:13:48 +09:00
9a1e44e5c8 Merge branch 'main' of github.com-moecharm:moe-charm/nyash 2025-08-18 23:42:56 +09:00
350670cd22 Merge pull request #119 from moe-charm/copilot/fix-118
Enhanced Plugin Migration Guide v2 with Comprehensive Implementation Details
2025-08-18 23:41:40 +09:00
840c1b85ef feat: Fix VM SSA loop execution with proper phi node handling
Fixed infinite loop issue in VM by addressing phi node caching problem.
The phi node was caching the initial value and returning it for all
subsequent iterations, preventing loop variable updates.

Changes:
- Created vm_phi.rs module to separate loop execution logic (similar to mir/loop_builder.rs)
- Disabled phi node caching to ensure correct value selection each iteration
- Added LoopExecutor to track block transitions and handle phi nodes properly
- Fixed VM to correctly track previous_block for phi input selection

The VM now correctly executes SSA-form loops with proper variable updates:
- Loop counter increments correctly
- Phi nodes select the right input based on control flow
- Test case now completes successfully (i=1,2,3,4)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 23:36:40 +09:00
901890521c Complete: Enhanced plugin migration guide v2 with comprehensive implementation details
Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
2025-08-18 12:40:26 +00:00
8f8781219e docs: Add improved plugin migration guide v2
- nyash.tomlの型定義システムを詳しく解説
- TLVエンコーディングとの関係を明確化
- FileBoxの実装例を使った具体的な説明
- HttpClientBoxの実装イメージを追加
- よくある間違いと成功の秘訣を記載

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 21:25:43 +09:00
5d1a140919 feat: Phase 9.75g-0 BID-FFI完了 + Phase 9.8準備
- BID-FFI基盤実装完了(プラグインシステム動作確認)
- Phase 8.6 VM性能改善完了(50.94倍高速化達成)
- Phase 9.78 LLVM PoC基盤完成
- Phase 9.8 BIDレジストリ準備(nyash.toml活用戦略)
- ビルドエラー修正、警告は後で対応

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 21:10:06 +09:00
012fc1930f feat: Extract BID converter from Copilot and prepare plugin migration
- Extract Copilot's BID converter code to src/bid-converter-copilot/ for future use
- Create comprehensive plugin migration request document for Copilot
- Target 13 built-in boxes for plugin conversion (HTTP, GUI, Audio, etc.)
- Preserve existing nyash.toml-based plugin system
- Reorganize docs/説明書/reference/ structure for better organization
2025-08-18 20:53:48 +09:00
d788bcbf79 docs: Update CURRENT_TASK.md with Phase 9.8 strategy shift to nyash.toml extension
- Discovered that nyash.toml already contains comprehensive type information
- Shifted strategy from new BID YAML files to extending existing nyash.toml
- Updated Phase 9.8 plan to integrate with Phase 9.9 permissions model
- Set goal: FileBox working on VM backend with permission controls
- Documented the revolutionary discovery that simplifies the entire approach

This change reflects the strategic decision to leverage existing infrastructure
rather than creating new file formats, making the system more maintainable.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 19:55:06 +09:00
d3ae04d772 [Phase 9.78] Implement LLVM Backend Foundation - Week 1 PoC with Mock Integration
Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
2025-08-18 09:27:51 +00:00
f4988985a7 docs: Phase 9.78 LLVM PoC - AI大会議結果とCopilot実装ガイド作成
- AI大会議(Gemini/Codex)でLLVM実装戦略を策定
- inkwellクレート使用、Box型はptr型で表現、ランタイム委譲戦略
- Week 1: Hello World(return 42)の実装から開始
- 3週間で基本動作確認、目標10倍以上の性能向上
- Copilot用の詳細な実装ガイドとIssueテンプレート作成

Phase 8.6 VM性能改善(50.94倍高速化)完了を受けて、
次なる性能革命としてLLVMバックエンド実装を開始!

🚀 Ready to make Nyash fly with LLVM!
2025-08-18 17:51:31 +09:00
bfb2d648d5 feat(phase-9.75g-0): Complete BID-FFI Plugin System with enhanced plugin-tester
🎊 Phase 9.75g-0 COMPLETE - Revolutionary Plugin System Achievement\!

 Major Completions:
- plugin-tester type validation: nyash.toml integration & method signature verification
- Duplicate method name detection: Enforces Nyash no-overloading policy
- Comprehensive developer guide: 200+ line technical documentation
- Memory safety: HostVtable lifetime issues resolved with LazyLock
- Type information system: External nyash.toml configuration eliminates hardcoded conversions

🚀 Revolutionary Impact:
Nyash now supports dynamic Box type extension via plugins:
```nyash
local file = new FileBox()        // Plugin-provided
local db = new PostgreSQLBox()    // Future: Plugin-provided
local gpu = new CudaBox()         // Future: Plugin-provided
```

📊 Technical Achievements:
- plugin-tester: 4 comprehensive validation modes (check/lifecycle/io/typecheck)
- BID-FFI Protocol: Production-ready with valgrind-verified memory safety
- Type conversion: Automatic string→bytes mapping via nyash.toml
- Method validation: Prevents overloading conflicts in plugin development

🎯 Next Priority: Phase 8.6 VM Performance Improvement
Current issue: VM is 0.9x slower than interpreter (regression\!)
Target: 2x+ speedup for practical VM execution

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 16:04:30 +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
16291630e2 docs: Update CURRENT_TASK.md to reflect Day 5 completion and Day 6 planning
##  Day 5 BID-FFI Complete Success
- Plugin method calling system fully implemented
- FileBox plugin write/read operations working end-to-end
- Test result: "READ=Hello from Nyash via plugin\!"  Success

## 🚨 Critical Design Issue Identified
Current implementation hardcodes method names (read/write/exists/close)
in execute_plugin_file_method(), violating BID-FFI dynamic principles.

## 🎯 Day 6 Action Plan
Focus: Dynamic method discovery from plugin metadata
- Replace hardcoded method dispatch with generic system
- Enable new plugin Box types without source code changes
- Achieve true BID-FFI dynamism with nyash.toml-only configuration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 11:46:11 +09:00
5caee18764 docs: Update CURRENT_TASK.md with BID-FFI integration test results
## Test Results Summary

###  Plugin System Foundation: Complete Success
- plugin-tester check: Full functionality verified (load/init/shutdown)
- plugin-tester io: File operations (write) working, read needs TLV fix
- Box name self-declaration working (FileBox ID:6, 6 methods)

###  Nyash Integration: Partial Success (Plugin Loading Confirmed)
- `🔌 BID plugin loaded: FileBox (instance_id=1)` ← Core success\!
- Parse and AST execution successful
- new FileBox(...) creation reached
- Segmentation fault in file operations (TLV encoding/decoding)

### 🎯 Codex Implementation Achievement (1 hour)
-  Complete plugin system foundation
-  Generic plugin-tester with diagnostic features
-  Nyash integration with plugin loading
- ⚠️ Remaining task: TLV encode/decode optimization

## Updated Task Status
- Nyash integration:  Implemented (codex), plugin loading confirmed
- PluginBox proxy: ⚠️ Implemented (codex), TLV refinement needed
- Next priority: TLV encode/decode optimization for read operations

This validates that the BID-FFI system foundation is working correctly,
with the main remaining work being TLV protocol optimization.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 11:12:15 +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
ea40437d4d docs: Update architecture documentation and add plugin-tester to CLAUDE.md
## Documentation Updates

### phase_9_75g_bid_integration_architecture.md
- Added detailed Phase 9.75g-0 implementation results
- Included FileBox plugin implementation details (293KB .so, 6 methods)
- Added plugin-tester diagnostic tool output examples
- Updated Phase 9.75g-1 implementation plan with concrete steps:
  - Step 4.1: TLV encode/decode (src/bid/tlv.rs)
  - Step 4.2: Plugin loader (plugin-tester migration)
  - Step 4.3: BoxFactoryRegistry (transparent switching)
  - Step 4.4: PluginBox proxy (NyashBox implementation)

### CLAUDE.md
- Added plugin-tester section to testing documentation
- Included build/run instructions and output examples
- Documented key features: Box name self-declaration, generic design
- Updated final timestamp to 2025-08-18 reflecting BID-FFI foundation completion

## Key Achievements Documented
-  Box name non-hardcoded design (plugins declare themselves)
-  Generic plugin-tester works with any plugin
-  birth/fini lifecycle management implementation
-  Memory ownership rules clarification

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 09:58:15 +09:00
03ecbd6bc2 docs: CURRENT_TASK.md更新 - BID-FFI基盤実装完了を反映
- Step 1-3完了を明記
  - FileBoxプラグイン実装済み(293KB .so)
  - nyash.toml設定ファイル作成済み
  - plugin-tester診断ツール完成

- 重要な設計原則の達成を記録
  - Box名非決め打ち(プラグインが宣言)
  - 汎用的設計
  - birth/finiライフサイクル実装

- Step 4(Nyashとの統合)の詳細計画を追加
  - src/bid/モジュール構成
  - 実装順序と各コンポーネントの役割

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 09:41:41 +09:00
f5e201037c docs: BID-FFI実装計画を段階的アプローチに更新
- Step 1: FileBoxプラグイン単体作成
- Step 2: nyash.toml設定ファイル作成
- Step 3: プラグインテスター/ローダー作成(診断機能付き)
- Step 4: Nyashとの統合

プラグイン開発者向けテストツールを独立して作成し、
成功部分を後でNyashに移植する戦略を採用

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 08:51:42 +09:00
cc2f599d7e docs: BID-FFIシステムにBoxライフサイクル管理を追加
- birth/finiメソッドによるBoxのライフサイクル管理を仕様化
- メモリ所有権ルールを明確化(プラグインが割り当てたメモリはプラグインが解放)
- PluginBoxのDropトレイトでfini()呼び出しを保証
- CURRENT_TASK.mdを更新(巻き戻し後の状態を反映)

次の実装計画:
1. FileBoxプラグイン単体作成
2. nyash.toml設定ファイル作成
3. プラグインローダー単体でロードテスト
4. Nyashとの統合

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 08:49:11 +09:00
bec0e9bc92 revert: 古いプラグインシステム実装前の状態に巻き戻し
- ソースコードをcommit 3f7d71fの状態に復元(古いプラグインシステム実装前)
- docsフォルダは最新の状態を維持(BID-FFI設計ドキュメント含む)
- nyashバイナリの基本動作確認済み
- BID-FFIシステムをクリーンに再実装する準備完了

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 08:34:19 +09:00
75868a5a96 feat(phase-9.75g-0): Implement BID-FFI Day 5 - FileBox plugin library and transparent switching (90% complete)
Day 5 achievements:
- Created independent FileBox plugin crate with C FFI exports
- Integrated plugin loading into Nyash interpreter startup
- Implemented transparent builtin/plugin Box switching via nyash.toml
- Successfully loaded plugin library (385KB .so) at runtime
- Confirmed PluginBox proxy creation for FileBox instances

Architecture changes:
- Added plugins/ directory with .gitignore for build artifacts
- Modified runner.rs to load plugins from nyash.toml on startup
- Updated objects.rs to use BoxFactoryRegistry for FileBox creation
- Fixed bid module visibility between lib.rs and main.rs

Remaining work (10%):
- Complete PluginBox proxy method implementations (toString, etc.)
- Test actual file operations through plugin interface
- Finalize error handling and edge cases

Build status: All tests passing, plugin loading confirmed
2025-08-18 00:33:01 +09:00
72b63546b0 feat(phase-9.75g-0): Add simple nyash.toml parser for plugin configuration
-  Simple TOML parser for [plugins] section
-  Maps Box names to plugin names (e.g., FileBox => filebox)
-  Handles comments and empty lines
-  Complete test coverage
- 🎯 Minimal implementation for transparent Box replacement!

Part of Day 4 FileBox plugin implementation (60% → 70%)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 22:05:47 +09:00
969f7e9db8 docs: Update CURRENT_TASK.md for Day 4 FileBox plugin progress (50%)
- Day 3 marked as 100% complete
- Day 4 FileBox plugin marked as 50% complete
- Updated timestamp to 22:00

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 21:18:29 +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
53f20464b6 docs: Update CURRENT_TASK.md to reflect Day 2 completion
- Mark metadata API implementation as complete
- Add implementation details:
  - HostVtable for host function integration
  - Plugin metadata structures (NyashPluginInfo, NyashMethodInfo)
  - C FFI function signatures
  - Plugin lifecycle management
- Note test results: 7/7 tests passing

Day 2 objectives achieved! Ready for Day 3 existing Box integration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 19:02:51 +09:00
f5ee08f375 docs: Update CURRENT_TASK.md for Day 2 start - Metadata API implementation
Day 2 objectives:
- Implement HostVtable for host function integration
- Create plugin metadata structures (NyashPluginInfo, NyashMethodInfo)
- Define C FFI function signatures
- Establish plugin lifecycle management

BID-FFI implementation continues with host-plugin integration layer.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 18:53:34 +09:00
0522938f97 docs: Update CURRENT_TASK.md to reflect Day 1 completion
- Mark BID-1 foundation implementation as complete
- Add implementation details (src/bid/ module, TLV, types, errors)
- Note test results: 4/4 tests passing

Day 1 objectives achieved! Ready for Day 2 metadata API.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 18:33:19 +09:00
2b738196ca feat(phase-9.75g-0): Adopt ChatGPT final BID-FFI design and update specifications
- Update ffi-abi-specification.md to BID-1 Enhanced Edition
  - Add efficient Handle design (type_id + instance_id)
  - Define BID-1 TLV unified format for arguments/results
  - Add Plugin API with NyashHostVtable and metadata support
  - Include complete FileBox plugin example in C
  - Standardize error codes (NYB_SUCCESS, NYB_E_*)
  - Support 8-byte alignment and platform-dependent usize

- Add phase_9_75g_0_chatgpt_enhanced_final.md as the final design
  - Incorporates all ChatGPT-5 recommendations
  - Confirms 1-week implementation feasibility
  - Aligns with Everything is Box philosophy

- Update CURRENT_TASK.md to reflect Day 1 progress
  - Mark specification finalization as complete
  - Ready to start actual implementation

Everything is Box philosophy meets practical FFI/ABI design\!

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 18:17:04 +09:00
75d09a89a8 feat(phase-9.75g-0): Start BID-FFI type-first implementation strategy
- Create comprehensive type definitions for all future features
- Adopt FFI ABI v0 compliance with platform-aware pointers (usize)
- Implement 8-byte alignment for cross-platform compatibility
- Design single entry point: nyash_plugin_invoke
- Target Linux x86-64 for initial implementation
- Use unimplemented!() for gradual feature addition

Key decisions from AI review:
- Pointer width: platform-dependent (not fixed 32-bit)
- Early addition of Option/Result types
- Clear ownership rules for strings/arrays
- Extensible BoxHeader with magic number

Phase 9.75g-0: Build it simple, make it work, then extend!
2025-08-17 17:31:46 +09:00
49d00f0a65 docs: Update CURRENT_TASK.md to reflect MIR 35→26 project completion
- Marked all phases as completed
- Added project statistics:
  - 9 instructions removed (25.7% reduction)
  - Completed in 1 day instead of 5 weeks
  - 95% success rate (RefNew display issue remains)
  - Code quality improved with unified architecture

This documents the successful completion of the MIR instruction reduction project.
2025-08-17 15:21:43 +09:00
2a762d94a1 docs(phase-5.4): Update documentation for MIR 26-instruction project
Phase 5.4 of MIR 35→26 reduction project:
- Create MIR 26-instruction specification document
- Update CURRENT_TASK.md with Phase 5 progress
- Update phase_8_5_mir_35_to_26_reduction.md with completion status
- Document amazing progress: 90% completion in 1 day vs 5 weeks estimate

Documentation updates:
- docs/説明書/reference/mir-26-specification.md: Complete specification
- docs/CURRENT_TASK.md: Phase 5-4 in progress
- docs/予定/native-plan/issues/phase_8_5_mir_35_to_26_reduction.md: Status updates

Next: Update test files to remove deprecated instructions
2025-08-17 14:21:49 +09:00
3df87fb1ce fix(phase-4.3c-3): Fix StringBox literal handling in MIR builder
Phase 4-3c-3 Complete: WASM host functions now correctly output string content

## Changes:
- Fixed MIR builder to handle StringBox with string literal arguments
- Special case for  to generate proper string constants
- Removed debug output after successful verification
- WASM now correctly outputs "Hello MIR!" instead of "StringBox"

## Test Results:
- MIR generation:  Generates  correctly
- WASM compilation:  String data correctly placed at offset 4096
- WASM execution:  Outputs "Hello MIR\!" as expected

## Technical Details:
- Modified build_new_expression() to detect StringBox with literal arguments
- Generates Const instruction with actual string content
- Host function reads StringBox memory layout correctly

This completes the WASM string output functionality for Phase 4.

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 13:49:35 +09:00
bb3f2e8032 feat: Complete Phase 3 of MIR 35→26 reduction - optimization pass migration
- Remove old instructions from VM/WASM backends (UnaryOp, Print, Load/Store, RefGet/RefSet)
- Add comprehensive MIR optimizer with Effect System based optimizations
- Implement dead code elimination, CSE, pure instruction reordering
- Add intrinsic function support in VM backend
- Update backends to use new BoxFieldLoad/Store and Call intrinsics

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 12:27:12 +09:00
2b2dcc5647 feat(phase-9.75f-1): Complete FileBox dynamic library implementation
- Implement C ABI plugin system with workspace configuration
- Create FileBox plugin with full read/write/exists/toString support
- Fix critical memory management issues (double free) with Arc
- Add comprehensive test suite for dynamic FileBox functionality
- Achieve 98% build time improvement for plugin (2.87s vs 2-3min)
- Maintain full backward compatibility with feature flags

FileBox now loads dynamically, drastically reducing build times while
maintaining all functionality. Next: Math/Time dynamic migration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 09:31:35 +09:00
349dba24b5 docs: Add Phase 9.75f Option C implementation plans
- Phase 9.75f-1: FileBox dynamic library (immediate)
- Phase 9.75f-2: Math/Time boxes dynamic (this week)
- Phase 9.75f-3: Core types experiment (future)
- Update CURRENT_TASK.md with Option C strategy
- Refine todo list for phased implementation
2025-08-17 04:06:42 +09:00
1493ad7e94 cleanup: Remove temporary file ExternCall test code
- Remove file static box from stdlib/mod.rs
- Remove file.read/write/exists ExternCall handling from MIR builder
- Delete test_file_ffi.nyash test file
- Clean build successful
2025-08-17 03:50:06 +09:00
d396c0ed8c feat(phase-9.75f): ビルトインBox動的ライブラリ分離アーキテクチャ設計
- Gemini先生のアドバイスに基づく実装計画策定
- C ABI + libloading による安定した動的ライブラリ実装
- 段階的移行戦略:インタープリターExternCall → プラグイン化
- FFI-ABI file実装(stdlib方式)完了
- MIRビルダーにfile.read/write/exists追加
- ビルド時間2分→15秒、バイナリ15MB→2MBを目標
- docs/予定/native-plan/issues/phase_9_75f_dynamic_library_architecture.md作成
- CURRENT_TASK.md更新

次のステップ:
- インタープリターでExternCall直接実行実装
- 元のFileBox実装を探して置き換え
- プラグインアーキテクチャ基盤構築
2025-08-17 03:40:00 +09:00
a8e77f6411 docs: WASM Canvas研究とFFI-ABI実装戦略の追加
- CURRENT_TASK.mdにWASM研究メモセクション追加
- MIR→WAT→WASM実行フローの確認
- Canvas実装の3つの選択肢を文書化
  - CanvasBox実装(推奨)
  - グローバルcanvasオブジェクト
  - 標準ライブラリ拡張
- FFI-ABI仕様に基づくFileBox実装戦略を検討
- 純粋FFI-ABI方式でのfile.read/write実装計画策定
2025-08-17 02:54:05 +09:00
aed9d02b0b docs: Update nyash_core_concepts.md with latest features
- Add static box method calls (Phase 9.75i)
- Update execution backend section with interpreter hybrid strategy
- Add new BuiltinBoxes: FloatBox, SocketBox, BufferBox
- Reflect interpreter's production value (not just for development)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 00:42:25 +09:00
95bbb50886 feat: Apply Copilot's WASM UTF-8 fix manually
- Change from compile_module() to compile_to_wat() to fix UTF-8 error
- WASM compilation now outputs WAT text format directly
- Successfully generates WAT file for simple test case
- Note: Debug build still has issues (separate bug)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 00:03:49 +09:00
939af77a59 docs: Update copilot_issues.txt with interpreter hybrid strategy
Major changes:
- Remove completed phases: 9.5, 9.6, 9.7, 9.75
- Update Phase 9.77 status (UTF-8 error investigation, Issue #110)
- Add interpreter hybrid strategy (Python-like practicality)
- Update Phase 10 with async/await native implementation
- Emphasize interpreter value for both development and production

Key insights:
- Interpreter is practical for production use (like Python)
- Best of both worlds: interpreter convenience + compiler performance
- Hybrid approach: use interpreter for most tasks, AOT for performance-critical

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-16 21:47:14 +09:00
cde961defc feat(phase-9.77): Implement BoxCall instructions and fix wasmtime version
Phase 9.77 WASM Emergency Recovery Progress:
-  Task 1.1: Implement BoxCall instruction for toString(), print(), equals(), clone(), log()
-  Task 1.2: Update wasmtime 18.0 → 35.0.0 and add runtime imports
- 🔄 Task 1.3: Working on UTF-8 encoding error fix

Changes:
- Add generate_box_call() method in codegen.rs with 5 helper methods
- Update wasmtime dependency to 35.0.0 for AOT compatibility
- Add BoxCall runtime imports (box_to_string, box_print, box_equals, box_clone)
- Implement wat_to_wasm() with UTF-8 validation and debug output
- Update CURRENT_TASK.md with Copilot handoff notes

Current issue: 'Generated WASM is not valid UTF-8' error source unknown
Next: Copilot to investigate error origin and complete Task 1.3

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-16 21:21:51 +09:00
fa1a3ad644 feat(Phase 9.75j): Complete warning elimination - 106→0 warnings (100% improvement)
 Major code quality improvements:
• Fixed all unused variable and parameter warnings
• Added appropriate #[allow(dead_code)] annotations
• Renamed constants to follow Rust naming conventions
• Achieved completely warning-free codebase

🔧 Key changes:
• Parser expressions: Fixed arg_count and statement_count usage
• MIR modules: Added dead_code allows for future-use code
• Backend modules: Prefixed unused parameters with underscore
• Effect constants: Renamed 'read' to 'READ_ALIAS' for conventions

📊 Results:
• Before: 106 warnings (noisy build output)
• After: 0 warnings (clean build)
• Improvement: 100% warning reduction

🎯 This continues the bug fixing initiative "つづきのしゅうせいおねがいにゃ!"
from Phase 9.75i (birth() fixes, static methods, Copilot apps).

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-16 17:39:04 +09:00
38faaeaeeb docs: Add next refactoring plan to CURRENT_TASK.md
- List 5 target files for refactoring with expected reduction rates
- interpreter/expressions.rs (1457 lines) as highest priority
- mir/builder.rs, interpreter/objects.rs, ast.rs, box_trait.rs as next targets
- Document module split strategy for each file
2025-08-16 12:38:46 +09:00
acfd78fd18 docs: Update CURRENT_TASK.md with parser refactoring completion
- Document parser refactoring completion (1530→227 lines, 85% reduction)
- Add final module structure and achievements
- Mark all parser refactoring steps as completed
2025-08-16 12:36:13 +09:00