Files
hakorune/docs/how-to/smokes.md
Selfhosting Dev 9b9a91c859 feat: GC機能復活&VM整理&json_native調査完了
## 🎉 ChatGPT×Claude協働成果
-  **GC機能復活**: vm-legacy削除で失われたGC機能を新実装で復活
  - GCメトリクス追跡システム実装(alloc/collect/pause計測)
  - 3種類のGCモード対応(counting/mark_sweep/generational)
  - host_handles.rsでハンドル管理復活

-  **VM整理とエイリアス追加**: 混乱していた名前を整理
  - MirInterpreter = NyashVm = VM のエイリアス統一
  - vm-legacyとインタープリターの違いを明確化
  - 壊れていたvm.rsの互換性修復

-  **スモークテスト整理**: v2構造でプラグイン/コア分離
  - plugins/ディレクトリにプラグインテスト移動
  - gc_metrics.sh, gc_mode_off.sh, async_await.sh追加
  - _ensure_fixture.shでプラグイン事前ビルド確認

## 📊 json_native調査結果
- **現状**: 25%完成(配列/オブジェクトパース未実装)
- **将来性**: 並行処理でyyjson超えの可能性大
  - 100KB以上のJSONで2-10倍速の可能性
  - Nyash ABI実装後はゼロコピー最適化
- **判断**: 現時点では置換不可、将来の大きな足場

## 🔍 技術的発見
- vm-legacy = 完全なVM実装(GC付き)だった
- MirInterpreter = 現在のRust VM(712行、Arc使用)
- 200行簡易JSONは既に削除済み(存在しない)

ChatGPT爆速修復×Claude詳細調査の完璧な協働!

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 23:27:59 +09:00

38 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Smokes — HowTo前提→手順→検証
目的
- 代表スモークを素早く回して、回帰を検知する。
前提
- リリースビルド済み: `cargo build --release`
- LLVM を用いた AOT/ハーネス系は integration プロファイルで必要に応じて利用
手順v2 ランナー推奨)
1) クイック確認VM/動的プラグイン)
- 実行: `tools/smokes/v2/run.sh --profile quick`
- 代表的な言語機能・using の確認。冗長ログはフィルタ済み
2) プラグイン検証VM/動的)
- 実行: `tools/smokes/v2/run.sh --profile plugins`
- フィクスチャ .so は自動ビルド・配置を試行(無ければ SKIP
3) 統合確認LLVM/LlvmLite ハーネス含む)
- 実行: `tools/smokes/v2/run.sh --profile integration`
- 必要に応じて PHI-on/off の比較や AOT 代表ケースを実行
手動スモーク(例)
- Core (LLVM): `examples/llvm11_core_smoke.nyash`
- Async (LLVM only):
- `apps/tests/async-await-min/main.nyash`
- `apps/tests/async-spawn-instance/main.nyash`
- `apps/tests/async-await-timeout-fixed/main.nyash``NYASH_AWAIT_MAX_MS=100`
アーカイブ(非推奨)
- 旧ランナーJIT/Cranelift 時代)は削除または archive に移動済み。v2 ランナーのみを使用
便利フラグ
- `NYASH_LLVM_USE_HARNESS=1`: integration プロファイルで llvmlite ハーネスを使う
- `NYASH_MIR_NO_PHI=1`, `NYASH_VERIFY_ALLOW_NO_PHI=1`: レガシー PHI-offedge-copyモード
- `NYASH_USING_DYLIB_AUTOLOAD=1`: using kind="dylib" の自動ロードを有効化dev 向け・既定OFF
検証
- 0 で成功、非 0 で失敗CI 連携可)