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。

最重要規律: 演算子意味論は再実装しない、かつ 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_MISMATCHevaluateconcat アームと同一)。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_REFevaluateref アームと同一)。
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 と同一)。