Scala Native:Scala的AOT编译器(Ahead-of-Time Compiler)

Posted 开发资讯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala Native:Scala的AOT编译器(Ahead-of-Time Compiler)相关的知识,希望对你有一定的参考价值。

之前我们曾介绍过 的消息。Scala 研究人员 Denys Shabalin 也在尝试为 Scala 构建一个预先编译器(Ahead-of-Time Compiler)。这就是 Scala Native 项目。近日,他宣布发布了 Scala Native 0.1 版本。


Scala Native 是专为 Scala 设计的一款优化的 AOT 编译器和轻量级的托管运行时。


Scala Native 是基于 LLVM 编译器基础设施构建的。



我们知道,Scala 是和 JVM 捆绑在一起的。Scala 编译器会将 Scala 程序编译为 Java 字节码,运行于 JVM 之上。而 Scala Native 工具链则是生成独立的可执行程序,方便在更轻的环境中使用 Scala,而不用使用 JVM。一个可以想到的好处是,去掉了虚拟机的预热阶段,应用的启动速度会更快。


该项目目前已经特性完备,基本能完整支持 Scala 语义。主要包括以下几个特性:


  • 完整支持 Scala 语言,只有一些可以忽略的语义差别

  • 可以轻松与原生代码互操作

      一个调用 C 代码的例子: 

  • 直接支持现有的 Scala IDE

  • 与 sbt 构建工具无缝集成

  • 支持 JVM、JS 和原生平台的交叉发布基础设施

  • 支持 JDK 基础库的核心子集


垃圾收集方面,Scala Native 使用了 Boehm GC(https://www.hboehm.info/gc/)。这是一个起点,未来可以进一步优化。


感兴趣的读者可以点击“阅读原文”,了解更多信息。

以上是关于Scala Native:Scala的AOT编译器(Ahead-of-Time Compiler)的主要内容,如果未能解决你的问题,请参考以下文章

scala-native 中的布尔字符串解析行为

指向 scala-native 中的指针的指针

使用 scala-native 构建 iOS 应用程序

Scala - SBT - sbt-native-packager - 保留 `stage` 目录的内容

sbt-native-packager scala 播放 dockerfile 未使用默认配置运行

Scala,docker - 如何使用 sbt-native-packager 在多模块应用程序中设置 mainClass?