v0.1.28c (Early Access)
A performance release. Large operations, somewhere around a thousand customers, had slowed to the point of being unplayable, and two pieces of per-update bookkeeping turned out to be responsible for most of it. The database repair from v0.1.28 also now recognises a case it was blind to, and the local API works from a browser tab that addresses it as localhost.
Fixed
Performance
- A world with a thousand customers keeps up again. The simulation was spending roughly three quarters of the time it has between updates on two pieces of bookkeeping, and on a busy site it went over that budget entirely. It now uses about a quarter. The same save that stuttered constantly runs clean.
- Tracking your busiest machines and customers no longer gets slower the more customers you have. The game keeps a running shortlist of the top two hundred talkers by traffic. Every time it credited traffic to someone outside that shortlist it re-read the entire shortlist to find who to drop, and once you had more than two hundred customers that was very nearly every single update, thousands of times per second of game time. It now tracks the smallest entry as it goes.
- Serverless requests stop re-checking your whole fleet, one request at a time. Working out which machines are allowed to run a given customer's code depends on your pools, your dedicated hardware and which machines are cabled and out of maintenance. All three were already remembered between requests, but the combination of them was worked out again from scratch for every single request that arrived. On a large site that was the single most expensive thing the simulation did. It is now worked out once and reused until something actually changes.
- Neither change alters what the simulation decides, only how long it takes to decide it. Your busiest-talker lists rank the same, and requests land on the same machines they would have before.
Databases
- A database left broken by a growth request is now repaired even when the growth request resized its copies too. v0.1.28 could put these back, but only by recognising copies that still matched the shape your contract asked for. Approving a growth request resized everything it touched, the spare copies included, so on the saves that most needed repairing there was nothing left matching to recognise, and the repair quietly found nothing to do.
- Those copies are now identified by counting instead. If you are holding more machines than your own contract accounts for, the surplus is what the database lost, and it is handed back. The disk comes back with it.
The local API (experimental)
- A page that asks for
localhostcan now reach the API. Fetchinghttp://localhost:9875from your own dashboard failed to connect, and browsers report that failure as a cross-origin permissions error, so it looked like the API was refusing you rather than not answering. The namelocalhostcan stand for two different addresses and the game was only listening on one of them. It now listens on both, solocalhostand127.0.0.1both work. - Asking for a diagnosis during a large outage no longer returns an enormous reply. Every open incident came back in full, and each one carries its causes, its timeline and its evidence, so a site with hundreds of them produced several megabytes at exactly the moment you want a quick answer. It now returns the first fifty and tells you how many there really are.
Notes
Saves from v0.1.28 and v0.1.28b load as normal. No save-format changes.
If you have a database that stayed broken after loading on v0.1.28, load your save once on this version and it will be put back. Nothing is moved and there is no downtime. If it was already repaired, nothing happens.
Loading a very large save still pauses for around a second across the first couple of updates while the game re-spreads machines that older versions had stacked onto one host. That is unchanged, it is deliberately limited so it cannot run away, and it settles by itself.
The local API remains experimental, on by default, read-only, and reachable only from your own machine. If you built anything against it on v0.1.28b, nothing has been renamed or removed; a very large diagnosis is now capped, and that response says so.
Multiplayer sessions need every player on the same version, as with v0.1.28.