docs: confirm Option A (no var/let; explicit local). Add notes to cheatsheet, language reference, tutorials. CURRENT_TASK updated with decision and next small items.

This commit is contained in:
nyash-codex
2025-09-28 02:00:53 +09:00
parent a4d014a814
commit 1994990f47
4 changed files with 19 additions and 1 deletions

View File

@ -10,6 +10,13 @@ Status Snapshot — 20250927
- VM method_router: special-method table extended minimally — equals/1 now tries instance class then base class when only base provides equals (deterministic, no behavior change where both exist). toString→stringify remains. - VM method_router: special-method table extended minimally — equals/1 now tries instance class then base class when only base provides equals (deterministic, no behavior change where both exist). toString→stringify remains.
- MIR Callee Phase3: added TypeCertainty to Callee::Method (Known/Union). Builder sets Known when receiver origin is known; legacy/migration BoxCall marks Union. JSON emitter and MIR printer include certainty for diagnostics. Backends ignore it functionally for now. - MIR Callee Phase3: added TypeCertainty to Callee::Method (Known/Union). Builder sets Known when receiver origin is known; legacy/migration BoxCall marks Union. JSON emitter and MIR printer include certainty for diagnostics. Backends ignore it functionally for now.
- Using/SSOT: JSONモジュール内部 using を相対に統一alias配下でも安定 - Using/SSOT: JSONモジュール内部 using を相対に統一alias配下でも安定
- DebugHub: 追加ゲート `NYASH_DEBUG_SAMPLE_EVERY`N件に1度だけ emit。重いケースでのログ制御のため既定OFF・ゼロコスト
Decision — Variables (Option A; 20250927)
- 方針: var/let は導入しない。ローカルは常に `local` で明示宣言。
- 目的: SSA/LoopForm と Known/Union 解析の単純さを維持し、未宣言代入の混入を防ぐ。
- 補足: 開発用の糖衣(行頭 `@name = expr``local name = expr`はランナー前処理で提供既定OFF。言語仕様には含めない。
- Docs 更新: quick-reference, language reference, tutorials に「var/let 不採用」を明記。
- Tokenizer/Parser デバッグ導線devトレースを追加 - Tokenizer/Parser デバッグ導線devトレースを追加
- json_lint_vm: fastpathの誤判定を除去未終端ガードを追加PASS - json_lint_vm: fastpathの誤判定を除去未終端ガードを追加PASS
- json_query_min_vm/json_query_vm/json_pp_vm: PASS - json_query_min_vm/json_query_vm/json_pp_vm: PASS
@ -69,6 +76,8 @@ Work Queue (Next)
3) エラーメッセージの詳細化expected/actual/line/column 3) エラーメッセージの詳細化expected/actual/line/column
4) Ny 実行器 M2 スケルトンJSON v0 ローダconst/binop 等の最小実装)下書き 4) Ny 実行器 M2 スケルトンJSON v0 ローダconst/binop 等の最小実装)下書き
5) Parity ミニセットVM↔llvmlite↔Nyを用意し、差分ダッシュボード化 5) Parity ミニセットVM↔llvmlite↔Nyを用意し、差分ダッシュボード化
6) Router 観測ログの軽追加dev-only, 既定OFF: class-reroute / special-reroute を DebugHub に emitサンプル制御対応
7) LLVM ハーネスの MIR ダンプに certainty 表示(挙動不変の診断整合)
Runbook抜粋 Runbook抜粋
- VM quick: `tools/smokes/v2/run.sh --profile quick` - VM quick: `tools/smokes/v2/run.sh --profile quick`

View File

@ -215,6 +215,8 @@ x = 42
y = 42 // Runtime Error + 修正提案 y = 42 // Runtime Error + 修正提案
``` ```
注記: Nyash は `var`/`let` をサポートしません。必ず `local` で宣言してから使用します。
### ループ構文統一 ### ループ構文統一
```nyash ```nyash
// ✅ 唯一の正しい形式 // ✅ 唯一の正しい形式
@ -251,4 +253,4 @@ while condition { } // 使用不可
📚 **関連ドキュメント:** 📚 **関連ドキュメント:**
- [Getting Started](GETTING_STARTED.md) - 環境構築・最初の一歩 - [Getting Started](GETTING_STARTED.md) - 環境構築・最初の一歩
- [P2P Guide](P2P_GUIDE.md) - P2P通信システム完全ガイド - [P2P Guide](P2P_GUIDE.md) - P2P通信システム完全ガイド
- [Built-in Boxes](reference/builtin-boxes.md) - ビルトインBox詳細リファレンス - [Built-in Boxes](reference/builtin-boxes.md) - ビルトインBox詳細リファレンス

View File

@ -10,6 +10,8 @@ local a, b, c # 複数宣言
local x = 10, y = 20, z # 混合初期化 local x = 10, y = 20, z # 混合初期化
``` ```
注意: Nyash は `var`/`let` を採用していません。常に `local` で明示宣言してください(未宣言名への代入はエラー)。
### Box定義クラス ### Box定義クラス
```nyash ```nyash
box ClassName { box ClassName {

View File

@ -162,6 +162,11 @@ temp = 42
x = 42 # RuntimeError: 未宣言変数 + 修正提案表示 x = 42 # RuntimeError: 未宣言変数 + 修正提案表示
``` ```
#### **設計方針var/let について)**
- Nyash は `var`/`let` を導入しません。ローカル変数は常に `local` で明示宣言します。
- 目的: 代入点と定義点を一致させ、LoopForm/SSA と解析Known/Unionを簡潔に保つためです。
- 補足: 開発用の糖衣として行頭 `@name = expr``local name = expr` に前処理で展開する仕組みがありますランナー側、既定OFF。言語仕様の一部ではありません。
### **2.3 制御構文** ### **2.3 制御構文**
#### **条件分岐** #### **条件分岐**