# signatures.rel — El-level return types for runtime builtins. # # el_runtime.h declares every builtin as returning el_val_t, because El has ONE # type. That single type is why the whole seam is cheap, and it is also why the # header cannot say that now() returns an Instant while unix_seconds() returns # an Int. The El-level type is real and the C boundary erases it. # # So the compiler needs this, and unlike the other checks it needs it at # EMISSION time: Instant + Duration must become el_instant_add_dur, and that is # dispatch, not adjudication. What moved here is the DATA -- previously 19 # hardcoded names across two functions in codegen.el. What stays in the emitter # is choosing which call to emit, which is an emitter's actual job. # # returns now returns Instant el_now_instant returns Instant unix_seconds returns Instant unix_millis returns Instant instant_from_iso8601 returns Instant el_instant_add_dur returns Instant el_instant_sub_dur returns Instant el_duration_from_nanos returns Duration duration_seconds returns Duration duration_millis returns Duration duration_nanos returns Duration el_instant_diff returns Duration el_duration_add returns Duration el_duration_sub returns Duration el_duration_scale returns Duration el_duration_div returns Duration ttl_cache_age returns Duration