Files
hakorune/docs/README.md
nyash-codex c85d67c92e feat(hako_check): Phase 153 - Dead code detection revival (JoinIR version)
Implement comprehensive dead code detection for hako_check with JoinIR
integration, following Phase 133/134/152 box-based modularity pattern.

## Key Achievements

1. **Comprehensive Inventory** (`phase153_hako_check_inventory.md`):
   - Documented current hako_check architecture (872 lines)
   - Analyzed existing HC011/HC012 rules
   - Confirmed JoinIR-only pipeline (Phase 124)
   - Identified Phase 153 opportunities

2. **DeadCodeAnalyzerBox** (`rule_dead_code.hako`):
   - Unified HC019 rule (570+ lines)
   - Method-level + box-level dead code detection
   - DFS reachability from entrypoints
   - Text-based analysis (no MIR JSON dependency for MVP)
   - Heuristic-based false positive reduction

3. **CLI Integration** (`cli.hako`):
   - Added `--dead-code` flag for comprehensive mode
   - Added `--rules dead_code` for selective execution
   - Compatible with --format (text/json-lsp/dot)

4. **Test Infrastructure**:
   - HC019_dead_code test directory (ng/ok/expected.json)
   - `hako_check_deadcode_smoke.sh` with 4 test cases

## Technical Details

- **Input**: Analysis IR (MapBox with methods/calls/boxes/entrypoints)
- **Output**: HC019 diagnostics
- **Algorithm**: Graph-based DFS reachability
- **Pattern**: Box-based modular architecture
- **No ENV vars**: CLI flags only

## Files Modified

- NEW: docs/development/current/main/phase153_hako_check_inventory.md
- NEW: tools/hako_check/rules/rule_dead_code.hako
- MOD: tools/hako_check/cli.hako
- NEW: tools/hako_check/tests/HC019_dead_code/
- NEW: tools/hako_check_deadcode_smoke.sh
- MOD: CURRENT_TASK.md

## Next Steps

- Phase 154+: MIR CFG integration for block-level detection
- Phase 160+: Integration with .hako JoinIR/MIR migration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 14:19:48 +09:00

143 lines
7.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.

