ristretto
v0.22.0
v0.22.0
Jul 8 2025 at 00:19 UTC
Added
- add Eq trait to class file attributes
- implement java/lang/invoke/MethodHandle.invoke([Ljava/lang/Object;)Ljava/lang/Object;, java/lang/invoke/MethodHandle.invokeBasic([Ljava/lang/Object;)Ljava/lang/Object;, java/lang/invoke/MethodHandle.invokeExact([Ljava/lang/Object;)Ljava/lang/Object;
- implement jdk/internal/misc/Unsafe.park(ZJ)V and jdk/internal/misc/Unsafe.unpark(Ljava/lang/Object;)V
- implement java/lang/ref/Reference.getAndClearReferencePendingList()Ljava/lang/ref/Reference;
- implement java/lang/ref/Reference.hasReferencePendingList()Z and java/lang/ref/Reference.waitForReferencePendingList()V
- implement java/lang/Thread.start0()V
- implement jdk/internal/vm/ContinuationSupport.isSupported0()Z
- implement java/lang/Thread.setPriority0(I)V
- implement java.lang.Thread resume, suspend and stop methods to return UnsupportedOperationException
- implement java/lang/Thread.clearInterruptEvent()V, java/lang/Thread.interrupt0()V, java/lang/Thread.isInterrupted(Z)Z
- implement java/lang/Thread.getThreads()[Ljava/lang/Thread;
- implement java/lang/Thread.ensureMaterializedForStackWalk(Ljava/lang/Object;)V
- implement jdk/internal/reflect/Reflection.areNestMates(Ljava/lang/Class;Ljava/lang/Class;)Z
- implement jdk/internal/misc/Unsafe.staticFieldBase0(Ljava/lang/reflect/Field;)Ljava/lang/Object;, jdk/internal/misc/Unsafe.staticFieldOffset0(Ljava/lang/reflect/Field;)J, sun/misc/Unsafe.staticFieldBase(Ljava/lang/reflect/Field;)Ljava/lang/Object;, sun/misc/Unsafe.staticFieldOffset(Ljava/lang/reflect/Field;)J
- implement jdk/internal/misc/Unsafe.pageSize()I and sun/misc/Unsafe.pageSize()I
Fixed
- correct java/lang/Object.hashCode()I
- correct if_icmpeq and if_icmpne instructions
- correct field shadowing logic
- correct and optimize class polymorphic method lookups
- correct java/lang/invoke/MethodHandleNatives resolve access check logic
- correct field resolution logic in java/lang/invoke/MethodHandleNatives.resolve()
- correct integer/long div/rem instructions when dividing by zero
- correct double/float div/rem instructions when dividing by zero
- correct jdk/internal/misc/Unsafe.get(...) methods to handle partial byte buffers
- correct array index out of bounds behavior
- add class, method type and method handle support to invokedynamic static bootstrap argument resolution
- correct class retrieval for java/lang/invoke/MethodHandleNatives.objectFieldOffset(Ljava/lang/invoke/MemberName;)J
- define empty configuration for jdk/internal/module/ModuleBootstrap.boot()Ljava/lang/ModuleLayer;
- use thread execute for internal vm calls
- lookup classes using existing thread context instead of vm
Other
- update Cargo.toml dependencies
- [breaking] optimize Instruction enum by introducing TableSwitch and LookupSwitch structs
- reduced direct usages of Reference
- remove fields from object instances
- [breaking] refactor class and object fields
- add eq trait to value and reference
- [breaking] refactor VM invoke interfaces to combine method name and method descriptor argument into a single method signature argument
- update compatibility tests to run in parallel
- update to Rust 1.88.0
- update JavaObject.to_object(&VM) -> JavaObject.to_object(&Thread)
- refactored file handle management and created thread handles