- GraalVM 发布日历
- 适用于 JDK 24 的 GraalVM
- 适用于 JDK 23 的 GraalVM
- 适用于 JDK 22 的 GraalVM
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 20 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- GraalVM 22.3.x
- GraalVM 22.2.x
- GraalVM 22.1.x
- GraalVM 22.0.x
- GraalVM 21.3.x
- GraalVM 21.2.x
- GraalVM 21.1.x
- GraalVM 21.0.x
- GraalVM 20.3.x
- GraalVM 20.2.x
- GraalVM 20.1.x
- GraalVM 20.0.x
- GraalVM 19.3.x
19.1.1
(2019-07-16)
这是针对 GraalVM 19.1.0 版本的关键补丁更新 (CPU) 版本,其基础 JDK 已更新至 OracleJDK 8u221 和 OpenJDK 8u222。更多详细信息可在此处(此处)和此处(此处)找到。我们建议从 19.1.x 及更旧版本升级到此版本。
此 CPU 版本包含以下 CVE 的修复
- CVE-2019-2813
- CVE-2019-2862
更多信息请参见Oracle 2019 年 7 月安全公告。
此版本还包含了以下 GraalVM Native Image 的关键修复
-
修复了
Reflection.getCallerClass
方法有时在原生镜像中无法获取正确帧的问题 (#1479)。 -
修复了提前编译共享库时工作目录中可能不生成头文件的问题。
19.1.0
(2019-07-02)
这是一个功能发布版本,我们建议从 19.0.x 版本升级到此版本。
Java
- 提高了 GraalVM 中即时 (JIT) 编译的速度,显著提升了中等长度工作负载的性能。
- 在构建编译器的提前 (AOT) 镜像时应用了配置文件引导优化 (PGO)。这使得编译器本身能够进行更激进的优化,从而提供更好的编译吞吐量。
原生镜像
我们修复了 GitHub 上报告的许多问题。您可以在此处浏览完整列表。
JavaScript
- 添加了实验性选项
js.locale
以设置区域敏感操作的默认区域。 - 允许通过在 URL 前加上
internal:
前缀(例如//# sourceURL=internal:myname.js
)使用sourceURL
指令将评估的源标记为内部。 - 改进了跨线程的代码共享。在此之前,一个上下文必须关闭,其中的代码才能在另一个上下文中重用,现在对于 JavaScript 上下文,可以在不关闭上下文的情况下使用
ContextPolicy.SHARED
共享代码。在以下示例中,source
代码在context1
和context2
之间共享
public static void main(String[] args) {
try (Engine engine = Engine.create()) {
Source source = Source.create("js", "21 + 21");
try (
Context context1 = Context.newBuilder().engine(engine).build();
Context context2 = Context.newBuilder().engine(engine).build()) {
context1.eval(source).asInt();
context2.eval(source).asInt();
}
}
}
LLVM 解释器
- 在嵌入式上下文中调用
exit(...)
现在是一个可捕获的PolyglotException
。 - 跳过不允许访问的源路径条目。以前,当在对文件系统访问受限的嵌入式上下文中运行时,即使没有附加调试器,LLVM 引擎在无法读取源文件时也会抛出异常。现在它将继续运行。只有当附加了调试器时,如果源文件无法访问,才会报告错误。
Ruby
此版本中的 GraalVM Ruby 实现旨在改进性能和兼容性、实现新功能和修复多个错误。最值得注意的包括
- 交互式源(如 GraalVM 多语言 shell)现在都共享相同的绑定 (#1695)。
- 哈希码计算已改进,以减少
Hash
和其他情况的哈希冲突。 - 包含块的固定代码的
eval(code, binding)
现在快得多。这提高了包含循环的 ERB 模板渲染性能。 rb_str_cat
由于 C 字符串现在可以直接连接而无需先转换为 Ruby 字符串或检查其编码,因此速度更快。
Ruby 组件的完整更新日志可在 GitHub 上找到。
R
- 字符串
-Inf
、+NaN
和-NaN
可以正确解析为双精度浮点数,包括忽略前导和尾随空格。 - 即使没有迭代,for 循环也会创建并初始化控制变量 (#77)。
- 更新了 capabilities 内置函数的输出 (#78)。
is.function
对外部可执行文件返回true
。
完整的项目更新日志可在 GitHub 上找到。
Python
- Python 标准库文件从 3.7.0 更新到 3.7.3。
- 改进了未逸出的异常的性能。
- 修复了在原生镜像中使用预初始化上下文进行预构建镜像和 libpolyglot 快速启动时核心源的缓存问题。
- 实现了对
pwd.getpwuid
、os.exec
、os.execv
和os.execl
模块的支持。
要查看完整的更改列表,请参阅项目更新日志。