Files
hakorune/docs/CONTRIBUTING-MERGE.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

34 lines
2.3 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.

# Merge Strategy — selfhostingdev × Cranelift branches
目的
- selfhostingdevVM/JIT 自己ホスト)と Cranelift 専用ブランチAOT/JITAOTを並行開発しつつ、衝突と複雑な解消作業を最小化する。
ブランチの役割
- `selfhosting-dev`: Ny→MIR→MIR-Interp→VM/JIT の安定化、ツール/スモーク、ドキュメント整備。
- `phase-15/self-host-aot-cranelift`(例): Cranelift backend の実装・検証。
- `develop`: 定期同期の受け皿。`main` はリリース用。
方針(設計)
- 境界の明確化: Cranelift 固有コード(例: `src/jit/*`, `src/jit/rt.rs` などは専用ブランチで集中的に変更。selfhostingdev は Runner/Interpreter/VM の公共 API に限定。
- Feature gate: 共有面に変更が必要な場合は `#[cfg(feature = "cranelift-jit")]` 等で分岐し、ABI/シグネチャ互換を保つ。
- ドキュメント分離: `CURRENT_TASK.md` はインデックス化し、詳細は `docs/phase-15/*` へトピックごとに分離(本運用により md の大規模衝突を回避)。
方針(運用)
- 同期リズム: selfhostingdev → develop へ週1回まとめPR。Cranelift 側も同周期で develop へリベース/マージ。
- 早期検知: 各PRで `rg` による衝突予兆チェック(ファイル/トークンベース)をテンプレに含める。
- rerere: `git config rerere.enabled true` を推奨し、同種の衝突解消を再利用。
- ラベル運用: `area:jit`, `area:vm`, `docs:phase-15`, `merge-risk:high` 等でレビュー優先度を明示。
ファイルオーナーシップ(推奨)
- Cranelift: `src/jit/**`, `src/jit/policy.rs`, `tools/*aot*`, `docs/phase-15/cranelift/**`
- Selfhost core: `src/interpreter/**`, `src/runner/**`, `dev/selfhosting/**`, `tools/smokes/v2/**`
- 共有/IR: `src/mir/**`, `src/parser/**` は変更時に両ブランチへ告知PR説明で影響範囲を明記
実務Tips
- マージ用テンプレPR description
- 目的 / 影響範囲 / 変更対象ファイル / 互換性 / リスクと回避策 / テスト項目
- 衝突抑止の小技
- md は章分割して別ファイルに参照化(本運用の通り)
- 大規模renameは単独PRで先行適用
- 共有インターフェイスは薄いアダプタで橋渡し(実装詳細は各ブランチ内)