The Polyglot engine of the GraalVM allows the execution and interoperability of language interpreters for additional programming languages. This release of the GraalVM contains language interpreters for five well-known languages (JavaScript, Python, Ruby, R, and LLVM), and a teaching language (SimpleLanguage).
Graal.js is an ECMAScript version 2017 compliant JavaScript engine. It is based on the Polyglot engine and uses Graal as compiler, guaranteeing high performance and language interoperability with other Truffle-based language engines.
This release provides an execution system for JavaScript applications. You can execute ECMAScript 6 compliant JavaScript programs on the command-line shell using the js command included in the release:
# js mySourceFile.js
Take care to actually use the js command of this release, e.g. by adding the bin directory to the path:
# export PATH=/path/to/GraalVM/bin:$PATH
You can also use the node executable to execute Node.js applications. Several example applications can be found in the example/node directory of the release:
# node myNodeApplication.js
For more details, see the README file in the release.
Graal.Python is a Python 3 implementation in the early stages of development. As such, it is not ready for any serious applications beyond simple use cases and scripting.
Although the python interpreter is in the early stages, simple scripts already run.
# python my_source_file.py
TruffleRuby is high performance implementation of the Ruby programming language, compatible with MRI 2.3.
TruffleRuby is progressing fast but is currently probably not ready for you to try running your full Ruby application on. Support for critical C extensions such as OpenSSL and Nokogiri is missing. TruffleRuby is ready for experimentation and curious end-users to try on their gems and smaller applications.
Peak Performance: Using the Graal compiler, TruffleRuby achieves performance on benchmarks and real application code that is well beyond anything possible with current implementations of Ruby.
Fast Metaprogramming: TruffleRuby is designed to optimise Ruby as it is actually used - metaprogramming included. Operations like dynamic sends, dynamically defined methods, bindings and eval are all fast.
# ruby my_source_file.rb
TruffleRuby currently cannot run gem install out of the box because of incomplete support for OpenSSL and Nokogiri. However there is a workaround which can be used to get both gem install and bundler install working.
ruby -r bundler-workarounds -S gem install bundler
ruby -r bundler-workarounds -S bundle install
ruby -r bundler-workarounds -S bundle update
`bundle exec` does not need the `bundler-workarounds` module loaded.
ruby -S bundle exec bin/rails server
FastR is an Graal based implementation of the R language. It uses the latest Graal technology to achieve high performance but also tries to not compromise on compatibility with GNUR.
The R language shell can be started with:
# ./bin/R
R scripts can be run with the following command:
# ./bin/RScript mySourceFile.js
FastR is still in an experimental stage. Please expect rough edges and non-working language features: