Scala Native

Your favourite language gets closer to bare metal.

Low-level primitives

@struct class Vec(
  val x: Double,
  val y: Double,
  val z: Double

val vec = stackalloc[Vec] // pointer to stack allocation
!vec = new Vec(1, 2, 3)   // store value to stack
length(vec)               // pass by reference

Pointers, structs, you name it. Low-level primitives let you hand-tune your application to make it work exactly as you want it to. You're in control.

Seamless interop

@extern object stdlib {
  def malloc(size: CSize): Ptr[_] = extern

val ptr = stdlib.malloc(32)

Calling C code has never been easier. With the help of extern objects you can seamlessly call native code without any runtime overhead.

Instant startup

> time hello-native
hello, native!

real    0m0.005s
user    0m0.002s
sys     0m0.002s

Scala Native is compiled ahead-of-time via LLVM. This means that there is no sluggish warm-up phase that's common for just-in-time compilers. Your code is immediately fast and ready for action.