ristretto

v0.19.0

v0.19.0 May 18 2025 at 04:41 UTC

Added

  • implement basic jit branch instructions
  • enable creation of jit control flow graph blocks
  • generate jit control flow graph using cranelift blocks
  • optimize operand stack layout
  • optimize jit Instruction::Return
  • optimize operand stack to prevent allocation when not used; e.g. Object.<init>()
  • implement jit operand stack

Fixed

  • add jit cfg exception blocks
  • add jit block support for ifnull and ifnonnull
  • add jit control flow logic for if_acmpeq and if_acmpne
  • correct lcmp, dcmpl, dcmpg, fcmpl, fcmpg to pass stack values through block params
  • correct jit dcmpl, dcmpg, fcmpl, fcmpg to emit float instructions instead of int.
  • correct jit invoke* instruction parameter processing
  • correct jit field, invoke and stack simulation errors

Other

  • minor jit readme update
  • simplify jit stack implementations
  • update to Rust 1.87.0
  • improve jit instruction simulation test coverage
  • refactor to use block params for OperandStack
  • update jit operand stack to use cranelift stack slot
  • only enable jit verifier when debug assertions are enabled
  • update to clap=4.5.38, os_info=3.11.0, sysinfo=0.35.1, tempfile=3.20.0