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

@ -38,17 +38,17 @@ WiringRust 側)
3) 成功後は通常のリンク手順NyRT とリンク)
Tools / CLI統合フロー
- crate 直結の EXE 出力: `NYASH_LLVM_COMPILER=crate NYASH_LLVM_EMIT=exe tools/build_llvm.sh apps/tests/ternary_basic.nyash -o app`
- crate 直結の EXE 出力: `NYASH_LLVM_COMPILER=crate NYASH_LLVM_EMIT=exe tools/build_llvm.sh apps/tests/ternary_basic.hako -o app`
- 環境変数 `NYASH_LLVM_NYRT` で NyRT の場所を、`NYASH_LLVM_LIBS` で追加フラグを指定できる。
- CLI から直接 EXE 出力(新規):
- `./target/release/nyash --emit-exe tmp/app --backend mir apps/tests/ternary_basic.nyash`
- `./target/release/nyash --emit-exe tmp/app --backend mir apps/tests/ternary_basic.hako`
- 追加オプション: `--emit-exe-nyrt <dir>` / `--emit-exe-libs "<flags>"`
ScopePhase 15
- 最小命令: Const/BinOp/Compare/Branch/Jump/ReturnPHI は LLVM 側で合成)
- 文字列: NyRT Shim`nyash.string.len_h`, `charCodeAt_h`, `concat_hh`, `eq_hh`)を declare → call
- NewBox/ExternCall/BoxCall: まずは固定シンボルby-id を優先(段階導入)
- 目標: `apps/selfhost/tools/dep_tree_min_string.nyash``.ll verify green → .o` 安定化
- 目標: `apps/selfhost/tools/dep_tree_min_string.hako``.ll verify green → .o` 安定化
Acceptance
- Harness ON/OFF で機能同値(戻り値/検証)。代表ケースで `.ll verify green``.o` 生成成功。

View File

@ -123,7 +123,7 @@ Verifier検証に関する追加事項方針
---
## 実測結果サマリー(初回プローブ)
出所: `local_tests/vm_stats_hello.json`, `local_tests/vm_stats_loop.json`, `simple_math.nyash`
出所: `local_tests/vm_stats_hello.json`, `local_tests/vm_stats_loop.json`, `simple_math.hako`
- ループ系139命令 / 0.158ms)トップ:
- Const: 25, BoxCall: 23, NewBox: 23, BinOp: 11, Branch: 11, Compare: 11, Jump: 11, Phi: 11, Safepoint: 11

View File

@ -204,9 +204,9 @@ FutureSet %future = %result // 結果設定
### **バックエンド互換性テスト**
```bash
# 全バックエンドMIR一致テスト
./target/release/nyash --dump-mir program.nyash > interpreter.mir
./target/release/nyash --backend vm --dump-mir program.nyash > vm.mir
./target/release/nyash --backend wasm --dump-mir program.nyash > wasm.mir
./target/release/nyash --dump-mir program.hako > interpreter.mir
./target/release/nyash --backend vm --dump-mir program.hako > vm.mir
./target/release/nyash --backend wasm --dump-mir program.hako > wasm.mir
diff interpreter.mir vm.mir && diff vm.mir wasm.mir
```

View File

@ -49,8 +49,8 @@ Policy & Invariants
Acceptance
- Parity on:
- `apps/tests/min_str_cat_loop/main.nyash`
- `apps/tests/esc_dirname_smoke.nyash`
- `apps/tests/min_str_cat_loop/main.hako`
- `apps/tests/esc_dirname_smoke.hako`
- Stage-2 new smokes (ternary nested, peek return)
- `tools/parity.sh --lhs pyvm --rhs llvmlite --show-diff <app>` → green

View File

