Awesome Graal
CircleCI: Graal JDK8 (Linux) | GraalVM Suite JDK8 (Linux)
AdoptOpenJDK build farm: Linux
Graal compiler (JDK8, python 2.7, 3.6 & 3.7): | GraalVM Suite (JDK8, python 2.7, 3.6 & 3.7): | Dataiku DSS on GraalVM: | Grakn on GraalVM: | Jupyter-Java on GraalVM: | MLPMNist using DL4J on GraalVM: | Zeppelin on GraalVM:
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics.
This repo is dedicated to computer engineers/scientists, compiler/VM engineers, developers, open-source enthusiatics, Graal/GraalVM/Truffle fans and all other professions that take interest in these topics. To make learning interesting and to create a place to easily find all the necessary material. Please contribute, watch, star, fork and share the repo with others in your community.
Languages & Platforms
Java & other JVM languages
- Why?
- Getting Started: Running Java
- Examples
- Dataiku Data Science Studio | folder
- Java Performance Examples
- Java stream API benchmark
- Grakn/Graql graph database running on the GraalVM and other JVMs | folder
- Java/Kotlin Native Example
- Native Image Example
- Native-image: using Profile Guide Optimisation options | Slide 18
- Command line apps with Clojure and GraalVM
- GraalVM Polyglot with Clojure and JavaScript
- Clojure: GraalVM Native Image HTTPS Support
- Building native Clojure images with GraalVM
- Clojure Hello World example | folder
- GraalVM with Groovy | native image
- GraalVM and Scala | Scala compiler faster & slimmer
- Scala-days-2018 demo
- Compatibility
- GraalVM Updater
- Reference Manual: JVM languages
- Polyglot Reference | Top 10 Things To Do With GraalVM
- Tools Reference
- Native Images
Python, R, Ruby
- Why?
- Get Started: Running Python
- Get Started: Running R
- Get Started: Running Ruby
- Examples
- JavaScript, Java, R Polyglot Application
- R's graphical output in Java based desktop application
- FastR Node.js interop example
- A simple, straightforward implementation of "Conway's Game of Life"
- rJava package and built-in Java interoperability in FastR
- Embedding R as a scripting language into JVM applications
- Weather Predictor Application: R, Ruby, Java, NodeJS/JS
- GraalVM demos: Another Polyglot JavaScript, Java, R application
- Galaaz Demo: GraalVM, TruffleRuby, FastR, ggplot2, gridExtra
- GraalVM demos: Polyglot JavaScript, Java, R application
- GraalVM demos: Spring Boot using R packages demo
- Compatibility
- GraalVM Updater
- Reference Manual: Python
- Reference Manual: R
- Reference Manual: Ruby
- Polyglot Reference | Top 10 Things To Do With GraalVM
- Tools Reference
- Native Images
JRuby
Javascript / NodeJS
- Why?
- Getting Started
- Examples
- JavaScript, Java, R Polyglot Application
- Running JavaScript Functions as Stored Procedures in Database
- Oracle Database Example
- GraalVM demos: Another Polyglot JavaScript, Java, R application
- Galaaz Demo: GraalVM, TruffleRuby, FastR, ggplot2, gridExtra
- GraalVM demos: Polyglot JavaScript, Java, R application
- GraalVM Updater
- Compatibility
- Reference Manual
Polyglot
- Getting started: combined languages
- Examples
- Language Compatibility Tool
- GraalVM Updater
- Reference Manual | Top 10 Things To Do With GraalVM
- GraalVM as a platform: Embed languages
- IPolyglot: A polyglot Jupyter kernel for the GraalVM | HPI Polyglot Programming Seminar by Fabio Niephaus
LLVM
Wasm
- Awesome WebAssembly Runtimes
- Towards a WebAssembly standalone runtime on GraalVM
- Running WebAssembly on the JVM
- Discussions on oracle/graal GitHub
- GraalWASM: current WebAssembly for GraalVM work by the good folks from the GraalVM team
- WebAssembly for Java developers: slides, code and Talk: Devoxx/VoxxedDays video by Dmitry Alexandrov
- Talk: Rust, WebAssembly, and the future of Serverless by Steve Klabnik
- Talk: An Introduction to WebAssembly by Guy Royse
- Blog: GraalVM now supports WebAssembly!
native-image
- What is native-image?
- Docs
- Reference manual
- Security guide
- Other resources
- Blogs
- see 'Native-image' in Blog posts
- Workshop resources
- Examples
Third-Party Language Implementations (not officially supported by GraalVM)
- SOMns, a Simple Newspeak Implementation
- grCUDA, Polyglot CUDA integration for the GraalVM
- GraalSqueak, a Squeak/Smalltalk bytecode interpreter with support for the Smalltalk programming environment
Your Platforms, languages and Tools
Your Platforms
Your Languages and Tools
- Why?
- Reference Manual
- Implement your language
- Examples
- Implement your tools
Performance (startup & runtime)
- Are We Fast Yet? Comparing Language Implementations with Objects, Closures, and Arrays - by @smarr
- Investigating startup with bytestacks
- Comparison bash script: graal
- Better Java Streams performance with GraalVM
- Under the hood of GraalVM JIT optimizations
- GraalVM 19.1: Compiling Faster
- Isolates and Compressed References: More Flexible and Efficient Memory Management via GraalVM
- GraalVMβs JavaScript engine on JDK11 with high performance
- Compiler Explorer - online IDE, run code, see asm, rustic compiler
Related JEPs
- JEP 317: Experimental Java-Based JIT Compiler - OpenJDK
- JEP 243: Java-Level JVM Compiler Interface - OpenJDK
- JEP 295: Ahead-of-Time Compilation
- ...others
Community
- graal-dev mailing list
- graal-changes mailing list
- GraalVM slack channel invite
- GraalVM slack channel
- Gitter channels are being phased out, please join the slack channels (links above)
Github links
See Github links
Mercurial links
- OpenJDK Graal forest
- Compiler
- JavaScript parser
- JVM Compiler Interface for JDK8
- JVM Compiler Interface for JDK9
- Deprecated
Download links
- GraalVM.org Downloads
- Oracle Labs GraalVM
- Homebrew Tap for GraalVM:
brew cask install graalvm/tap/graalvm-ce
- Graal and Truffle Builds (JDK8/OpenJDK8)
- jruby graal-vm-0.19 on Homebrew - Libraries.io
Projects, Wikipedia pages, discussion forums & blog posts
Project(s)
Wikipedia page(s), OpenJDK Wiki, collection of useful links
- Graal (compiler) - Wikipedia
- OpenJDK Graal - Wiki
- Graal/GraalVM/Truffle official docs
- Graal/GraalVM/Truffle official Reference Manual
- OpenJDK Graal - Publications and Presentations
- GraalVM: Official list of publications
- GraalVM in the press
- Official FAQ on Graal/GraalVM/Truffle
- List of useful resources from Stefan Marr
Discussion forum(s)
- Graalvm (Programming) Questions & Answers - TechQA
- Oracle's Graal-JVM / Truffle for Scala? : scala - Reddit
- Reddit discussions on GraalVM and Scala
- Graal and Clojure discussions
- JIT compiling a subset of Python to x86-64
Blog posts
See Blog posts
Papers, presentations/slides & videos
See Papers, presentations/slides & videos
Hands-on pages
-
General
-
Graal
-
GraalVM
-
Truffle
-
FastR
Special topics (Java, Graal, GPUs, Accelerators, etc...)
See Special topics
Contributing
Contributions are very welcome, please share back with the wider community (and get credited for it)!
Please have a look at the CONTRIBUTING guidelines, also have a read about our licensing policy.