ristretto
Releases
v0.11.1
v0.11.1
Nov 17 2024 at 16:51 UTC
🐞 Bug fixes
- add java.lang.Class.getComponentType()Ljava/lang/Class; for Java 8 (#130)
- enable legacy Java system property initialization (#128)
- initialize VM; call System.initPhase2() and System.initPhase3() (#127)
- add jdk.internal.misc.Unsafe put<primitive> methods (#126)
- add jdk.internal.misc.Unsafe.copyMemory0(Ljava/lang/Object;JLjava/lang/Object;JJ)V (#125)
- add Class.componentType for array classes (#124)
- correct implementation of jdk.internalmisc.Unsafe for int and long (#123)
- add jdk.internal.misc.CDS.getCDSConfigStatus()I (#122)
- add java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; and java.security.AccessController.getStackAccessControlContext()Ljava/security/AccessControlContext; (#121)
- remove unnecessary thread creation for new objects (#119)
📦 Build system
- update dist to 0.25.1 (#131)
🛠️ Other improvements
- update method registry to conditionally register methods based on java version (#129)
- add primordial thread (#120)
v0.11.0
v0.11.0
Nov 13 2024 at 21:28 UTC
💥 Breaking changes
- refactor VM.load_class() -> Thread.class() and VM.new_object() -> VM.object() (#116)
- implement TryInto for Value, Reference and Object (#105)
✨ Enhancements
- add string support to RustValue (#115)
- add VM.new_object() (#114)
- update class loader to support primitive classes (#109)
- add JavaObject trait (#106)
- implement TryInto for Value, Reference and Object (#105)
🐞 Bug fixes
- add Class.getDeclaringClass0()java/lang/Class, Class.getSigners()Ljava/lang/Object;, Class.isHidden()Z, Class.setSigners(Ljava/lang/Object;)V (#113)
- add Class.getClassAccessFlagsRaw0()I, Class.getClassFileVersion0()I and Class.getPermittedSubclasses0()[Ljava/lang/Class; (#112)
- add Class.isInterface()Z (#111)
- update Unsafe.compareAndSetReference() to support Objects (#110)
- implement jdk.internal.misc.VM.initializeFromArchive(Ljava/lang/Class;)V, jdk.internal.misc.Unsafe.addressSize0()I, jdk.internal.misc.Unsafe.isBigEndian0()Z, jdk.internal.misc.Unsafe.unalignedAccess0()Z (#104)
- correct is_assignable_from, checkcast and instanceof array handling (#103)
- add awt native initIDs() methods (#101)
🛠️ Other improvements
- refactor invoke (#118)
- delegate VM.object() -> Thread.object() (#117)
- refactor VM.load_class() -> Thread.class() and VM.new_object() -> VM.object() (#116)
- improve object debug output (#108)
- update parent reference (#107)
- remove explicit use of box pin (#102)
v0.10.1
v0.10.1
Nov 1 2024 at 05:25 UTC
✨ Enhancements
- add environment variable support (#98)
🐞 Bug fixes
- pass command line arguments as a string array to main methods (#97)
- correct invokedynamic instruction debug logging (#96)
- create array class for anewarray instruction (#95)
- correct invokedynamic bytecode serialization (#93)
🛠️ Other improvements
- simplify native method implementations (#94)
- move additional logic into instruction functions (#92)
- refactor VM internals for threading support (#91)
v0.10.0
v0.10.0
Oct 21 2024 at 18:15 UTC
💥 Breaking changes
- implement java.home system property (#80)
✨ Enhancements
- implement multianewarray instruction (#89)
- implement system properties (#82)
- implement athrow instruction (#78)
🐞 Bug fixes
- correct bug setting StackTraceElement.declaringClass (#90)
- update cli to print stack trace when a throwable is returned from the vm (#88)
- implement java.io.WinNTFileSystem.initIDs() (#87)
- implement sun.nio.fs.UnixNativeDispatcher (#86)
- implement java.io.UnixFileSystem.getBooleanAttributes0() (#85)
- correct handling of finally blocks (#84)
- implement jdk.internal.loader.NativeLibraries.findBuiltinLib() (#83)
- implement java.home system property (#80)
- correct invoke instruction error messages (#77)
- correct exception table handler_pc offsets to/from instructions/bytes (#75)
- remove unnecessary clone of method code (#71)
📦 Build system
- update to cargo-dist 0.23.0 (#81)
- update corretto versions (#79)
- update to Rust 1.82.0 (#73)
🛠️ Other improvements
- update corretto versions (#79)
- refactor default runtime version constant (#76)
- rename CodeException to ExceptionTableEntry to better align with JVM specification naming (#74)
- implement async Thread.sleep() and Thread.yield() (#72)
- rename RuntimeError to InternalError (#70)
v0.9.0
v0.9.0
Oct 15 2024 at 16:26 UTC
💥 Breaking changes
- update vm to be async (#56)
- rename VM.class() to VM.load_class() and VM.load() to VM.class() (#68)
✨ Enhancements
- add stack size to frame debug logging (#65)
- enable wasm32 builds (#61)
- update vm to be async (#56)
- implement Reflection.getCallerClass() (#55)
- implement native method CDS.getRandomSeedForDumping()J (#48)
- add support for invoking interface method ref (#47)
🐞 Bug fixes
- stub implementation of java.lang.ref.Reflection.refersTo0() (#69)
- correct invokeinterface instruction class resolution (#67)
- increase windows stack size to 8MB (#66)
- implement Class.getSuperclass() and Class.isAssignableFrom() (#64)
- correct invokespecial instructions to only use methods from the class hierarchy (#63)
- implement java.lang.Throwable.fillInStackTrace() (#62)
- implement java.lang.System.mapLibraryName() (#60)
- implement java.lang.System.identityHashCode() (#59)
- implement java.io.UnixFileSystem.initIDs() (#58)
- implement Class.is_array (#57)
- corrected bug where lushr instruction was using incorrect mask (#50)
- correct class interface loading and association (#49)
🛠️ Other improvements
- rename VM.class() to VM.load_class() and VM.load() to VM.class() (#68)
- update frame to have interior mutability (#54)
- update Frame to reference CallStack (#53)
- update CallStack to store reference to VM (#52)
- update call stack to have interior mutability of frames (#51)
v0.8.1
v0.8.1
Oct 11 2024 at 19:16 UTC
🐞 Bug fixes
- correct constant pool formatted string values (#45)
- correct bipush to support negative values; return void from CDS.initializeFromArchive() (#44)
🛠️ Other improvements
- remove unnecessary instanceof option check (#46)
v0.8.0
v0.8.0
Oct 10 2024 at 23:28 UTC
💥 Breaking changes
- initial vm (#43)
- removed cycle between ClassLoader and Class (#34)
- improve class loader interface (#33)
✨ Enhancements
- initial vm (#43)
- update lookupswitch instruction to use an IndexMap (#35)
- improve class loader interface (#33)
- add reserved impdep1 and impdep2 instructions (#32)
🐞 Bug fixes
- removed cycle between ClassLoader and Class (#34)
v0.7.0
v0.7.0
Aug 22 2024 at 03:42 UTC
💥 Breaking changes
- correct definition of goto_w and jsr_w definitions (#31)
- optimize jar class loader by deferring class file loading (#28)
✨ Enhancements
- add jar manifest (#30)
🐞 Bug fixes
- correct definition of goto_w and jsr_w definitions (#31)
📦 Build system
- enable dashmap inline feature (#29)
🛠️ Other improvements
- optimize jar class loader by deferring class file loading (#28)
- add class loader benchmarks (#27)
v0.6.0
v0.6.0
Aug 15 2024 at 19:14 UTC
💥 Breaking changes
- remove Default trait from class loader (#23)
- change class loader function names (#22)
✨ Enhancements
- initial Java runtime library support (#24)
🐞 Bug fixes
- correct panics with invalid instructions (#25)
📖 Documentation
- add runtime class loader example (#26)
🛠️ Other improvements
- remove Default trait from class loader (#23)
- change class loader function names (#22)
v0.5.0
v0.5.0
Aug 9 2024 at 05:03 UTC
💥 Breaking changes
- remove ClassFile.source_file() (#16)
✨ Enhancements
- initial classloader crate (#20)
- add java 24 version (#17)
📦 Build system
- fix code coverage reporting (#21)
- add wasm32 builds (#18)
🛠️ Other improvements
- remove ClassFile.source_file() (#16)
- add deserialization fuzz testing (#15)
v0.4.0
v0.4.0
Jul 27 2024 at 02:15 UTC
💥 Breaking changes
- remove unknown version support (#14)
- correct mutf8 encoding panics discovered with fuzz tests (#12)
✨ Enhancements
- add ConstantPool try_get_ functions (#13)
🐞 Bug fixes
- correct mutf8 encoding panics discovered with fuzz tests (#12)
🛠️ Other improvements
- remove unknown version support (#14)
v0.3.0
v0.3.0
Jul 24 2024 at 03:07 UTC
💥 Breaking changes
- use instruction enum instead of bytes for code (#10)
✨ Enhancements
- use instruction enum instead of bytes for code (#10)
- improve class string format (#11)
- add read class example (#7)
🐞 Bug fixes
- correct tableswitch and lookupswitch serialization (#9)
v0.2.2
v0.2.2
Jul 18 2024 at 03:58 UTC
✨ Enhancements
- optimize constant pool access by utilizing a placeholder at index 0 (#6)
🐞 Bug fixes
- add future unknown Java version support (#5)
v0.2.1
v0.2.1
Jul 14 2024 at 21:02 UTC
✨ Enhancements
- add methods to the constant pool to simplify adding constants (#4)
- add as_code() function to class, method and field access flags (#2)
- improve Display output to include constant pool, code and line table (#1)
📖 Documentation
- add helloworld example (#3)
v0.2.0
v0.2.0
Jul 10 2024 at 18:11 UTC
v0.1.0
v0.1.0
Jul 9 2024 at 05:48 UTC
✨ Enhancements
- initial release