fix(leaks): what play allocated every frame and never freed - a shadow uniform's name, the Tick, a ridden vehicle's moves
Found with malloc_history over 1200 frames of play without the interface (the first Ludic function on each allocating stack, live bytes at two marks): sh_loc built `name + "[0]"` per program per pass per frame - 24.6 MB of 33 in the window; its callers pass both names as literals now. tick_set fills the frame loop's one Tick instead of tick_new making one a frame. A ridden boat or horse said VEHICLE_MOVED as a new fact every frame; the metres are added up in VehiclesState and taken once (vehicle_moved_take / _kind / _x / _z). Play's growth without the interface: 92 -> 14.7 MB a minute (maroon-lake tests/leakcheck.sh); what is left is phys_push (Physics' fix on lang/nav) and the HUD's strings. Packages 407, ludic-dev test 305 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
8fbb1f7d03
commit
231715bf98
9 changed files with 47 additions and 10 deletions
|
|
@ -20,7 +20,7 @@ function ve_row(vehicles_st: mut VehiclesState, v: Vehicle, ix: float, iz: float
|
|||
let take = ve_swell(vehicles_st, v, iz, dt)
|
||||
VehicleHull.row(v.nid, iz * VE_ROW * (1.0 - take), -ix * VE_ROW_TURN)
|
||||
let d = Math.abs(v.speed) * dt
|
||||
if d > 0.0 { ve_say(vehicles_st, VEHICLE_MOVED, v, d) }
|
||||
if d > 0.0 { ve_moved_add(vehicles_st, v, d) }
|
||||
}
|
||||
|
||||
# where the hull is now, and how fast it goes along its bow
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue