Expand description
primitives — codegen が直呼びできる安定 primitive 公開面(bc#36 / typed-codegen.md §3.4)。
A0 = 公開面の確定(emitter 生成ロジックは A1/#37)。生成コードが「細粒度 primitive を 呼ぶ」ための callable surface。
最重要規律: 演算子意味論は再実装しない、かつ codegen は IR を出力しない(bc no-ir
invariant)。各 native primitive は被演算子を評価済み Value で受け、意味論 SSoT の
crate::expr value-core(arith/compare/make_obj/… — evaluate の各アームと同一実装)
へ委譲する。よって意味論(INT_OVERFLOW / PRECISION_LOSS / MOD_ZERO / NULL_REF / TYPE_MISMATCH /
FORBIDDEN_KEY / code-point 順 等)は evaluate と完全一致(実装が一本なので divergence 不能)。
短絡(and/or/cond/coalesce)は生成コードが native 制御フローで綴じ、bool 検査だけ primitive を使う。
生 IR をそのまま実行する経路(ir exec surface / execute_bundle)は crate::expr::evaluate を
直接使う(primitives 面は経由しない)。
加えて run_plan / run_plan_parallel の bounded 並行 / skip・unproduced / hydration helper を 再エクスポートまたは薄く公開する(いずれも既存実装を SSoT として共有)。
Functions§
- add_
native - add / sub / mul(被演算子は評価済み Value)。
- arr_
native - arr 構築(要素は評価済み Value)。
- bool_
native - concat_
native concatのネイティブ実装(evaluate非経由)。既にネイティブ評価済みの parts をString::push_strで連結する。非 string 部分はTYPE_MISMATCH(evaluateのconcatアームと同一)。arity<2 は不正 IR(InvalidNode)。parts は emitter が各要素を再帰的に native emit した Value 列(=式ツリー解釈が消えている)。- div_
native - eq_
native - float_
lit_ native {float:n}リテラル。- ge_
native - gt_
native - hydrate_
into - behavior.rs の map.into と同一規律の zip-attach helper。
- int_
lit_ native {int:"…"}リテラル。- le_
native - len_
native - lt_
native - map_
with_ concurrency - 入力順を保存し in-flight を
concurrencyで上限する bounded 並行 map。 - mod_
native - mul_
native - ne_
native - neg_
native - not_
native - not(bool 検査 → 反転)。
- null_
native - bare スカラリテラル(null / bool / string)。型付き
Rを返すので生成コードで型注釈不要。 - number_
lit_ native - bare number リテラル(§2.3 分類)。
- obj_
native - obj 構築(キーは静的・順序保存で codegen が渡す。
__proto__は FORBIDDEN_KEY)。 - ref_
native refのネイティブ実装(evaluate非経由)。scope→field を直接歩く。 中間 null はNULL_REF(evaluateのrefアームと同一)。- ref_
opt_ native refOptのネイティブ実装(evaluate非経由)。中間 null は null 伝播。- require_
bool_ native - 短絡の bool 検査(and/or/cond/not の生成 native 制御フローが Value→bool に使う)。
- skip_
connection - connection relation の未生成 = {items:[],cursor:null}。
- skip_
single - single relation の未生成 = Null。
- str_
native - sub_
native - unproduced_
value - 未生成 Port(Skip)の表現値。single→Null / connection→空 connection。
Type Aliases§
- R
- primitive の返却型(
crate::expr::evaluateと同一)。