wazabin-qcode-jit 0.4.0

Cranelift JIT backend for the qcode IR: an alternative execution strategy to the interpreter
Documentation
# wazabin-qcode-jit

A [Cranelift](https://cranelift.dev/) JIT backend for
[QCode](https://docs.rs/wazabin-qcode) — an execution strategy alongside the
interpreter, not a replacement for it.

[`qcode_emulator`](https://docs.rs/wazabin-qcode-emulator) interprets QCode one
operation at a time: every intermediate value is materialised into its value
table and every operand resolved through the module. Compiled code does
neither. A QCode block is already SSA, so it maps onto Cranelift's SSA
directly, and values consumed inside a block stay in machine registers.

The backend is deliberately **partial**. A block it declines to compile is run
by the interpreter instead, so coverage can grow over time without ever
becoming a correctness question. `compile::Unsupported` names what was
declined and why.

Install it on a [`qcode_vm`](https://docs.rs/wazabin-qcode-vm) machine:

```rust
vm.set_block_executor(Box::new(qcode_jit::Jit::new()));
```

The test suite runs programs both ways and requires identical results.

Developed by [Thalium](https://blog.thalium.re/about/).

## License

Licensed under the [MIT License](LICENSE).