Faster field reads, and loops over binary data
Two speed-ups that build on the last release. First, when a compiled loop reads the same field from many objects (the everyday "for each item, read item.field"), Floati now remembers where that field sits inside the object instead of searching for it every single time, which matters most for objects that carry a lot of fields. Second, and bigger: loops over typed arrays now run compiled. Typed arrays (Uint8Array, Float64Array and friends) are how the web handles raw binary data, the bytes behind images, audio, video frames and files, and code that walks them in a loop, summing or transforming, is exactly the kind of number-crunching a compiler should help with. Reading an element used to re-derive the array's layout on every access; Floati now works it out once and reads straight from the buffer, so a loop over a million-element byte array runs about 1.6 times faster. Both changes read each value exactly as the interpreter would (a field defined with a custom getter still runs the getter, an out-of-range element still reads as undefined), so results never change. The full engine test suite passes identically with the speed-up switched on and off.