Files
hakorune/docs/archive/cleanup/LEGACY_CODE_INVESTIGATION_REPORT.md
nyash-codex a7dbc15878 feat(joinir): Phase 240-EX - Pattern2 header condition ExprLowerer integration
Implementation:
- Add make_pattern2_scope_manager() helper for DRY
- Header conditions use ExprLowerer for supported patterns
- Legacy fallback for unsupported patterns
- Fail-Fast on supported patterns that fail

Tests:
- 4 new tests (all pass)
- test_expr_lowerer_supports_simple_header_condition_i_less_literal
- test_expr_lowerer_supports_header_condition_var_less_var
- test_expr_lowerer_header_condition_generates_expected_instructions
- test_pattern2_header_condition_via_exprlowerer

Also: Archive old phase documentation (34k lines removed)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 00:33:04 +09:00

15 KiB

Status: Historical

Hakorune Legacy Code Investigation Report

調査日: 2025-11-06 Phase: 20.46 (Phase 21.0完成後) 調査対象: 削除可能なレガシーコード、デッドコード、不要な機能


📊 Executive Summary

  • 総Rustファイル数: 618ファイル
  • #[allow(dead_code)]: 76箇所
  • レガシーコード推定: 約10,000行 (全体の約10%)
  • 削除推奨: 約5,000〜7,000行 (段階的削除)

🎯 カテゴリ別分析

1. ⚠️ Cranelift/JITバックエンド (高優先度・Safe削除)

状態: Phase 15でアーカイブ済み (archive/jit-cranelift/) 問題: 本体コードに参照が残存

影響範囲

  • 参照ファイル数: 27ファイル
  • feature gate: cranelift-jit (Cargo.tomlで既にコメントアウト済み)
  • 推定削除可能行数: 約1,500〜2,000行

主要ファイル

削除推奨 (Safe)
src/runner/modes/cranelift.rs          (46行) - Safe削除
src/runner/modes/aot.rs                (66行) - Safe削除 (cranelift feature依存)
src/runner/jit_direct.rs              (推定200行) - Safe削除

src/tests/core13_smoke_jit.rs         (約100行) - Safe削除
src/tests/core13_smoke_jit_map.rs     (約100行) - Safe削除
src/tests/identical_exec*.rs          (7ファイル) - feature gateで無効化済み
src/tests/policy_mutdeny.rs           (206行) - 一部cranelift依存
要検証 (Investigate)
src/backend/mod.rs:29-52              - cranelift再エクスポート (削除可能)
src/backend/aot/                      - AOTコンパイル機能 (WASM依存, 要確認)
src/runner/dispatch.rs                - cranelift分岐 (削除可能)
src/cli/args.rs                       - --backend cranelift オプション (削除可能)

推奨アクション

  1. Phase 1: feature gate確認・テストファイル削除 (Safe, 約500行)
  2. Phase 2: runner/modesのcranelift.rs削除 (Safe, 約200行)
  3. Phase 3: backend/mod.rs再エクスポート削除 (Safe, 約30行)
  4. Phase 4: 残存参照の完全削除 (要テスト, 約1,000行)

削除時影響: 無し (feature既に削除済み、ビルドエラーなし)


2. 🌐 WASMバックエンド (低優先度・要確認)

状態: Feature-gated (wasm-backend), 使用頻度不明

影響範囲

  • ディレクトリ: src/backend/wasm/, src/backend/wasm_v2/, src/backend/aot/
  • 総行数: 約3,170行
  • ディスクサイズ: 140KB
  • 参照ファイル数: 8ファイル

主要ファイル

