Skip to content

Commit 3368aae

Browse files
Merge pull request #408 from theseus-rs/release-plz-2025-06-20T20-31-22Z
ristretto-v0.22.0
2 parents 3fbdfb3 + 570685c commit 3368aae

File tree

8 files changed

+156
-20
lines changed

8 files changed

+156
-20
lines changed

CHANGELOG.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,142 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## `ristretto_cli` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/v0.21.0...v0.22.0) - 2025-07-07
11+
12+
### Added
13+
- add Eq trait to class file attributes
14+
- 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;
15+
- implement jdk/internal/misc/Unsafe.park(ZJ)V and jdk/internal/misc/Unsafe.unpark(Ljava/lang/Object;)V
16+
- implement java/lang/ref/Reference.getAndClearReferencePendingList()Ljava/lang/ref/Reference;
17+
- implement java/lang/ref/Reference.hasReferencePendingList()Z and java/lang/ref/Reference.waitForReferencePendingList()V
18+
- implement java/lang/Thread.start0()V
19+
- implement jdk/internal/vm/ContinuationSupport.isSupported0()Z
20+
- implement java/lang/Thread.setPriority0(I)V
21+
- implement java.lang.Thread resume, suspend and stop methods to return UnsupportedOperationException
22+
- implement java/lang/Thread.clearInterruptEvent()V, java/lang/Thread.interrupt0()V, java/lang/Thread.isInterrupted(Z)Z
23+
- implement java/lang/Thread.getThreads()[Ljava/lang/Thread;
24+
- implement java/lang/Thread.ensureMaterializedForStackWalk(Ljava/lang/Object;)V
25+
- implement jdk/internal/reflect/Reflection.areNestMates(Ljava/lang/Class;Ljava/lang/Class;)Z
26+
- 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
27+
- implement jdk/internal/misc/Unsafe.pageSize()I and sun/misc/Unsafe.pageSize()I
28+
29+
### Fixed
30+
- correct java/lang/Object.hashCode()I
31+
- correct if_icmpeq and if_icmpne instructions
32+
- correct field shadowing logic
33+
- correct and optimize class polymorphic method lookups
34+
- correct java/lang/invoke/MethodHandleNatives resolve access check logic
35+
- correct field resolution logic in java/lang/invoke/MethodHandleNatives.resolve()
36+
- correct integer/long div/rem instructions when dividing by zero
37+
- correct double/float div/rem instructions when dividing by zero
38+
- correct jdk/internal/misc/Unsafe.get<type>(...) methods to handle partial byte buffers
39+
- correct array index out of bounds behavior
40+
- add class, method type and method handle support to invokedynamic static bootstrap argument resolution
41+
- correct class retrieval for java/lang/invoke/MethodHandleNatives.objectFieldOffset(Ljava/lang/invoke/MemberName;)J
42+
- define empty configuration for jdk/internal/module/ModuleBootstrap.boot()Ljava/lang/ModuleLayer;
43+
- use thread execute for internal vm calls
44+
- lookup classes using existing thread context instead of vm
45+
46+
### Other
47+
- update Cargo.toml dependencies
48+
- [**breaking**] optimize Instruction enum by introducing TableSwitch and LookupSwitch structs
49+
- reduced direct usages of Reference
50+
- remove fields from object instances
51+
- [**breaking**] refactor class and object fields
52+
- add eq trait to value and reference
53+
- [**breaking**] refactor VM invoke interfaces to combine method name and method descriptor argument into a single method signature argument
54+
- update compatibility tests to run in parallel
55+
- update to Rust 1.88.0
56+
- update JavaObject.to_object(&VM) -> JavaObject.to_object(&Thread)
57+
- refactored file handle management and created thread handles
58+
59+
## `ristretto_vm` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/ristretto_vm-v0.21.0...ristretto_vm-v0.22.0) - 2025-07-07
60+
61+
### Added
62+
- 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;
63+
- implement jdk/internal/misc/Unsafe.park(ZJ)V and jdk/internal/misc/Unsafe.unpark(Ljava/lang/Object;)V
64+
- implement java/lang/ref/Reference.getAndClearReferencePendingList()Ljava/lang/ref/Reference;
65+
- implement java/lang/ref/Reference.hasReferencePendingList()Z and java/lang/ref/Reference.waitForReferencePendingList()V
66+
- implement java/lang/Thread.start0()V
67+
- implement jdk/internal/vm/ContinuationSupport.isSupported0()Z
68+
- implement java/lang/Thread.setPriority0(I)V
69+
- implement java.lang.Thread resume, suspend and stop methods to return UnsupportedOperationException
70+
- implement java/lang/Thread.clearInterruptEvent()V, java/lang/Thread.interrupt0()V, java/lang/Thread.isInterrupted(Z)Z
71+
- implement java/lang/Thread.getThreads()[Ljava/lang/Thread;
72+
- implement java/lang/Thread.ensureMaterializedForStackWalk(Ljava/lang/Object;)V
73+
- implement jdk/internal/reflect/Reflection.areNestMates(Ljava/lang/Class;Ljava/lang/Class;)Z
74+
- 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
75+
- implement jdk/internal/misc/Unsafe.pageSize()I and sun/misc/Unsafe.pageSize()I
76+
77+
### Fixed
78+
- correct java/lang/Object.hashCode()I
79+
- correct if_icmpeq and if_icmpne instructions
80+
- correct integer/long div/rem instructions when dividing by zero
81+
- correct double/float div/rem instructions when dividing by zero
82+
- correct jdk/internal/misc/Unsafe.get<type>(...) methods to handle partial byte buffers
83+
- correct field shadowing logic
84+
- correct array index out of bounds behavior
85+
- add class, method type and method handle support to invokedynamic static bootstrap argument resolution
86+
- correct and optimize class polymorphic method lookups
87+
- correct class retrieval for java/lang/invoke/MethodHandleNatives.objectFieldOffset(Ljava/lang/invoke/MemberName;)J
88+
- correct java/lang/invoke/MethodHandleNatives resolve access check logic
89+
- define empty configuration for jdk/internal/module/ModuleBootstrap.boot()Ljava/lang/ModuleLayer;
90+
- use thread execute for internal vm calls
91+
- lookup classes using existing thread context instead of vm
92+
- correct field resolution logic in java/lang/invoke/MethodHandleNatives.resolve()
93+
94+
### Other
95+
- reduced direct usages of Reference
96+
- update compatibility tests to run in parallel
97+
- [**breaking**] refactor class and object fields
98+
- update to Rust 1.88.0
99+
- update JavaObject.to_object(&VM) -> JavaObject.to_object(&Thread)
100+
- [**breaking**] refactor VM invoke interfaces to combine method name and method descriptor argument into a single method signature argument
101+
- refactored file handle management and created thread handles
102+
- [**breaking**] optimize Instruction enum by introducing TableSwitch and LookupSwitch structs
103+
104+
## `ristretto_macros` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/ristretto_macros-v0.21.0...ristretto_macros-v0.22.0) - 2025-07-07
105+
106+
### Other
107+
- update Cargo.toml dependencies
108+
109+
## `ristretto_jit` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/ristretto_jit-v0.21.0...ristretto_jit-v0.22.0) - 2025-07-07
110+
111+
### Fixed
112+
- correct and optimize class polymorphic method lookups
113+
114+
### Other
115+
- [**breaking**] optimize Instruction enum by introducing TableSwitch and LookupSwitch structs
116+
117+
## `ristretto_classloader` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/ristretto_classloader-v0.21.0...ristretto_classloader-v0.22.0) - 2025-07-07
118+
119+
### Added
120+
- 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;
121+
122+
### Fixed
123+
- correct java/lang/Object.hashCode()I
124+
- correct if_icmpeq and if_icmpne instructions
125+
- correct field shadowing logic
126+
- correct and optimize class polymorphic method lookups
127+
- correct java/lang/invoke/MethodHandleNatives resolve access check logic
128+
- correct field resolution logic in java/lang/invoke/MethodHandleNatives.resolve()
129+
130+
### Other
131+
- reduced direct usages of Reference
132+
- remove fields from object instances
133+
- [**breaking**] refactor class and object fields
134+
- add eq trait to value and reference
135+
- [**breaking**] refactor VM invoke interfaces to combine method name and method descriptor argument into a single method signature argument
136+
137+
## `ristretto_classfile` - [0.22.0](https://github.com/theseus-rs/ristretto/compare/ristretto_classfile-v0.21.0...ristretto_classfile-v0.22.0) - 2025-07-07
138+
139+
### Added
140+
- add Eq trait to class file attributes
141+
- 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;
142+
143+
### Other
144+
- [**breaking**] optimize Instruction enum by introducing TableSwitch and LookupSwitch structs
145+
10146
## `ristretto_cli` - [0.21.0](https://github.com/theseus-rs/ristretto/compare/v0.20.0...v0.21.0) - 2025-06-20
11147

12148
### Added

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ keywords = ["java", "jvm"]
2626
license = "Apache-2.0 OR MIT"
2727
repository = "https://github.com/theseus-rs/ristretto"
2828
rust-version = "1.88.0"
29-
version = "0.21.0"
29+
version = "0.22.0"
3030

3131
[workspace.dependencies]
3232
anyhow = "1.0.98"

ristretto_classloader/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ version.workspace = true
1414
flate2 = { workspace = true }
1515
indexmap = { workspace = true }
1616
reqwest = { workspace = true, features = ["json"] }
17-
ristretto_classfile = { path = "../ristretto_classfile", version = "0.21.0" }
17+
ristretto_classfile = { path = "../ristretto_classfile", version = "0.22.0" }
1818
serde = { workspace = true, features = ["derive"] }
1919
serde_plain = { workspace = true }
2020
tar = { workspace = true }

ristretto_cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ path = "src/main.rs"
2525
[dependencies]
2626
clap = { workspace = true, features = ["derive"] }
2727
os_info = { workspace = true }
28-
ristretto_vm = { path = "../ristretto_vm", version = "0.21.0" }
28+
ristretto_vm = { path = "../ristretto_vm", version = "0.22.0" }
2929
tracing = { workspace = true }
3030
tracing-subscriber = { workspace = true, features = ["env-filter"] }
3131

ristretto_jit/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ rust-version.workspace = true
1111
version.workspace = true
1212

1313
[dependencies]
14-
ristretto_classfile = { path = "../ristretto_classfile", version = "0.21.0" }
14+
ristretto_classfile = { path = "../ristretto_classfile", version = "0.22.0" }
1515
thiserror = { workspace = true }
1616

1717
[target.'cfg(target_family = "wasm")'.dependencies]

ristretto_macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ proc-macro = true
1616
[dependencies]
1717
proc-macro2 = { workspace = true }
1818
quote = { workspace = true }
19-
ristretto_classfile = { path = "../ristretto_classfile", version = "0.21.0" }
19+
ristretto_classfile = { path = "../ristretto_classfile", version = "0.22.0" }
2020
syn = { workspace = true, features = ["full"] }

ristretto_vm/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ path = "src/lib.rs"
1818
# Add this section for build dependencies
1919
[build-dependencies]
2020
phf_codegen = { workspace = true }
21-
ristretto_classfile = { path = "../ristretto_classfile", version = "0.21.0" }
21+
ristretto_classfile = { path = "../ristretto_classfile", version = "0.22.0" }
2222
syn = { workspace = true }
2323
walkdir = { workspace = true }
2424

@@ -34,10 +34,10 @@ filetime = { workspace = true }
3434
indexmap = { workspace = true }
3535
os_info = { workspace = true }
3636
phf = { workspace = true }
37-
ristretto_classfile = { path = "../ristretto_classfile", version = "0.21.0" }
38-
ristretto_classloader = { path = "../ristretto_classloader", version = "0.21.0" }
39-
ristretto_jit = { path = "../ristretto_jit", version = "0.21.0" }
40-
ristretto_macros = { path = "../ristretto_macros", version = "0.21.0" }
37+
ristretto_classfile = { path = "../ristretto_classfile", version = "0.22.0" }
38+
ristretto_classloader = { path = "../ristretto_classloader", version = "0.22.0" }
39+
ristretto_jit = { path = "../ristretto_jit", version = "0.22.0" }
40+
ristretto_macros = { path = "../ristretto_macros", version = "0.22.0" }
4141
stacker = { workspace = true }
4242
sysinfo = { workspace = true }
4343
sys-locale = { workspace = true }

0 commit comments

Comments
 (0)