Skip to main content

Module primitives

Module primitives 

Source
Expand description

primitives — codegen が直呼びできる安定 primitive 公開面(bc#36 / typed-codegen.md §3.4)。

A0 = 公開面の確定(emitter 生成ロジックは A1/#37)。生成コードが「細粒度 primitive を 呼ぶ」ための callable surface を additive に切り出す。

最重要規律(AC 7): 演算子意味論は再実装しない。 各 primitive は Expression IR の 単一キーノード(serde_json::json!)を組んで既存 SSoT crate::expr::evaluate へ委譲する だけの薄いラッパ。よって意味論(INT_OVERFLOW / PRECISION_LOSS / MOD_ZERO / NULL_REF / TYPE_MISMATCH / 短絡未評価 / code-point 順 等)は evaluate完全一致する。

短絡の保存: and/or/cond/coalesce未評価の IR ノード&J)を引数に取り、 内部で evaluate が短絡する(値を先に渡す API は採らない)。

加えて run_plan / run_plan_parallel の bounded 並行 / skip・unproduced / hydration helper を 再エクスポートまたは薄く公開する(いずれも既存実装を SSoT として共有)。

Functions§

add
加算(int×int / float×float checked。混在は TYPE_MISMATCH)。
and
論理積(短絡: a=false なら b は評価されない)。b は未評価 IR で渡す。
arr
array 構築。
coalesce
null 合体(左が null のときだけ右を評価)。右は未評価 IR で渡す。
concat
文字列連結(n-ary, min 2。string のみ)。
concat_native
concat のネイティブ実装(evaluate 非経由)。既にネイティブ評価済みの parts を String::push_str で連結する。非 string 部分は TYPE_MISMATCHevaluateconcat アームと同一)。arity<2 は不正 IR(InvalidNode)。parts は emitter が各要素を再帰的に native emit した Value 列(=式ツリー解釈が消えている)。
cond
条件(strict bool。採用側のみ評価)。then/else は未評価 IR で渡す。
div
除算(常に float。|int|>2^53 は PRECISION_LOSS、0除算は NAN_OR_INF)。
eq
等価(同一スカラ型のみ。null==null 可)。
eval_expr
生の Expression IR を直接評価する汎用 primitive(意味論は個別 primitive と同一 SSoT)。
float_lit
{float:n} リテラル(NaN/Inf は NAN_OR_INF)。
ge
以上。
gt
大なり。
hydrate_into
behavior.rs の map.into と同一規律の zip-attach helper。
int_lit
{int:"..."} リテラル(i64 checked)。
le
以下。
len
配列長(配列のみ。string length は v1 に無い)。
lt
小なり(同一型 int/float/string。string は code-point 順)。
map_with_concurrency
入力順を保存し in-flight を concurrency で上限する bounded 並行 map。
mod
剰余(truncated、符号は被除数。int の 0 剰余は MOD_ZERO)。
mul
乗算。
ne
非等価。
neg
単項マイナス。
not
論理否定(strict bool。truthiness なし)。
obj
object 構築(own key __proto__ は FORBIDDEN_KEY)。
or
論理和(短絡: a=true なら b は評価されない)。
ref
参照。中間 null は NULL_REF。
ref_native
ref のネイティブ実装(evaluate 非経由)。scope→field を直接歩く。 中間 null は NULL_REFevaluateref アームと同一)。
ref_opt
null 安全参照。中間 null は null 伝播。
ref_opt_native
refOpt のネイティブ実装(evaluate 非経由)。中間 null は null 伝播。
skip_connection
connection relation の未生成 = {items:[],cursor:null}。
skip_single
single relation の未生成 = Null。
sub
減算。
unproduced_value
未生成 Port(Skip)の表現値。single→Null / connection→空 connection。

Type Aliases§

Expr
未評価の Expression IR ノード(primitive の被演算子)。
R
primitive の返却型(evaluate と同一)。