# 📚 Nyash Documentation
## 🚀 はじめに(導線)
- 現在のタスクと進行状況: ../CURRENT_TASK.md
- コア概念の速習: reference/architecture/nyash_core_concepts.md
- 設計ブループリント(文字列/文字コード): development/design/blueprints/strings-utf8-byte.md
---
## 📂 ドキュメント構造(指針)
### 📖 [reference/](reference/) - 正式な技術仕様
- **language/** - 言語仕様構文、型システム、Box仕様
- **architecture/** - システムアーキテクチャMIR、VM、実行バックエンド
- **api/** - ビルトインBoxのAPI仕様
- **plugin-system/** - プラグインシステム、BID-FFI仕様
- 🆕🔥 **[TypeBox ABI統合 + セルフホスティング](../development/roadmap/phases/phase-12/)** - ABIすらBoxとして扱う革命的設計
- まずはこちら: `reference/boxes-system/plugin_lifecycle.md`PluginBoxV2のライフサイクル、singleton、nyash.tomlの要点
### 📚 [guides/](guides/) - 利用者向けガイド
- **getting-started.md** - はじめに(統一版)
- **tutorials/** - ステップバイステップのチュートリアル
- **examples/** - 実践的なサンプルコード
- **wasm-guide/** - WebAssemblyビルドガイド
### 🧩 [how-to/](how-to/) - 目的別ハウツー
- 手順重視の短いガイド(前提→コマンド→検証)
### 🔧 [development/](development/) - 開発者向け
- **current/** - 現在進行中のタスクCURRENT_TASK.md等
- **roadmap/** - 開発計画
- phases/ - Phase 812の詳細計画
- phase-12/ - 🆕🔥 TypeBox統合ABI + Nyash ABI C実装セルフホスティング実現
- native-plan/ - ネイティブビルド計画
- **proposals/** - RFC、新機能提案
### 🔌 Net PluginHTTP/TCP
- 使い方と仕様: `reference/plugin-system/net-plugin.md`
### 🗄️ [archive/](archive/) - アーカイブ
- **consultations/** - AI相談記録gemini/chatgpt/codex
- **decisions/** - 過去の設計決定
- **build-logs/** - ビルドログ、ベンチマーク結果
- **old-versions/** - 古いドキュメント
---
## 📌 Docs マップ(トップレベルとステータス)
新しくドキュメントを書くときや、どこに置くか迷ったときはこの表を基準にする。
| パス | 用途 | 主な対象 | ステータス |
|------|------|----------|------------|
| `reference/` | 言語仕様・正式なリファレンス | 利用者 / 実装者 | **Active / SSOT** |
| `guides/` | チュートリアル・長めの読み物 | 利用者 / 新規開発者 | **Active** |
| `how-to/` | 手順書・レシピ集 | 日常開発 | **Active** |
| `quick-reference/` | コマンドやオプションの早見表 | 日常参照 | **Active** |
| `development/` | Rust 実装側の設計・ロードマップ | コア開発者 | **ActiveRust層** |
| `private/` | 将来の整理待ちのメモ・長文案 | コア開発者 | **Draft / Incubator** |
| `design/` | 公開可能な安定寄り設計ノート | 実装者 | **Active安定設計** |
| `architecture/` | 全体アーキテクチャの俯瞰図 | 実装者 / 設計者 | **Active** |
| `abi/` | Nyash/Hakorune ABI 関連 | 実装者 | **Active** |
| `specs/` | 古めの仕様・実験的仕様 | 実装者 | **Legacy必要に応じ参照** |
| `checklists/` | レビュー・設計チェックリスト | 実装者 | **Active** |
| `tools/` | ドキュメント生成・補助スクリプト | 実装者 | **Active** |
| `updates/` | リリースノート・変更履歴 | 利用者 / 実装者 | **Active** |
| `releases/` | リリース関連ドキュメント | 利用者 | **Active** |
| `archive/` | 旧ドキュメント・歴史資料 | 研究・考古学用 | **Archived正本ではない** |
| `assets/` | 画像などの共有アセット | すべて | **Support** |
| `ENV_VARS.md` | 環境変数リファレンス | 実装者 / 運用者 | **Active集約先** |
運用ルール(提案):
- **新規仕様/設計**: まずは `private/` に置き、安定したら `reference/` or `design/` へ昇格する。
- **Rust 実装寄りの話**: `development/` 配下に置く(セルフホスト側は `private/roadmap` 等)。
- **古い資料・置き換え済み**: 内容を変えずに `archive/` 以下へ移動し、先頭に「Archived / 新しい場所」の一行メモを書く。
- **ユーザー向けに見せたいもの**: `guides/`, `how-to/`, `quick-reference/`, `releases/` を優先する。
---
## 🎯 クイックアクセス
### すぐ始める
- guides/getting-started.md
- guides/language-guide.md
- guides/p2p-guide.md
### 技術リファレンス
- reference/language/LANGUAGE_REFERENCE_2025.md
- reference/language/EBNF.md演算子: ! 採用 / do-while 非採用)
- reference/language/strings.mdUTF8/Byte 二本柱)
- reference/architecture/TECHNICAL_ARCHITECTURE_2025.md
- reference/architecture/execution-backends.md
- reference/runtime/gc.md
- reference/plugin-system/
- tools/cli-options.mdCLI早見表
### デザイン/ガイド
- guides/language-core-and-sugar.mdコア最小糖衣
- guides/loopform.mdループ正規化
- guides/scopebox.md開発時の可視化
- guides/dev-local-alias.md開発向け: 行頭 @name = expr → local 宣言糖衣)
- guides/box-patterns.mdBoxパターン集Ownership/Lease/Cancel/Capability/Affinity/Observable
- guides/box-design-checklist.mdBox 設計チェックリスト)
- proposals/concurrency/boxes.md並行モデルのBox設計Routine/Channel/Select/Scope
- reference/concurrency/semantics.mdブロッキング/close/select/観測の規約)
- design/(設計ノート入口)
- development/design/legacy/flow-blocks.md矢印フロー匿名ブロック・設計草案
- development/proposals/scope-reuse.mdスコープ再利用ブロック・MVP提案
- reference/language/match-guards.mdガード連鎖Range・CharClass設計
- guides/core-principles.md最小構文・ゼロランタイム・可視化の原則
### 開発状況
- [現在のタスク](../CURRENT_TASK.md)
- [開発ロードマップ](development/roadmap/)
- [Phase別計画](development/roadmap/phases/)
- 🔥 **[Phase 12: TypeBox統合ABI](development/roadmap/phases/phase-12/)**
- 🔥 **[Phase 16: マクロ革命](development/roadmap/phases/phase-16-macro-revolution/)**
- 🧪 **[Phase 17: LoopForm SelfHosting](development/roadmap/phases/phase-17-loopform-selfhost/)**
- 💡 **[Rust所有権統合候補](private/ideas/new-features/2025-09-22-rust-ownership-fusion.md)** - Phase 17+候補
- 🧩 **[MiniVM 構築ロードマップ](development/roadmap/phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md)**
- 🧭 **Using→Loader 統合(最小設計)**: development/design/legacy/using-loader-integration.md
- 🗂️ **Docsの書き方小さく・リンク駆動**: guides/contributing-docs.md
---
## 📋 再編成について / フォルダの見分け方
ドキュメントは2025年8月20日に再編成されました。詳細は[REORGANIZATION_REPORT.md](REORGANIZATION_REPORT.md)を参照してください。
旧パスから新パスへの主な変更:
- `説明書/``guides/``reference/` に分割
- `予定/``development/roadmap/`
- 散在していたファイル → 適切なカテゴリに整理
---
補足:
- `reference/` は正本(仕様)。
- `guides/` は読み物、`how-to/` は手順書。
- `design/` は公開できる設計ノート。
- `private/` は下書き保管庫(将来 `reference/`/`design/` に昇格)。
Nyash は「Everything is Box」哲学に基づく言語です。詳細はコア概念とガイドを参照してください。