Slide 1

Slide 1 text

Scala Native @yubessy 0x64 Reboot #10 " "

Slide 2

Slide 2 text

: : ( ) x -> o +

Slide 3

Slide 3 text

Scala Native Scala Scala JVM -> Java Scala Native -> Java

Slide 4

Slide 4 text

LLVM (?) Scala Native Scala SBT

Slide 5

Slide 5 text

$ sbt new scala-native/scala-native.g8 object Main { def main(args: Array[String]): Unit = println("Hello, world!") } $ sbt run Hello, World!

Slide 6

Slide 6 text

LLVM https://github.com/okapies/scala-native-example bonacci

Slide 7

Slide 7 text

(rec) def fib(n: Long): Long = n match { case 0 => 0 case 1 => 1 case _ => fib(n - 2) + fib(n - 1) }

Slide 8

Slide 8 text

(tail rec) def fibImpl(n: Long, a: Long, b: Long): Long = n match { case 0 => a case _ => fibImpl(n - 1, b, a + b) } def fib(n: Long): Long = { fibImpl(n, 0, 1) }

Slide 9

Slide 9 text

(mut rec) def fib(n: Long): Long = n match { case 0 => 0 case _ => fibS(n - 1) } def fibS(n: Long): Long = n match { case 0 => 1 case _ => fib(n - 1) + fibS(n - 1) }

Slide 10

Slide 10 text

(μs) rec tail rec mut rec JAR 74801223 262 67248872 Native -O0 168336051 4 164421481 Native -O2 77311107 4 34026913 Native -O0 ( ) rec, mute rec JAR . tail rec Native -O2 ( ) mute rec JAR

Slide 11

Slide 11 text

Scala Native LLVM