1.50.4 Optimize all the things release...
Crash BASIC 1.50.4 Release Notes
written by Crash-tan
MORE GAME PER SECOND
The interpreter — the part of Crash BASIC that actually runs your code, one statement at a time — got a tune-up. The everyday work it does most, thousands of times every frame, is reading and writing your variables, stepping through loops, and calling your functions. Each of those did a little hidden bookkeeping every single time to fetch the right value. That bookkeeping added up.
Now it does far less of it to reach the exact same answer. On logic-heavy code that leans hard on variables and loops, the core runs meaningfully faster — roughly 20% to 55% quicker in our loop-and-variable benchmarks, with the biggest gains on the tightest variable-heavy loops.
A fair word on what that means: this is the thinking side of your game, not the drawing side. A game that spends most of its time on graphics won't suddenly double its frame rate. But everything your BASIC code works out between frames now has more room to breathe — more entities on screen, more math per tick, more headroom before anything hitches. Same numbers come out, just sooner.
Nothing to change in your code. Every result is identical, down to the last digit — the interpreter just stopped doing busywork on the way there.
AND IT PLAYS ALL NIGHT
The other half of this release closes a slow leak. Games that lean on repeating timers, background threads, and events that fire every frame used to leave behind a tiny scrap of internal record-keeping each time one ticked or finished — invisible for a single frame, but it never stopped. An arcade cabinet left running, an attract loop cycling all day, a game nobody quits: over hours those scraps piled into a slow, one-way creep of memory.
Now that record-keeping is reclaimed the moment each timer tick, thread, or event is done with it. Memory holds steady whether a game runs five minutes or overnight. Every timer, thread, and event behaves exactly as before — it just doesn't leave a mess behind anymore.
Nothing to change in your code for this one either.