35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
## Plan — Phase 20.18(Null/Void 固定+Result ケース別+糖衣)
|
||
|
||
0) Null/Void の固定(P0)
|
||
- 言語: 予約語 `null`/`void` をリテラルとして受理
|
||
- MIR JSON v0: ConstValue に `Null`/`Void` を追加
|
||
- VM: `VMValue::Null` を追加(boolean/equality/stringify 対応)
|
||
- Singletons: `NullBox`/`VoidBox` を Lazy static に(to_nyash_box() で変換)
|
||
|
||
1) API 最小追加(Core/Gate‑C 実装→Hakorune VM 委譲)
|
||
- Array.try_get/1, Array.try_pop/0, Map.try_get/1
|
||
- String.to_i64/0, String.to_f64/0
|
||
|
||
2) 糖衣の受理と Lowering(ゼロアロケーション)
|
||
- Parser: `let a?=/a!=` と `if let ok(..)` を受理
|
||
- Builder: `?`→`select(ok,value,Void)`, `!`→`br ok/ trap`, if-let→`br ok/else`
|
||
|
||
3) 例外タグの安定化
|
||
- E_OOB / E_EMPTY / E_NOT_FOUND / E_PARSE を固定
|
||
|
||
4) スモーク(opt‑in, quick)
|
||
- try_get/try_pop(ok/err)+ `?`/`!`/if-let ok
|
||
- to_i64/to_f64(ok/err)
|
||
|
||
5) Gate & Docs
|
||
- Gate: `HAKO_TRY_API=1`(既定OFF)
|
||
- Docs: result-semantics(case-by-case)/ optional-semantics(link更新)/ testing-guide 補足
|
||
- Docs: vm-core に Null/Void/rc 規則を追記、phase-20.18 README/TASKS を同期
|
||
|
||
6) Plugins(互換-段階更新)
|
||
- Map/Array の意味論を SSOT に揃える(get/pop 欠落→Null、push/set/clear→Void、delete→値 or Null、set の不正→Fail)
|
||
- HostHandleRouter/内蔵ルーターで未更新プラグインを回避できる経路を優先(Core先行)
|
||
|
||
7) 後段(20.19+ 任意)
|
||
- Result を“値版”へ({i1 ok, payload})。最適化の効果測定とゼロコストの検証。
|