- Added
java.RuntimeResourceId
to allow customizing the truffle resource used to locate the java standard library used by espresso. The resource called "espresso-runtime-" will be used. By default, "jdk21" then "openjdk21" are attempted. - Espresso can now use TRegex to execute java.util.regex patterns. TRegex offers better performance than the standard implementation. Use
java.UseTRegex
to enable this engine. - The interop
readBuffer
method can now be used from the guest Interop API and guest ByteBuffer objects implement this interop message. - Many issues with espresso's JDWP implementation were fixed, improving the user experience when debugging with a Java IDE.
- Adds the
org.graalvm.continuations
package, along with support for continuations. seedocs/continuations.md
for more details.
- Added support for transparently converting common JDK exception types that flow from host to an embedded Espresso context.
- Added support for foreign
BigInteger
when calling espresso via interop. AdoptedfitsInBigInteger
andasBigInteger
Truffle interop messages.
- Add
java.EnablePreview
option (--enable-preview
command line option). - Support JDK 21. Note that virtual threads are implemented as bound thread, not through continuations.
- Improved Management API implementation.
- Added support for Language sharing.
- Added boolean option
java.BuiltInPolyglotCollections
that enables transparent conversion of host collection objects that flows into an embedded Espresso context. Supported interfaces are: List, Set, Map, Iterator and Iterable.
- The Truffle InteropLibrary has/getMetaParents API is now fully implemented.
- Support JDK 20.
- Support foreign
Instant
,TimeZone
,Time
,Date
,Duration
when calling espresso via interop. - Support calling overloaded and varargs methods through interop.
- Improve interop with foreign exceptions. A stack trace is now available and type mapping can be used to explicitly map exceptions.
- Interop invokable members of espresso objects can now also be read.
- Added the
addPath
invokable member to Espresso Bindings ifjava.UseBindingsLoader=true
. Allows adding new path to the classloader associated with the bindings. - Added option
java.PolyglotTypeConverters
that can be set to declare a type conversion function that maps a host meta qualified name to a type converter class in an embedded Espresso context. - Added option
java.PolyglotInterfaceMappings
that can be set to a semicolon-separated list of 1:1 interface type mappings to automatically construct guest proxies for host objects that implement declared interfaces in the list.
- Fix some conversions at interop boundaries: when an espresso-to-espresso conversion was seen, then an espresso-to-primitive conversion happens. The latter would fail.
- Fix exit status on uncaught exceptions in the main thread.
- Added HotSwap support for changing the super class and implemented interfaces.
- Added HotSwap support for 'Move Field in Hierarchy' refactoring where state is preserved.
- HotSwap support for changing fields and class access modifiers are now turned on by default.
- The truffle
AbstractTruffleException
API is now fully adopted. - Better integration with the Truffle safepoint API
- Add new implementation for reading jimages (
libs/modules
) . It is used by default,--java.JImage=native
can be used to revert to the old implementation. - New command:
<ProcessReferences>
. Allows embedders to manually trigger reference processing in single-threaded mode.
- New HotSwap support for changing fields. Enable with the
--java.ArbitraryChangesSupport=true
experimental flag. - New HotSwap support for changing class access modifiers. Enable with the
--java.ArbitraryChangesSupport=true
experimental flag. - Added support for running native code with the LLVM runtime. This can be enabled with the
--java.NativeBackend=nfi-llvm
experimental flag. Native JDK libraries can be installed withgu install espresso-llvm
. When installed, those libraries will be picked up by thenfi-llvm
native backend. This allows to bypass some limitations of the default native backend (nfi-dlmopen
). In particular, it avoids crashes that can happen on some glibc versions when using multiple contexts.
- Espresso adopted the new Frame API.
- Fix Strings sometimes not properly displayed in the debugger view through JDWP
- Java 17 guest and host support.
- Support using interop buffer-like object as a
byte[]
in espresso. - Add buffer interop messages to the explicit interop API.
- The Polyglot API is not enabled by default anymore. When needed, contexts should be created with the
java.Polyglot
option set totrue
. - The HotSwapAPI is not auto-enabled by debugging anymore. When needed, contexts should be created with the
java.HotSwapAPI
option set totrue
. - Avoid illegal reflective access warnings with host Java >= 11.
- The Static Object Model has moved to Truffle.
- On-Stack-Replacement using the new Truffle bytecode OSR API.
- Detect and report trivial methods.
- Enable saturated type flows.
- Performance and functional related to JDWP.
- Fix some crashes observed when using the JNA.