(https://img.shields.io/badge/slack-join%20channel-inactive)
GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Clojure, Kotlin, and LLVM-based languages such as C and C++. It offers the following benefits:
- Performance: GraalVM leverages years of research into compiler technology to give you better peak performance on average than any other JVM.
- Ahead-of-time compilation: Ahead-of-time (AOT) compiled native images improve application start-up time and reduce memory footprint.
- Interoperability: Combining programming languages in the same runtime maximizes your resources and increases code efficiency. Use whichever programming language is best fit for purpose, in any combination. Match the correct code to the use case you need.
- Embeddability: GraalVM Polyglot SDK removes isolation between programming languages and gives you a next-generation runtime environment where you no longer need to write separate applications to use different languages.
- Tooling: GraalVM takes advantage of JVM-based tooling and provides a common set of tools, such as debugging and profiling, that you can use for all your code.
The project website at https://www.graalvm.org describes how to get started, how to stay connected, and how to contribute.
The GraalVM main source repository includes the following components:
-
GraalVM SDK contains long term supported APIs of GraalVM.
-
GraalVM compiler written in Java that supports both dynamic and static compilation and can integrate with the Java HotSpot VM or run standalone.
-
Truffle language implementation framework for creating languages and instrumentations for GraalVM.
-
Tools contains a set of tools for GraalVM languages implemented with the instrumentation framework.
-
Substrate VM framework that allows ahead-of-time (AOT) compilation of Java applications under closed-world assumption into executable images or shared objects.
-
Sulong is an engine for running LLVM bitcode on GraalVM.
-
TRegex is an implementation of regular expressions which leverages GraalVM for efficient compilation of automata.
-
VM includes the components to build a modular GraalVM image.
-
VS Code provides extensions to Visual Studio Code that support development of polyglot applications using GraalVM.
- Open a GitHub issue for bug reports, questions, or requests for enhancements.
- Report a security vulnerability to [email protected]. For additional information see Reporting Vulnerabilities guide.
GraalVM allows running of following languages which are being developed and tested in related repositories with GraalVM core to run on top of it using the Truffle framework and the GraalVM compiler. These are:
- GraalJS - JavaScript (ECMAScript 2019 compatible) and Node.js 10.16.3
- FastR - R Language 3.6.1
- GraalPython - Python 3.7
- TruffleRuby - Ruby Programming Language 2.6.2
- SimpleLanguage - A simple demonstration language for the GraalVM.
Each GraalVM component is licensed:
- Truffle Framework and its dependency GraalVM SDK are licensed under the Universal Permissive License.
- Tools project is licensed under the GPL 2 with Classpath exception.
- TRegex project is licensed under the GPL 2 with Classpath exception.
- GraalVM compiler is licensed under the GPL 2 with Classpath exception.
- Substrate VM is licensed under the GPL 2 with Classpath exception.
- Sulong is licensed under 3-clause BSD.
- VM is licensed under the GPL 2 with Classpath exception.
- VS Code extensions are distributed under the UPL 1.0 license.