Big objects are instant now, instead of getting slower the more you add
A deep speed fix to how our from-scratch engine stores an object's properties - the named fields a piece of data carries, like a person's name, age and email. The engine kept each object's fields in a simple list and, every time it looked one up or added a new one, walked the whole list from the top. That is fine for a small object, but for a big one - a data grid with thousands of rows, a large JSON response from a server, a lookup table built up in a loop - the cost grew with the SQUARE of its size: doubling the object made it roughly four times slower, so a big one could stall the page for seconds. The engine now keeps a smart index alongside the list (built automatically, and only once an object gets large enough to need it), so a lookup jumps straight to the field instead of scanning. Big objects go from slowing to a crawl to staying instant however large they grow - and small objects, the common case, are completely untouched and pay nothing for it. Nothing a page shows or does changes; it is the exact same result, faster. This clears the last big speed cliff left in the core of the engine, part of the run-up to making our own engine fast enough to render everything you browse.