GraalVMとTruffle
GraalVM
Graalは、Java Virtual Machine(JVM)用の新しいJITコンパイラです。そしてGraalVMとは、GraalコンパイラをもったJVMです。詳しくは、Oracle Labs GraalVM: Programming Languages and Runtimes Overviewを参照。
Graalは、Javaプログラミング言語以外にも、JavaScriptやRubyなどのスクリプト言語をJVM上で動かす際のJITコンパイラにもなるようです。
ここで、少し触ってみます。Oracle Labが公開しているバイナリをダウンロードします(私は GraalVM preview for Linux (v0.19), Development Kit をダウンロードしました)。ダウンロードするにはOTNアカウントを作る必要があると思います。
まずはJava。
$ ./graalvm/bin/java -version java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.71-b01-internal-jvmci-0.23, mixed mode) $ cat A.java class A { public static void main(String[] args) { System.out.println("Hello world!"); } } $ ./graalvm/bin/java A Hello world!
$ ./graalvm/bin/ruby -v jruby 9.1.7.0-SNAPSHOT (2.3.1) 2016-12-07 00938d2 Java HotSpot(TM) 64-Bit Server VM 25.71-b01-internal-jvmci-0.23 on 1.8.0_111-b14 +jit [linux-x86_64] $ cat A.rb print "Hello world!\n" $ ./graalvm/bin/ruby A.rb Hello world!
Truffle
そして、以下のTruffleを使えば、オレオレプログラミング言語を作ってJVM上で動かすことができるらしいです。(んで、JITコンパイルも使える?)
GitHub - graalvm/truffle: The Truffle Language Implementation Framework.
以下がサンプル。これを参考にすれば言語作れるかも。
GitHub - graalvm/simplelanguage: A simple example language built using the Truffle API.
こうやって使える。
$ cat tests/HelloWorld.sl function main() { println("Hello World!"); } $ ./sl tests/HelloWorld.sl == running on Graal Truffle Runtime Hello World!
やってみたいけど、まだまだ調べが必要かな・・・