GraalVM 19.1.0 发布,高性能跨语言虚拟机

2019-07-09 11:05发布

GraalVM 19.1.0 发布了。GraalVM 是高性能跨语言虚拟机,用于运行 JavaScript、Python 3、Ruby、R、基于 JVM 的语言,如 Java、Scala、Kotlin 和基于 LLVM 的语言,如 C 和 C++。

GraalVM 消除了编程语言之间的隔离,并支持共享运行时的互操作性。它可以独立运行,也可以在 OpenJDK、Node、Oracle 或者 MySQL 上运行。

此版本更新内容包括:

Java

  • 提高了 GraalVM 中 JIT 编译的速度。
  • 在构建编译器的 AOT(ahead-of-time)镜像时应用配置文件引导优化(PGO,profile-guided optimization)。

Native image

修复了一些 GitHub 上报告的问题。

JavaScript

  • 添加了一个实验性选项 js.locale,以设置区域设置敏感操作的默认语言环境。
  • 允许使用 sourceURL 指令在内部创建评估源,方法是在 URL 前加上 internal,如://# sourceURL = internal: myname.js。
  • 使用 ContextPolicy.SHARED 在线程之间启用代码共享。

LLVM interpreter

  • 在嵌入式上下文中调用 exit(...) 现在是一个可捕获的 PolyglotException。
  • 跳过不允许访问的源路径条目。

Ruby

此版本中的 GraalVM Ruby 实现主要进行了性能和兼容性改进,并带来了一些新特性,修复了多个 bug。rb_str_cat 现在更快,因为 C 字符串现在连接前不需要先被转换为 Ruby 字符串或检查其编码。

R

  • 字符串 -Inf、+NaN 和 -NaN 被正确解析为双精度数,包括忽略前导和尾随空格。
  • For 循环创建并初始化控制变量,即使没有迭代。
  • 更新了内置输出功能。
  • 对于外部可执行文件,is.function 返回 true。

Python

  • Python 标准库从 3.7.0 更新到 3.7.3 版本。
  • 改进抛出异常的性能。
  • 修复了原生镜像中核心源的缓存,其中包含用于预构建镜像和 libpolyglot 快速启动的预初始化上下文。
  • 实现对 pwd.getpwuid、os.exec、os.execv 和 os.execlmodules 的支持。
文章来源: https://www.toutiao.com/group/6711480965924913678/