src/backend/wasm/codegen.rs           (851行)
src/backend/wasm/memory.rs            (426行)
src/backend/wasm/runtime.rs           (369行)
src/backend/aot/executable.rs         (301行)
src/backend/wasm_v2/*                 (約250行)

判定: Risky - 現時点では保持推奨

理由:

  • CLAUDE.mdで「⚠️ WASM機能: レガシーインタープリター削除により一時無効」と記載
  • 将来的なWASM対応の可能性あり
  • Phase 21.0完成後の方針次第

推奨アクション:

  1. 使用状況調査 (WASMバックエンド実際に動作するか?)
  2. 動作しない場合: archive/wasm-backend/に移動
  3. 動作する場合: ドキュメント整備・テスト追加

3. 🗂️ BID Copilot Modules (中優先度・Safe削除)

状態: 未使用プロトタイプ (READMEで「現在は使用していない」と明記)

影響範囲

  • ディレクトリ: src/bid-codegen-from-copilot/, src/bid-converter-copilot/
  • 総行数: 約1,894行
  • ディスクサイズ: 124KB
  • 総ファイル数: 13ファイル

詳細

bid-codegen-from-copilot/ (88KB, 9ファイル)
schema.rs                              (約300行)
codegen/generator.rs                   (推定500行)
codegen/targets/wasm.rs                (詳細実装)
codegen/targets/{vm,llvm,python,ts}.rs (スタブ)

用途: 将来的なプラグイン多言語対応 判定: Safe削除 - archive/bid-copilot-prototype/に移動

bid-converter-copilot/ (36KB, 4ファイル)
tlv.rs                                 (TLVエンコード/デコード)
types.rs                               (BID型定義)
error.rs                               (BIDエラー型)

用途: 将来的なnyash2.toml実装時に活用予定 判定: Safe削除 - 汎用性高いが現在未使用、archive/bid-converter/に移動

推奨アクション

  1. Phase 1: archive/bid-copilot-prototype/にディレクトリごと移動
  2. Phase 2: src/lib.rsのコメント削除 (現在はモジュール宣言なし)
  3. 影響: 無し (既に未使用、インポート0)

削減見込み: 約1,900行


4. 📄 JSON v1 Bridge (中優先度・要確認)

状態: 使用状況不明

影響範囲

  • ファイル: src/runner/json_v1_bridge.rs (734行)
  • #[allow(dead_code)]: try_parse_v1_to_module() 関数

コード抜粋

#[allow(dead_code)]
pub fn try_parse_v1_to_module(json: &str) -> Result<Option<MirModule>, String> {
    // MIR JSON v1スキーマパース
    // 最小限のサポート: const, copy, ret
}

判定: Investigate - 使用確認が必要

調査項目:

  1. JSON v1を出力するコードは存在するか?
  2. テストで使用されているか?
  3. JSON v0 bridgeで代替可能か?

推奨アクション:

  1. Phase 1: 使用状況調査 (grep検索・テスト実行)
  2. Phase 2: 未使用ならarchive/json-v1-bridge.rsに移動
  3. Phase 3: 使用中なら機能追加 or ドキュメント整備

削減見込み: 約700行 (未使用の場合)


5. 🔧 #[allow(dead_code)] マーカー (高優先度・段階削除)

状態: 76箇所存在

主要カテゴリ

PyVM/JSON v0 Bridge (保持推奨)
src/runner/modes/common_util/pyvm.rs   - PyVMハーネス (セルフホスト専用)
src/runner/modes/common_util/exec.rs   - 実行ユーティリティ

判定: 保持 - Phase 15セルフホスティングで使用中

Legacy Expression/Type Check
src/mir/builder/exprs_legacy.rs:6     - build_expression_impl_legacy()
src/mir/verification/legacy.rs:6      - check_no_legacy_ops()
src/mir/builder/utils.rs               - 旧型チェック関数

判定: Safe削除 - Phase 15でCore-13/14/15に統一済み

Parser関連
src/parser/common.rs                   - unknown_span() 等
src/parser/sugar.rs                    - 旧シュガー構文
src/parser/declarations/*/validators.rs - 古いバリデーター

判定: Investigate - 実際の使用状況確認が必要

