ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 01:05:35 +03:00
parent 25f4d49e43
commit fa119d234b
18 changed files with 44838 additions and 44532 deletions

View file

@ -10,7 +10,10 @@ function st_for(ui_st: mut UiState, key: string, t: UiTpl, e: UiEnv) -> Val {
if ui_st.st_keys[i] == key { return ui_st.st_vals[i] }
}
let o = Value.object()
let was = ui_st.uv_on # a state's start is kept for good: its values are never pooled
ui_st.uv_on = false
for i in 0 .. len(decl.keys) { Value.put(o, decl.keys[i], ui_eval(ui_st, decl.vals[i], e)) }
ui_st.uv_on = was
push(ui_st.st_keys, key)
push(ui_st.st_vals, o)
return o