@ -226,7 +226,7 @@ cd ../../tools/plugin-tester
### 3. Nyashで実行
```nyash
// test_http.nyash
// test_http.hako
local http = new HttpClientBox()
local response = http.get("https://api.example.com/data")
print(response)

View File

@ -144,7 +144,7 @@ cd ../../tools/plugin-tester
./target/release/plugin-tester ../../plugins/nyash-xxx-plugin/target/release/libnyash_xxx_plugin.so
# Nyashで実行テスト
./target/release/nyash test_xxx.nyash
./target/release/nyash test_xxx.hako
```
## 📝 特記事項
@ -346,7 +346,7 @@ cd ../../tools/plugin-tester
### 3. Nyashで実行
```nyash
// test_http.nyash
// test_http.hako
local http = new HttpClientBox()
local response = http.get("https://api.example.com/data")
print(response)

View File

@ -20,16 +20,16 @@ VMは命令カウントと実行時間を出力できます。
使い方CLIフラグ:
```bash
# 人間向け表示
nyash --backend vm --vm-stats program.nyash
nyash --backend vm --vm-stats program.hako
# JSON出力
nyash --backend vm --vm-stats --vm-stats-json program.nyash
nyash --backend vm --vm-stats --vm-stats-json program.hako
```
環境変数(直接指定):
```bash
NYASH_VM_STATS=1 ./target/debug/nyash --backend vm program.nyash
NYASH_VM_STATS=1 NYASH_VM_STATS_JSON=1 ./target/debug/nyash --backend vm program.nyash
NYASH_VM_STATS=1 ./target/debug/nyash --backend vm program.hako
NYASH_VM_STATS=1 NYASH_VM_STATS_JSON=1 ./target/debug/nyash --backend vm program.hako
# 代替: NYASH_VM_STATS_FORMAT=json
```
@ -47,9 +47,9 @@ NYASH_VM_STATS=1 NYASH_VM_STATS_JSON=1 ./target/debug/nyash --backend vm program
- `scope_tracker` がスコープ終了時に `fini()` を呼ぶ(メモリ安全)。
- 大きいボディ/多ヘッダー/タイムアウト
- 逐次拡張中。異常時の挙動は上記Result規約に従う。実行ログと `--vm-stats` を併用して診断。
- 反復タイムアウト: `local_tests/socket_repeated_timeouts.nyash``acceptTimeout/recvTimeout` の連続ケース確認
- 反復タイムアウト: `local_tests/socket_repeated_timeouts.hako``acceptTimeout/recvTimeout` の連続ケース確認
- BoxCallデバッグ: `NYASH_VM_DEBUG_BOXCALL=1` でBoxCallの受け手型・引数型・処理経路enter/fastpath/unified・結果型をstderr出力
- 例: `NYASH_VM_DEBUG_BOXCALL=1 ./target/release/nyash --backend vm local_tests/test_vm_array_getset.nyash`
- 例: `NYASH_VM_DEBUG_BOXCALL=1 ./target/release/nyash --backend vm local_tests/test_vm_array_getset.hako`
## 🔧 BoxCallの統一経路Phase 9.79b
@ -78,7 +78,7 @@ NYASH_VM_PIC_DEBUG=1 # PICヒットのしきい値通過時にログ
- SocketBoxVM
- 基本API: `bind/listen/accept/connect/read/write/close/isServer/isConnected`
- タイムアウト: `acceptTimeout(ms)` は接続なしで `void``recvTimeout(ms)` は空文字を返す
- 簡易E2E: `local_tests/socket_timeout_server.nyash``socket_timeout_client.nyash`
- 簡易E2E: `local_tests/socket_timeout_server.hako``socket_timeout_client.hako`
- Void 比較の扱いVM
- `Void` は値を持たないため、`Eq/Ne` のみ有効。`Void == Void` は真、それ以外の型との `==` は偽(`!=` は真)。
- 順序比較(`<, <=, >, >=`)は `TypeError`
@ -89,15 +89,15 @@ NYASH_VM_PIC_DEBUG=1 # PICヒットのしきい値通過時にログ
```bash
# 別ターミナルでサーバ起動
./target/release/nyash local_tests/http_server_statuses.nyash
./target/release/nyash local_tests/http_server_statuses.hako
# クライアント(別ターミナル)
tools/run_vm_stats.sh local_tests/vm_stats_http_ok.nyash vm_stats_ok.json
tools/run_vm_stats.sh local_tests/vm_stats_http_404.nyash vm_stats_404.json
tools/run_vm_stats.sh local_tests/vm_stats_http_500.nyash vm_stats_500.json
tools/run_vm_stats.sh local_tests/vm_stats_http_ok.hako vm_stats_ok.json
tools/run_vm_stats.sh local_tests/vm_stats_http_404.hako vm_stats_404.json
tools/run_vm_stats.sh local_tests/vm_stats_http_500.hako vm_stats_500.json
# 到達不能(サーバ不要)
tools/run_vm_stats.sh local_tests/vm_stats_http_err.nyash vm_stats_err.json
tools/run_vm_stats.sh local_tests/vm_stats_http_err.hako vm_stats_err.json
```
期待されるResultモデル