gui: add EguiBox TypeBox plugin (Windows egui stub)\n\n- plugins: add nyash-egui-plugin with TypeBox (resolve/invoke_id), Windows path for real window via eframe; stub on other OS\n- apps: add apps/egui-hello sample (open→uiLabel→run→close)\n- loader: improve Windows DLL resolution (target triples: x86_64/aarch64 msvc) and lib→dll mapping\n- tests: expand TypeBox vs TLV diff tests up to FileBox; all green\n- docs: update CURRENT_TASK checklist (diff tests completed)\n- config: nyash.toml add EguiBox (type_id=70), plugin registry and methods

This commit is contained in:
Moe Charm
2025-09-03 13:58:52 +09:00
parent f939ad0033
commit ceb22b6c18
33 changed files with 3891 additions and 84 deletions

View File

@ -1,4 +1,67 @@
# 🎯 CURRENT TASK - 2025-09-01 SnapshotAsync Task System / Phase 11.7 + Plugin-First
# 🎯 CURRENT TASK - 2025-09-03 SnapshotPhase 12.05: 旧C ABI→新C ABI(TypeBox) 変換 + 差分テスト拡充
目的: 既存C ABIプラグインを「統一TypeBox C ABI」に段階移行。LoaderのTypeBoxプローブ + `invoke_id` 優先経路を活用し、コアBoxArray/Map/String/Integer/Consoleから順に resolve/invoke_id を実装していく。
## 進捗(現状)
- Loader: TypeBoxシンボル自動プローブ + `invoke_id` 優先 組込み済み。
- MapBox: `getS/hasS` を TypeBoxで提供`nyash_typebox_MapBox`)。
- Nyash ABI基礎テスト: スロット解決と Array返却検証を追加`src/tests/nyash_abi_basic.rs`)。
## スコープ(段階移行 + 差分テスト)
1) 変換済みTypeBox対応済み
- MapBox: size/len/get/has/setstring/intキー対応
- ArrayBox: len/length/get/set/push
- StringBox: length/concat/toUtf8
- IntegerBox: get/set
- ConsoleBox: println/log
2) 差分テストの拡充TLV vs TypeBox 同値性)
- 追加対象(純粋/副作用少なめを優先)
- MathBox: sqrt/sin/cos/round
- EncodingBox: base64/hex encode/decode
- RegexBox: isMatch/findResult/Bool/文字列)
- PathBox: join/dirname/basename/isAbs/normalize
- TOMLBox: parse/get/toJsonResult.Ok/Err
- TimeBox: now許容差内で比較厳密比較回避
- CounterBox: singletonの基本挙動
- FileBox: read/write/closetmpdir使用で副作用隔離
3) Python/Net/Socket 系の差分テストは対象外(開発中のため今回スキップ)
## DoDDefinition of Done
1) 上記コアBoxMap/Array/String/Integer/Consoleに加え、Math/Encoding/Regex/Path/TOML/Time/Counter/File の差分テストが全てGreenVM
2) `NYASH_DISABLE_TYPEBOX=1` によるTLV経路との同値性が確認できる代表メソッド各1-2本ずつ
3) FileBox差分テストは一時ディレクトリで副作用隔離クリーンアップ含む
4) フォールバック互換未実装メソッドはTLV経路で動作を維持。
## タスク(小粒)
- [x] ArrayBox TypeBox: `nyash_typebox_ArrayBox`resolve/get,len,set,push → invoke_id
- [x] StringBox TypeBox: `nyash_typebox_StringBox`resolve/length,concat,toUtf8
- [x] IntegerBox TypeBox: `nyash_typebox_IntegerBox`resolve/get,set
- [x] ConsoleBox TypeBox: `nyash_typebox_ConsoleBox`resolve/log,println
- [x] MapBox TypeBox 拡張: size/len/get/has/set 追加getS/hasSを含む
- [x] 差分テスト: Map/Array/String/Integer/ConsoleVM
- [x] 差分テスト: MathBoxsqrt/sin/cos/round
- [x] 差分テスト: EncodingBoxbase64/hex encode/decode
- [x] 差分テスト: RegexBoxisMatch/find
- [x] 差分テスト: PathBoxjoin/dirname/basename/isAbs/normalize
- [x] 差分テスト: TOMLBoxparse/get/toJson
- [x] 差分テスト: TimeBoxnow: 許容差内)
- [x] 差分テスト: CounterBoxsingleton挙動
- [x] 差分テスト: FileBoxtmpdirで read/write/close
## 実行メモ
```bash
cargo build --release --features cranelift-jit
# 各プラグインのビルド
cargo build -p nyash-array-plugin -p nyash-string-plugin -p nyash-integer-plugin -p nyash-console-plugin -p nyash-map-plugin --release
# 差分テスト(狙い撃ち)
cargo test --lib typebox_tlv_diff -- --nocapture
# TLV 経路のみで確認したい場合は環境変数で切替
NYASH_DISABLE_TYPEBOX=1 cargo test --lib typebox_tlv_diff -- --nocapture
```
## 次のマイルストーン(参照)
- Phase 12 Final: Nyash ABI(TypeBox) で egui をサポートWindows GUI表示。本タスク完了後に着手Python/Netは除外
このスナップショットは Phase 11.7 の Async Task System 進捗を反映しました。詳細仕様/計画は下記を参照。
- SPEC: docs/development/roadmap/phases/phase-11.7_jit_complete/async_task_system/SPEC.md