Skip to content

desaperados/scala-native

 
 

Repository files navigation

Scala Native

Join the chat at https://gitter.im/scala-native/scala-native

Build Status

Scala Native is a new ahead-of-time compiler and lightweight managed runtime designed specifically for Scala. Project is currently in pre-release stage. Follow us on twitter to be first to know about upcoming updates.

Features

  • 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.

  • Extern objects.

    @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.

Community

Documentation

scala-native.readthedocs.io

License

Scala Native is distributed under the Scala license.

About

Your favourite language gets closer to bare metal.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 96.0%
  • Python 2.8%
  • Other 1.2%