Just-In-Time
Just get the work done blazingly faster
The same Arm64 machine as the Interpreter, with its hot code compiled to WebAssembly and run as native code by the browser’s own compiler.
Compiled, not interpreted
Code that runs often stops being interpreted. It becomes WebAssembly, then native code, and the pieces a CPU spends its time on get the most care.
Hot code, compiled
A block that runs often is compiled to WebAssembly, sixteen to a module, and the browser’s compiler turns it into native code. Cold code stays in the interpreter.
Whole loops and calls
A hot loop, and the calls inside it, compile as one region, so it runs start to finish without leaving compiled code.
Addresses out of the loop
A loop translates its memory addresses once a page, not once an access, and every other access reaches guest RAM through a direct TLB.
Registers stay put
Hot guest registers live in WebAssembly locals across a block or a loop, where the host keeps them in its own registers.
Flags only when read
Condition flags are worked out only where something reads them, so a compare and a branch compile to a compare and a branch.
Checked against the Interpreter
Every compiled instruction is tested against the Interpreter, and whole boots run in lockstep with it: the same machine, only faster.
The numbers
Measured on an Apple M3, in Node. Details are in the notes at the bottom of the page.
More machine
Everything the Interpreter boots, with the graphics a desktop wants.
3D graphics
A virgl GPU on its own worker draws with WebGPU, then WebGL2, then software, whichever the host has.
Snapshots, GPU included
Save a running machine, its graphics memory with it, and pick up where it left off.
Browser and Node
The same core runs in a browser tab and in Node, driven through WEMU, QEMU’s own command line and QMP.
Open source. Licensed for business.
Use Just-In-Time freely under the AGPL, or take a commercial license when that doesn’t fit your product.
Free and open
Use it, study it, change it. If you distribute it or let people use it over a network, share your version’s source under the same license.
Read the licenseFor your product
Ship Just-In-Time inside a product or service without the AGPL’s obligation to release your source. One license covers both engines.
View pricingJust need it exact?
The Interpreter is the same machine without the compiler: one instruction at a time, each exactly as Arm defines it.