ristretto

v0.24.0

v0.24.0 Jul 22 2025 at 17:33 UTC

Added

  • add background jit compiler
  • improve class loader reflection; initial class loader and module support
  • implement java/lang/reflect/Array
  • implement java/lang/String.intern()Ljava/lang/String;
  • add initial string pool

Fixed

  • update cli to allow -cp argument for classpath
  • do not deep clone java.lang.Class objects
  • unbox primitives for constructor reflection
  • correct class loading hierarchy logic
  • correct java/lang/Class.getRawAnnotations()[B and java/lang/Class.getRawTypeAnnotations()[B to return zero length in byte array when there are no annotations
  • correct private method invocation
  • reduce gc memory utilization
  • add Unsafe support for getting/setting Class static fields
  • update java/lang/invoke/MethodHandleNatives.staticFieldOffset(Ljava/lang/invoke/MemberName;)J to get the correct class name
  • update java/lang/Class.forName0 to throw ClassNotFoundException for primitive types
  • correct multinewarray instruction
  • correct jdk.internal.misc.Unsafe put methods
  • correct inherited static method invocation
  • correct java/lang/System.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

Other

  • introduce -X cli arguments and move --int to -Xint
  • stub java/lang/invoke/DelegatingMethodHandle$Holder.reinvoke_L([Ljava/lang/Object;)Ljava/lang/Object;
  • stub java/lang/invoke/DelegatingMethodHandle$Holder.delegate([Ljava/lang/Object;)Ljava/lang/Object;
  • stub java/lang/invoke/Invokers$Holder.invoker([Ljava/lang/Object;)Ljava/lang/Object;
  • stub java/lang/invoke/DirectMethodHandle$Holder.getReference([Ljava/lang/Object;)Ljava/lang/Object;
  • consolidate array class creation
  • upgrade default java version to 21.0.8.9.1
  • move primitive and array class creation into class loader
  • remove use of custom garbage collector box
  • update jit and main readme
  • add timing to compatibility tests
  • add method and string integration tests