Box Factory Deprecated
src/box_factory/builtin_impls/*.rs     - 18箇所のDEPRECATEDマーカー

判定: Risky - プラグイン移行戦略次第 (後述)

推奨アクション

  1. Phase 1: 明確に未使用な関数削除 (約20箇所, Safe)
  2. Phase 2: Legacy MIR関連削除 (約10箇所, Safe)
  3. Phase 3: Parser関連の実使用確認・削除 (約15箇所, Investigate)
  4. Phase 4: 残存コードのリファクタリング (約30箇所, Risky)

削減見込み: 約500〜1,000行


6. ⚠️ Builtin Box DEPRECATED (低優先度・Phase戦略依存)

状態: プラグイン移行計画中

影響範囲

  • ディレクトリ: src/box_factory/builtin_impls/
  • 総行数: 約264行
  • DEPRECATEDマーカー: 18箇所

対象Box

console_box.rs    - ⚠️ nyash-console-plugin推奨 (既存)
string_box.rs     - ⚠️ nyash-string-plugin推奨
array_box.rs      - ⚠️ nyash-array-plugin推奨
bool_box.rs       - ⚠️ nyash-bool-plugin推奨 (未作成)
integer_box.rs    - ⚠️ nyash-integer-plugin推奨
map_box.rs        - ⚠️ nyash-map-plugin推奨

判定: Risky - Phase 15.5-B戦略次第

理由:

  • CLAUDE.mdで「2本柱体制: Core Box統一化完了」と記載
  • プラグイン移行は段階的実施中
  • 削除すると既存コードが大量に壊れる可能性

推奨アクション:

  1. 現状: DEPRECATEDマーカーは保持
  2. Phase 15.5-B完了後: プラグイン移行状況確認
  3. Phase 16: builtin→plugin完全移行計画策定
  4. Phase 17: builtinコード削除

削減見込み: 約200〜300行 (Phase 16以降)


7. 🧪 Legacy Test Files (中優先度・Safe削除)

状態: Feature-gatedで無効化済み

影響範囲

  • 総数: 7ファイル (cranelift依存)
  • 推定行数: 約1,000〜1,500行

主要ファイル

src/tests/core13_smoke_jit.rs          (#[cfg(feature = "cranelift-jit")])
src/tests/core13_smoke_jit_map.rs      (#[cfg(feature = "cranelift-jit")])
src/tests/identical_exec.rs            (一部cranelift依存)
src/tests/identical_exec_collections.rs
src/tests/identical_exec_instance.rs
src/tests/identical_exec_string.rs
src/tests/policy_mutdeny.rs            (206行, 一部cranelift)

判定: Safe削除 - feature削除済み

推奨アクション:

  1. Phase 1: cranelift feature完全依存ファイル削除 (5ファイル)
  2. Phase 2: identical_exec系の整理 (4ファイル, 一部保持?)
  3. Phase 3: policy_mutdeny.rsの分割 (cranelift部分のみ削除)

削減見込み: 約1,000行


8. 🐍 PyVM References (保持推奨)

状態: JSON v0 Bridge・セルフホスト専用

影響範囲

  • 参照数: 102箇所
  • 主要用途: Phase 15セルフホスティング

主要ファイル

src/runner/modes/pyvm.rs               - PyVM実行モード
src/runner/json_v0_bridge/             - JSON v0→MIR変換
src/llvm_py/pyvm/                      - Python VM実装

判定: 保持 - Phase 15現役使用中

理由:

  • CLAUDE.mdで「PyVM特化保持 (JSON v0ブリッジ・using処理のみ)」と明記
  • Phase 15.5-Bセルフホスティング実装で必須
  • 削除不可

推奨アクション: なし (現状維持)


📈 削減見込みサマリー

カテゴリ 推定行数 削除難易度 優先度 削減見込み
Cranelift/JIT 1,500〜2,000行 Safe 1,500行
WASM Backend 3,170行 Risky 0行 (保持)
BID Copilot 1,894行 Safe 1,900行
JSON v1 Bridge 734行 Investigate 700行?
#[allow(dead_code)] 500〜1,000行 Mixed 500行
Builtin Box 264行 Risky 0行 (Phase 16)
Legacy Tests 1,000行 Safe 1,000行
PyVM N/A N/A N/A 0行 (保持)
合計 約9,000行 - - 約5,600行

🎯 段階的削除計画

Phase A: 安全削除 (即実行可能)

推定削減: 約2,500行

  1. Cranelift JITファイル削除

    • src/runner/modes/cranelift.rs
    • src/runner/jit_direct.rs
    • src/tests/core13_smoke_jit*.rs (2ファイル)
  2. BID Copilotアーカイブ

    • src/bid-codegen-from-copilot/archive/
    • src/bid-converter-copilot/archive/
  3. 明確なDead Code削除

    • #[allow(dead_code)]で未使用確認済み関数 (約20箇所)

リスク: 無し (feature削除済み、未使用コード)

Phase B: 調査後削除 (1週間)

推定削減: 約1,500行

  1. JSON v1 Bridge調査

    • 使用状況確認 (grep + テスト実行)
    • 未使用なら削除 or アーカイブ
  2. Legacy Test Files整理

    • identical_exec*.rs 系統の再評価
    • cranelift依存部分の削除
  3. Parser関連Dead Code

    • 実使用確認後、未使用関数削除

リスク: 低 (調査後判断)

Phase C: 段階的削除 (Phase 16以降)

推定削減: 約1,600行

  1. WASM Backend評価

    • 動作確認 → 動作しないならアーカイブ
  2. Builtin Box移行

    • Phase 15.5-B完了後
    • プラグイン移行戦略確定後

リスク: 中 (Phase戦略依存)


🚨 削除時の注意点

1. Feature Gate確認

# 削除前に必ず確認
cargo build --release                    # デフォルト
cargo build --release --features llvm    # LLVM
cargo test                               # テスト通過確認

2. Archive戦略

削除ではなく アーカイブ を推奨:

archive/
├── jit-cranelift/          (既存)
├── bid-copilot-prototype/  (新規)
├── bid-converter/          (新規)
├── json-v1-bridge/         (新規)
└── wasm-backend/           (Phase C)

3. Git履歴保持

# ファイル削除時はgit mvを使用 (履歴保持)
git mv src/runner/modes/cranelift.rs archive/jit-cranelift/runner_modes_cranelift.rs

4. ドキュメント更新

  • CLAUDE.md
  • README.md
  • 削除理由を CHANGELOG.md に記録

📋 推奨実行順序

今すぐ実行 (Safe削除)

# 1. Cranelift JIT削除
rm src/runner/modes/cranelift.rs
rm src/runner/jit_direct.rs
rm src/tests/core13_smoke_jit*.rs

# 2. BID Copilotアーカイブ
mkdir -p archive/bid-copilot-prototype
git mv src/bid-codegen-from-copilot archive/bid-copilot-prototype/
git mv src/bid-converter-copilot archive/bid-copilot-prototype/

# 3. ビルド確認
cargo build --release
cargo test

1週間以内 (調査後削除)

  1. JSON v1 Bridge使用状況調査
  2. Legacy Test Files整理
  3. Parser Dead Code削除

Phase 16以降 (戦略確定後)

  1. WASM Backend評価・アーカイブ
  2. Builtin Box→Plugin完全移行
  3. 残存Legacy MIR削除

📊 Impact Analysis

削除後の効果

  • コードベース削減: 約5,600行 (約6%)
  • 保守性向上: レガシーコード除去で可読性向上
  • ビルド時間短縮: 未使用コード削除で微減
  • Phase 15集中: セルフホスティング開発に集中可能

リスク評価

  • Phase A (Safe削除): リスク無し
  • Phase B (調査後削除): 低リスク
  • Phase C (Phase 16以降): 中リスク (戦略依存)

🔍 補足調査項目

1. 追加調査が必要な項目

  • JSON v1 Bridgeの実使用確認
  • WASM Backendの動作確認
  • identical_exec系テストの保持必要性
  • Parser関連Dead Codeの実使用状況

2. 今回調査対象外

  • crates/ディレクトリ (別途調査推奨)
  • apps/ディレクトリ (スクリプト例・テストケース)
  • tools/ディレクトリ (ビルドスクリプト)
  • Pythonコード (src/llvm_py/)

📝 結論

即実行推奨

Cranelift/JIT削除 (1,500行, Safe) BID Copilotアーカイブ (1,900行, Safe) 明確なDead Code削除 (500行, Safe)

合計削減見込み: 約3,900行 (即実行可能)

段階的実施

🔍 JSON v1 Bridge調査 (700行?, 1週間) 🔍 Legacy Test Files整理 (1,000行, 1週間) WASM Backend評価 (3,170行, Phase C) Builtin Box移行 (264行, Phase 16)

追加削減見込み: 約1,700〜5,000行 (段階的)

総削減見込み

5,600〜8,900行 (6〜9%) の削減が可能


調査担当: Claude Code 次のアクション: Phase A (Safe削除) の実行