Memory grown in place, compiled callbacks, and v0.0.23

Memory that grows in place reaches the collector, an appending loop stops rewriting typeof's strings, builtins call compiled functions without the interpreter loop, and v0.0.23 ships with Python at 1.30x CPython.

Seven wrong results in v0.0.22 were found and fixed. The largest: memory that grows in place (an array pushed to a megabyte, an object gathering thousands of keys, a filling Map) allocates no new object, so a loop that built and dropped such things ran no collection; a browser engine ended the script at its heap ceiling, and natively 2,000 calls that each built an 80,000-element array held 1.2 GB. d24fe3e8 reads what the allocator has outstanding and collects on that growth, and the same program peaks at 60 MB. dcbfe67d stops var s = "number"; s += x from rewriting the string typeof returns, and 20123116 unwraps a chain of bound functions in a loop instead of by recursion.

On speed, 784e3eb2 and 1ba123a5 let builtins enter a compiled callback without the interpreter loop: six million capturing map and forEach callbacks take 79 ms where they took 232 (Node: 64). 54a63349 steps a generator in for-of without its result object, 649595f8 compiles new in memory regions and Tier C bodies, and 8b9b25c5 predicts a keyed access's slot from the receiver's shape and the key. Python went from 1.79× to 1.30× CPython 3.13, through small-int arithmetic settled in the dispatch loop (621f798b), callee frames pushed from the call site's cache (60d7e502) and a raise caught in its own frame (2b217ea4). v0.0.23 shipped on 12 October.