The headline of 0.12.0 is a just-in-time compiler. Run any script
with --jit=on and hot loops compile to native ARM64 machine
code while the rest of the program keeps interpreting. It is entirely
opt-in, and it changes nothing about what your program does: the output
is byte-for-byte identical to the interpreter, including error messages
and stack traces. Snapshot the live world mid-run and the bytes match
either way. We test that on every commit, because in a language whose
whole bet is bit-exact persistable state, a compiler that changed an
answer would be a bug factory.
The release also carries a wave of value types the language had been
circling for a while: exact money that knows its currency,
a columnar frame for querying tabular data, six geometry
shapes, a datetime type with a pure time
module, system locale and timezone awareness, and render
for baking localized config tables. More on the money and geometry work
in the next few posts.
Two smaller things worth knowing: { f64 } element-typed
buffers joined the typed-array family, and
reserve(array, n) pre-sizes an array in one step when you
know how big it will get.