scala-nativeが出ました。
Scalaは JVM 上で動かす事が出来る言語なのですが、このScala言語をllvmでコンパイルしてバイナリで動かせるようになったのが scala-native
です。
正直jvmがコンパイル遅くて起動も遅いのでそんなに好きではなくて、趣味ではよくRust
を触っています。それが今回 Scala が Nativeコードを吐くようになったので試してみました。
はじめに
2016/05/15の時点では、 scala-native に簡単なhello worldが含まれていませんでしたので作ってみようと思います。
こちらの記事は、 Getting started with scala-native を参考にしています。
IntelliJ IDEA で リポジトリ(ディレクトリを読み込む)
IntelliJ IDEA で scala-native
を開いて見たらエラーが出ました。解決策としてはhomebrew install sbt
で入れたsbtの launch.jar を SBT Option で指定してあげたら動きました。
build.sbt の修正
build.sbt を 開いたら最後の行に
lazy val helloworldNative = project.in(file("helloworld-native")). settings(libSettings). settings( nativeVerbose := true, nativeClangOptions := Seq("-O2") ). dependsOn(scalalib)
を追加します。
なぜか、こちらの環境では ScalaNativePlugin, ScalaNativePluginInternal
が赤くなり依存関係の解決ができませんがコンソールでのコンパイルは通ります。
次に、 helloworld-native
というディレクトリと
その中に、 helloworld.scala
を作ります。
ファイル内容は下のとおりです。
package helloworld import scalanative.native._, stdlib._ object Main { def main(args: Array[String]): Unit = { fprintf(__stdoutp, c"Hello World: Scala Native!!!") } }
実行
コンソールからsbtを起動し、sbtシェルに入ったら下記のように実行します。
project rtlib publishLocal project nscplugin publishLocal project helloworldNative run
Hello World: Scala Native!!!
と実行されたら成功です。
バイナリが作られたか確かめる
run
かcompile
を実行すると、バイナリが下記ディレクトリに作られます。./target/scala-2.11/helloworldnative-out
これをそのまま実行することができます。
サイズは 14Kでした。