r3d/runtime: allocs, keeps and births at 0 on this side

render3d: shadow_fit, water_reflection_pass, layer_partition_lods and the
GPU cull's scratch are made with the state; v3_dist is scalar; the pushes
into lists sized at start-up, the caps probe, the table growth, the loads
and the constructors declared with their bounds (one statement a line);
the renderer's name made once with the device; the two error messages
given back; the dead lupine models removed.

runtime: a component's text is held interned in its value cell (one copy
per distinct text), so the getter's own text goes with its frame instead
of being kept by ludic.ui's model - 80 of the 83 keeps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 20:10:59 +03:00
parent 5be2422c84
commit f993c4a36a
18 changed files with 105 additions and 177 deletions

View file

@ -96,9 +96,11 @@ function value_set_float(o: Val, key: pointer, x: float) -> void {
let v = value_slot(o, key, 7)
value_num_set(v, float_bits(x))
}
# a component's text held interned: one copy per distinct text, so the caller's own (a template built
# every frame) is given back with its frame rather than kept by the model
function value_set_str(o: Val, key: pointer, s: pointer) -> void {
let v = value_slot(o, key, 4)
v.txt = s
v.txt = intern(s)
}
function value_set_bool(o: Val, key: pointer, b: bool) -> void {
let v = value_slot(o, key, 3)
@ -142,7 +144,7 @@ function value_set_strs(o: Val, key: pointer, xs: []string) -> void {
let l = value_list_fit(o, key, len(xs))
for i in 0 .. len(xs) {
let v = value_item(l, i, 4)
v.txt = xs[i]
v.txt = intern(xs[i])
}
}
function value_set_bools(o: Val, key: pointer, xs: []bool) -> void {
@ -197,7 +199,7 @@ function value_into_float(into: Val, x: float) -> Val {
}
function value_into_str(into: Val, s: pointer) -> Val {
let v = value_into(into, 4)
v.txt = s
v.txt = intern(s)
return v
}
function value_into_bool(into: Val, b: bool) -> Val {
@ -235,7 +237,7 @@ function value_into_strs(into: Val, xs: []string) -> Val {
let l = value_into_list(into, len(xs))
for i in 0 .. len(xs) {
let v = value_item(l, i, 4)
v.txt = xs[i]
v.txt = intern(xs[i])
}
return l
}