phase: 20.49 COMPLETE; 20.50 Flow+String minimal reps; 20.51 selfhost v0/v1 minimal (Option A/B); hv1-inline binop/unop/copy; docs + run_all + CURRENT_TASK -> 21.0

This commit is contained in:
nyash-codex
2025-11-06 15:41:52 +09:00
parent 2dc370223d
commit 77d4fd72b3
1658 changed files with 6288 additions and 2612 deletions

View File

@ -27,7 +27,7 @@ nyash-macos (1.8MB) - 署名付き
### **2. 開発者向け配布**
```bash
# LLVM IRの中立性を活用
nyashc --emit-bitcode program.nyash
nyashc --emit-bitcode program.hako
# → program.bc (プラットフォーム中立)
# 各自のマシンで最適化コンパイル

View File

@ -9,7 +9,7 @@ LLVM IRはプラットフォーム中立。だから**1回のIR生成から同
```rust
// 革命的ワンパス・マルチターゲット生成
nyashc --targets linux,windows,macos program.nyash
nyashc --targets linux,windows,macos program.hako
// 出力(同時生成!)
dist/x86_64-unknown-linux-musl/nyash # Linux版

View File

@ -23,7 +23,7 @@
#### **即効性のある解決策Week 1-3**
```bash
# Linux + Windows同時生成
nyashc --targets linux,windows-gnu program.nyash
nyashc --targets linux,windows-gnu program.hako
# 出力
dist/linux/nyash # Linux版musl静的

View File

@ -14,7 +14,7 @@ Phase 9.78 LLVM PoCの第一歩として、inkwellクレートを導入し、最
以下のNyashプログラムがLLVM経由で実行され、正しい終了コードを返すこと
```nyash
// test_return_42.nyash
// test_return_42.hako
static box Main {
main() {
return 42
@ -24,7 +24,7 @@ static box Main {
期待される動作:
```bash
$ cargo run --features llvm -- --backend llvm test_return_42.nyash
$ cargo run --features llvm -- --backend llvm test_return_42.hako
$ echo $?
42
```

View File

@ -29,7 +29,7 @@ Phase 9.78 LLVM PoCの開始です最初のステップとして、inkwellク
## 🎯 成功条件
```nyash
// test_return_42.nyash
// test_return_42.hako
static box Main {
main() {
return 42
@ -68,7 +68,7 @@ static box Main {
## ✅ 完了条件
- [ ] inkwellがビルドできる
- [ ] test_return_42.nyashがコンパイルできる
- [ ] test_return_42.hakoがコンパイルできる
- [ ] 実行ファイルが終了コード42を返す
- [ ] 基本的なテストがパスする

View File

@ -52,7 +52,7 @@ cargo build --features llvm
### 4. **テストプログラム作成**5分
```bash
# テスト用Nyashファイル
cat > test_return_42.nyash << 'EOF'
cat > test_return_42.hako << 'EOF'
static box Main {
main() {
return 42

View File

@ -13,7 +13,7 @@ Phase 9で実装されたWASM/AOTとHTTPサーバー機能に重大な制約が
### 1. **WASM/AOT コンパイルエラー(最重要)**
```bash
# 現象
$ ./target/release/nyash --compile-wasm test_simple_loop.nyash
$ ./target/release/nyash --compile-wasm test_simple_loop.hako
❌ WASM compilation error: Unsupported instruction: Jump { target: BasicBlockId(1) }
```
@ -146,7 +146,7 @@ pub fn stop(&self) -> Box<dyn NyashBox> {
**新規テストファイル**:
1. `test_wasm_loop.nyash`
1. `test_wasm_loop.hako`
```nyash
// WASMループテスト
local sum, i
@ -159,7 +159,7 @@ loop (i < 10) {
print("Sum: " + sum) // Expected: 45
```
2. `test_http_server_real.nyash`
2. `test_http_server_real.hako`
```nyash
// 実用HTTPサーバーテスト
static box Main {
@ -193,7 +193,7 @@ static box Main {
1. **WASM/AOT成功**
```bash
$ ./target/release/nyash --compile-wasm test_wasm_loop.nyash
$ ./target/release/nyash --compile-wasm test_wasm_loop.hako
✅ WASM compilation completed successfully!
$ ./target/release/nyash --benchmark --iterations 100
@ -202,7 +202,7 @@ static box Main {
2. **HTTPサーバー実動作**
```bash
$ ./target/release/nyash test_http_server_real.nyash &
$ ./target/release/nyash test_http_server_real.hako &
Server started on http://0.0.0.0:8080
$ curl http://localhost:8080/

View File

@ -6,7 +6,7 @@ AOT実装完了後の複雑アプリケーション検証。並行処理・メ
## 🎯 実装目標
```bash
# Phase 9完了後の目標
nyash --compile-native http_server.nyash -o http_server.exe # AOTサーバー生成
nyash --compile-native http_server.hako -o http_server.exe # AOTサーバー生成
./http_server.exe --port 8080 # 高性能HTTPサーバー起動
curl http://localhost:8080/api/status # 実用API動作確認

View File

@ -149,7 +149,7 @@ impl Clone for SocketBox {
#### 4-1: 状態保持テスト
```nyash
// tests/socket_box_state_persistence.nyash
// tests/socket_box_state_persistence.hako
// 🎯 最重要テスト: 状態保持の確認
static box SocketBoxStateTest {
@ -213,7 +213,7 @@ static box SocketBoxStateTest {
#### 4-2: 機能テスト
```nyash
// tests/socket_box_functionality.nyash
// tests/socket_box_functionality.hako
// 機能テストbind, toString, 基本API
static box SocketBoxFunctionalityTest {
@ -258,7 +258,7 @@ static box SocketBoxFunctionalityTest {
#### 4-3: エッジケーステスト
```nyash
// tests/socket_box_edge_cases.nyash
// tests/socket_box_edge_cases.hako
static box SocketBoxEdgeCaseTest {
init { console }
@ -294,19 +294,19 @@ static box SocketBoxEdgeCaseTest {
cargo build --release
# 状態保持テスト(最重要)
./target/release/nyash tests/socket_box_state_persistence.nyash
./target/release/nyash tests/socket_box_state_persistence.hako
# 機能テスト
./target/release/nyash tests/socket_box_functionality.nyash
./target/release/nyash tests/socket_box_functionality.hako
# エッジケーステスト
./target/release/nyash tests/socket_box_edge_cases.nyash
./target/release/nyash tests/socket_box_edge_cases.hako
```
#### 5-2: HTTPServerBox互換性確認
```bash
# HTTPServerBoxも正常動作するかチェック
./target/release/nyash tests/test_http_server_simple.nyash
./target/release/nyash tests/test_http_server_simple.hako
```
## 📚 参照ドキュメント

View File

@ -262,10 +262,10 @@ loop(100) {
#### 4-2: 全体統合テスト
```bash
# 全Box型の基本動作確認
./target/release/nyash tests/all_boxes_basic_test.nyash
./target/release/nyash tests/all_boxes_basic_test.hako
# 回帰テストスイート
./target/release/nyash tests/regression_test_suite.nyash
./target/release/nyash tests/regression_test_suite.hako
```
## 🤖 Copilot協力期待
@ -351,7 +351,7 @@ impl Clone for AnyBox {
grep -r "Arc<Mutex<" src/boxes/ | wc -l # → 0
# 全Box型統合テスト
./target/release/nyash tests/phase_9_75_complete_validation.nyash
./target/release/nyash tests/phase_9_75_complete_validation.hako
# → 全テスト成功
```

View File

@ -184,7 +184,7 @@ Arc<Mutex<T>> → RwLock<T>
### Phase 9.75-C統合テスト
```nyash
// tests/phase975c_final_validation.nyash
// tests/phase975c_final_validation.hako
static box Main {
main() {
// HTTPServerBox状態保持テスト
@ -210,7 +210,7 @@ static box Main {
### 負荷テスト
```nyash
// tests/phase975c_stress_test.nyash
// tests/phase975c_stress_test.hako
// 大量のBox作成・状態変更・並行アクセステスト
```

View File

@ -6,8 +6,8 @@ wasmtime compileによるAOT実行ファイル生成で確実なユーザー価
## 🎯 実装目標
```bash
# 目標実装
nyash --compile-native app.nyash -o app.exe # AOT実行ファイル生成
nyash --aot app.nyash # 短縮形
nyash --compile-native app.hako -o app.exe # AOT実行ファイル生成
nyash --aot app.hako # 短縮形
./app.exe # 起動高速化JIT起動コスト除去
# 内部実装
@ -125,7 +125,7 @@ fn main() {
## ✅ Acceptance Criteria
### 機能要件
- [ ] `nyash --compile-native app.nyash -o app.exe` 動作
- [ ] `nyash --compile-native app.hako -o app.exe` 動作
- [ ] 生成実行ファイルが単独で動作依存関係なし
- [ ] 既存Nyashプログラムが100%互換で高速実行

View File

@ -169,11 +169,11 @@ Finished `release` profile [optimized] target(s) in X.XXs
### ✅ 検証: DebugBox機能確認
```bash
# DebugBox基本機能テスト
$ ./target/release/nyash test_debug_basic.nyash
$ ./target/release/nyash test_debug_basic.hako
✅ DebugBoxがRwLockで動作
# 追跡機能テスト
$ ./target/release/nyash test_debug_tracking.nyash
$ ./target/release/nyash test_debug_tracking.hako
✅ メモリ追跡・ブレークポイント機能正常
```

View File

@ -92,15 +92,15 @@ Finished `release` profile [optimized] target(s) in X.XXs
### ✅ Verification: All Box Types Functional
```bash
# Basic functionality test
$ ./target/release/nyash local_tests/test_basic_box_operations.nyash
$ ./target/release/nyash local_tests/test_basic_box_operations.hako
✅ All Box operations successful
# HTTP Server test (critical for Phase 9.5)
$ ./target/release/nyash local_tests/test_http_server_basic.nyash
$ ./target/release/nyash local_tests/test_http_server_basic.hako
✅ HTTPServerBox functioning with RwLock
# P2P test (critical for future phases)
$ ./target/release/nyash local_tests/test_p2p_basic.nyash
$ ./target/release/nyash local_tests/test_p2p_basic.hako
✅ P2PBox functioning with RwLock
```

View File

@ -122,15 +122,15 @@ Finished `release` profile [optimized] target(s) in X.XXs
### ✅ 検証: 全Box型の機能確認
```bash
# 基本機能テスト
$ ./target/release/nyash local_tests/test_basic_box_operations.nyash
$ ./target/release/nyash local_tests/test_basic_box_operations.hako
✅ 全Box操作成功
# HTTPサーバーテスト (Phase 9.5にとって重要)
$ ./target/release/nyash local_tests/test_http_server_basic.nyash
$ ./target/release/nyash local_tests/test_http_server_basic.hako
✅ HTTPServerBoxがRwLockで動作
# P2Pテスト (将来のPhaseにとって重要)
$ ./target/release/nyash local_tests/test_p2p_basic.nyash
$ ./target/release/nyash local_tests/test_p2p_basic.hako
✅ P2PBoxがRwLockで動作
```

View File

@ -229,7 +229,7 @@ fn test_share_box_vs_clone_box_semantics() {
#### **B7: テスト実行**
```bash
cargo test array_state_sharing_test
./target/debug/nyash tests/array_debug.nyash
./target/debug/nyash tests/array_debug.hako
```
**✅ Phase B 完了条件**: ArrayBox状態保持テストが通過
@ -299,13 +299,13 @@ WASMの独自メモリ管理での影響確認
#### **D3: バックエンド別テスト**
```bash
# インタープリター
./target/debug/nyash tests/array_debug.nyash
./target/debug/nyash tests/array_debug.hako
# VM
./target/release/nyash --backend vm tests/array_debug.nyash
./target/release/nyash --backend vm tests/array_debug.hako
# WASM
./target/release/nyash --backend wasm tests/array_debug.nyash
./target/release/nyash --backend wasm tests/array_debug.hako
```
**✅ Phase D 完了条件**: 3バックエンド全てで一貫した動作
@ -325,8 +325,8 @@ WASMの独自メモリ管理での影響確認
cargo test
# 実用アプリテスト
./target/release/nyash app_dice_rpg.nyash
./target/release/nyash app_statistics.nyash
./target/release/nyash app_dice_rpg.hako
./target/release/nyash app_statistics.hako
# 性能ベンチマーク
./target/release/nyash --benchmark --iterations 100

View File

@ -24,7 +24,7 @@ math.sin(3.14) # 探索可能性維持
### 1. namespace構文
```nyash
# ファイルnyashstd.nyash
# ファイルnyashstd.hako
namespace nyashstd {
static box string {
static upper(str) {
@ -92,11 +92,11 @@ nyashstd.math.sin(3.14)
### C. ファイル間依存関係システム
```nyash
# ファイル: main.nyash
using nyashstd # ← nyashstd.nyash の読み込みが必要
# ファイル: main.hako
using nyashstd # ← nyashstd.hako の読み込みが必要
string.upper("hello")
# ファイル: nyashstd.nyash
# ファイル: nyashstd.hako
namespace nyashstd { ... }
```
@ -170,7 +170,7 @@ impl DependencyResolver {
### 1. 基本動作テスト
```nyash
# test_namespace_basic.nyash
# test_namespace_basic.hako
namespace test_ns {
static box example {
static hello() {
@ -185,7 +185,7 @@ assert(result == "Hello from namespace!")
### 2. using文テスト
```nyash
# test_using_basic.nyash
# test_using_basic.hako
using nyashstd
local upper = string.upper("hello")
@ -197,7 +197,7 @@ assert(result == 0)
### 3. 名前衝突テスト
```nyash
# test_name_collision.nyash
# test_name_collision.hako
using nyashstd
# ❌ これはエラーになるべき
@ -209,11 +209,11 @@ static box string {
### 4. 依存関係テスト
```nyash
# File: dependency_test_main.nyash
# File: dependency_test_main.hako
using dependency_test_lib
local result = helper.process("data")
# File: dependency_test_lib.nyash
# File: dependency_test_lib.hako
namespace dependency_test_lib {
static box helper {
static process(data) { return "processed: " + data }
@ -223,11 +223,11 @@ namespace dependency_test_lib {
### 5. 循環依存エラーテスト
```nyash
# File: circular_a.nyash
# File: circular_a.hako
using circular_b
# ...
# File: circular_b.nyash
# File: circular_b.hako
using circular_a # ← Error: Circular dependency detected
# ...
```

View File

@ -140,13 +140,13 @@ impl DynamicCallOptimizer {
### --dynamic-all フラグ
```bash
# 通常起動(基本型は静的)
./nyash program.nyash
./nyash program.hako
# 完全動的モード(実験)
./nyash --dynamic-all program.nyash
./nyash --dynamic-all program.hako
# プロファイリングモード
./nyash --dynamic-all --profile program.nyash
./nyash --dynamic-all --profile program.hako
```
### プラグイン統計
@ -173,7 +173,7 @@ Method Call Overhead:
### ホットリロード
```rust
// 開発中にプラグインを再読み込み
./nyash --watch-plugins program.nyash
./nyash --watch-plugins program.hako
```
### WASM プラグイン
@ -185,7 +185,7 @@ registry.load_wasm_plugin("custom-box.wasm")?;
### 分散プラグイン
```rust
// ネットワーク経由でプラグインロード(危険!)
registry.load_remote_plugin("https://plugins.nyash.dev/crypto-box")?;
registry.load_remote_plugin("https://plugins.hako.dev/crypto-box")?;
```
## ⚠️ 既知の課題

View File

@ -579,7 +579,7 @@ pub extern "C" fn nyash_file_open(
### 統合テストDay 12
```nyash
// test_bid_integration.nyash
// test_bid_integration.hako
using nyashstd
// BIDプラグインのロード

View File

@ -101,7 +101,7 @@ fn generate_to_string_call(&mut self, box_call: &BoxCall) -> Result<String> {
**テストケース**:
```nyash
// test_boxcall_basic.nyash
// test_boxcall_basic.hako
local num = 42
local str = num.toString()
print(str)
@ -127,7 +127,7 @@ wasmtime --version
cargo tree | grep wasmtime
# 実行テスト
./target/release/nyash --aot test_simple.nyash
./target/release/nyash --aot test_simple.hako
wasmtime --allow-precompiled test_simple.cwasm
```
@ -177,11 +177,11 @@ fn wat_to_wasm(&self, wat_source: &str) -> Result<Vec<u8>> {
**テストスイート**:
```bash
# 基本機能テスト
./target/release/nyash --compile-wasm test_boxcall.nyash
./target/release/nyash --compile-wasm test_basic_io.nyash
./target/release/nyash --compile-wasm test_boxcall.hako
./target/release/nyash --compile-wasm test_basic_io.hako
# AOTテスト
./target/release/nyash --aot test_comprehensive.nyash
./target/release/nyash --aot test_comprehensive.hako
wasmtime test_comprehensive.cwasm
# 互換性テスト
@ -204,7 +204,7 @@ wasmtime test_comprehensive.cwasm
### 検証用プログラム
```nyash
// test_wasm_recovery.nyash - 復旧確認用
// test_wasm_recovery.hako - 復旧確認用
static box Main {
main() {
local console = new ConsoleBox()

View File

@ -8,14 +8,14 @@
### エラー内容
```bash
$ ./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.nyash
🌐 Nyash WASM Compiler - Processing file: local_tests/test_simple_wasm.nyash 🌐
$ ./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.hako
🌐 Nyash WASM Compiler - Processing file: local_tests/test_simple_wasm.hako 🌐
❌ Generated WASM is not valid UTF-8
```
### テストケース(最小再現)
```nyash
# local_tests/test_simple_wasm.nyash
# local_tests/test_simple_wasm.hako
local result = 42
```
@ -105,13 +105,13 @@ eprintln!("DEBUG: 変数の内容 = {:?}", variable);
```bash
# 1. 最小テストケースで確認
./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.nyash
./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.hako
# 2. デバッグ出力付きで実行
RUST_LOG=debug ./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.nyash 2>&1 | tee debug.log
RUST_LOG=debug ./target/debug/nyash --compile-wasm local_tests/test_simple_wasm.hako 2>&1 | tee debug.log
# 3. WAT出力のみテストもし可能なら
./target/debug/nyash --compile-wat local_tests/test_simple_wasm.nyash
./target/debug/nyash --compile-wat local_tests/test_simple_wasm.hako
```
## 🎯 成功基準

View File

@ -164,7 +164,7 @@ MirInstruction::BoxCall { dst, box_val, method, args, effects } => {
**1. FileBoxテストケース**
```nyash
// test_vm_filebox.nyash
// test_vm_filebox.hako
local file = new FileBox("test.txt")
file.write("Hello from VM!")
local content = file.read()

View File

@ -54,8 +54,8 @@ Owner: core-runtime
- 実用ミニ糖衣: IntentBoxの第2引数に MapBox/JSONBox を直接渡せるよう拡張。
- Docs: 新規リファレンス追加P2P/ 例追加
- docs/reference/boxes-system/p2p_box.md
- examples/p2p_self_ping.nyash
- examples/p2p_ping_pong.nyash
- examples/p2p_self_ping.hako
- examples/p2p_ping_pong.hako
Notes:
- 非WASM環境のTimerBoxはダミーのため、async出力の確実化はWASM側のガイドで扱う。ネイティブでは同期スモークself→self/二者)で安定確認。