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>
143 lines
7.7 KiB
Markdown
143 lines
7.7 KiB
Markdown
# 📚 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 8~12の詳細計画
|
||
- phase-12/ - 🆕🔥 TypeBox統合ABI + Nyash ABI C実装(セルフホスティング実現!)
|
||
- native-plan/ - ネイティブビルド計画
|
||
- **proposals/** - RFC、新機能提案
|
||
|
||
### 🔌 Net Plugin(HTTP/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 実装側の設計・ロードマップ | コア開発者 | **Active(Rust層)** |
|
||
| `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.md(UTF‑8/Byte 二本柱)
|
||
- reference/architecture/TECHNICAL_ARCHITECTURE_2025.md
|
||
- reference/architecture/execution-backends.md
|
||
- reference/runtime/gc.md
|
||
- reference/plugin-system/
|
||
- tools/cli-options.md(CLI早見表)
|
||
|
||
### デザイン/ガイド
|
||
- guides/language-core-and-sugar.md(コア最小+糖衣)
|
||
- guides/loopform.md(ループ正規化)
|
||
- guides/scopebox.md(開発時の可視化)
|
||
- guides/dev-local-alias.md(開発向け: 行頭 @name = expr → local 宣言糖衣)
|
||
- guides/box-patterns.md(Boxパターン集:Ownership/Lease/Cancel/Capability/Affinity/Observable)
|
||
- guides/box-design-checklist.md(Box 設計チェックリスト)
|
||
- 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 Self‑Hosting](development/roadmap/phases/phase-17-loopform-selfhost/)**
|
||
- 💡 **[Rust所有権統合(候補)](private/ideas/new-features/2025-09-22-rust-ownership-fusion.md)** - Phase 17+候補
|
||
- 🧩 **[Mini‑VM 構築ロードマップ](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」哲学に基づく言語です。詳細はコア概念とガイドを参照してください。
|