Today we released GraalVM 1.0-rc3 with both the Community Edition and the Enterprise Edition binaries publicly available for download.
GraalVM is a large project consisting of several components, and we are highlighting the most important changes to those separately.
Note that the components here are listed in no particular order.
The release notes of the previous release can be found here.
GraalVM for Java developers (GraalVM + compiler)
- Updated the underlying JDK version to “1.8.0_172” from “1.8.0_171”. You can find the JDK release notes at the Oracle Technology Network website.
- Fixed a rare NullPointerException during JVMCI initialization.
Native image generation
- Added support for
java.lang.reflect.Proxysupporting both automatic detection and manual configuration. Please refer to the documentation on GitHub for the details.
- Added support for
Classloader.getResource()and similar methods.
- Added support for loading services through the
- Fixed a ClassCastException on generating native images for profile-guided-optimizations (with the
--pgo-instrumentcommand line option).
- Enabled code sharing between
Contextswith the same
- Added support for BigInt arithmetic expressions.
- Added a flag for the Nashorn compatibility mode
--js.nashorn-compat, for the details and migration from Nashorn please refer to the documentation.
- Rename the flag for the V8 compatibility mode to
More details can be found in the project changelog on GitHub.
The full changelog is available in the GitHub repository, but here are some of the most notable changes.
- Added ability to call
is_a?on foreign objects.
Qnil/Qtrue/Qfalse/Qundefcan now be used as initial value for global variables in C extensions.
- Fixed: SIGPIPE is correctly caught on SubstrateVM, and the corresponding
Errno::EPIPEwhen the read end of a pipe or socket is closed.
- Fixed determining the source encoding for
eval()based on the magic encoding comment.
Additionally, we implemented a number of performance improvements for
eval(), String substitutions, reading from
IO and more.
GraalVM Python implementation is still in the early stages, but we’re making progress towards the goal of running applications which use SciPy.
- Various C-API improvements allow to run simple NumPy examples.
- Implemented buffered I/O and more encodings support, which enables working with files through the standard
openfunction without having to force unbuffered access, and enables working with files that have encodings other than utf-8.
mathmodule functions are now implemented and work correctly.
randommodule substitute was removed and we now run the standard library random module to be fully compatible.
- Improved thread-safety in the embedded scenarios when using Python contexts from multiple threads.
More details are available in the project’s changelog on GitHub.
- Added more missing R builtins and C API functions, see CHANGELOG for a complete list.
- Simplified installation, the script that configures FastR for the current system
jre/languages/R/bin/configure_fastrdoes not require Autotools anymore.
- Added configuration files to allow users to build a native image of the FastR runtime, which reduces the startup time. Run
jre/languages/R/bin/install_r_native_imageto build the image.
- Fixed an issue with the plotting window not displaying anything after it was closed and reopened.
LLVM interpreter for C/C++ & other native languages
- New builtins
polyglot_as_typed, which can be used to dynamically attach types to polyglot objects.
- Implementers of
TruffleObjectcan now respond to the
GetDynamicTypemessage to provide a type when an object is accessed from LLVM code.
More details are available in the project changelog.
API changes for GraalVM integrators
- Added support for logging in Truffle languages and instruments.
- Removed deprecated
To see the list of changes to the APIs please refer to the project changelogs:
We improved memory footprint and introduced several UI improvements for cleaner more responsive experience of VisualVM. In addition to that, there are the following improvements:
- Added recognition of the LLVM interpreter (Sulong) processes.
- Improved displaying logical values of guest languages’ objects.
- Improved the Object Query Language (OQL) Console for inspecting memory dumps functionality — sorting, filtering, aggregation, unlimited number of results now work.
- Multiple inspector sessions for multiple polyglot engines can run on the same port now.
We will continue working on improving stability before the GA 1.0 release. If you haven’t yet done so, please give GraalVM a try on your application.
Thank you from the GraalVM team!