- 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
20.0.0
(2020-02-18)
GraalVM 平台更新
GraalVM 20.0 显著改进了之前适用于 Windows 平台的 GraalVM 构建版本。Windows 在 GraalVM 生态系统中不再是一个实验性平台。Windows 构建版本现在包含功能齐全的 gu
工具来安装组件。GraalVM Native Image 组件需要像在其他平台上一样使用 gu
进行安装。JavaScript 引擎现在已包含在 GraalVM Windows 分发版中。Windows 平台上的 Node.js 支持计划包含在下一个 GraalVM 版本(20.1)中。
GraalWasm,即 WebAssembly 组件,通过常规组件分发渠道发布。
适用于 AArch64 的 GraalVM 分发版现在包含功能齐全的 node.js
运行时(包括 --jvm
模式和原生模式)。
Java
- GraalVM 社区版基于 OpenJDK 1.8.0_242 和 OpenJDK 11.0.6。
- GraalVM 企业版基于 Oracle JDK 1.8.0_241 和 Oracle JDK 11.0.6。您可以在 Oracle 技术网络网站上找到 JDK 发布说明。
- 新增了 Jump Conditional Code (JCC) Erratum 的缓解措施(参见 #1829)。
- GraalVM 的默认设置为
ThreadPriorityPolicy=1
,这意味着在 Java 中设置的线程优先级会反映到原生操作系统线程优先级。这可能会影响 Java 应用程序性能。
Native Image
- Windows 上的 Native Image 支持已取得显著进展。如果您发现任何问题,请报告。
- 使用 GraalVM Enterprise 构建的 Native Image 现在可以包含基于 G1 的低延迟垃圾回收器,该回收器减少了全局暂停时间并提高了延迟。这是一个实验性功能,可以通过
-H:+UseLowLatencyGC
在镜像构建时启用。有关更多详细信息,请参阅文档。 - 修复了几个与 Java Native Interface (JNI) 和 JDK11 相关的问题,更多信息请参阅 GitHub。
JavaScript
- Node.js 已更新到 12.15.0,请参阅 Node.js 12.15.0 发布说明。
- 添加了
js.commonjs-require
选项,用于从纯 JavaScript 加载兼容 npm 的 CommonJS 模块。这是一个实验性功能。有关详细信息,请参阅 NodeJSVSJavaScriptContext.md。 - 添加了
js.load-from-classpath
选项,允许通过classpath:
伪 URL 从类路径加载文件(默认禁用)。不建议将其用于不可信的代码。 - 添加了
String.prototype.replaceAll
提案的实现。它在 ECMAScript 2020 模式下可用(--js.ecmascript-version=2020
)。 - 更新了
String.prototype.matchAll
,使其仅在 ECMAScript 2020 模式下可用(--js.ecmascript-version=2020
)。 - 添加了
js.bind-member-functions
选项,用于将Value.getMember
返回的未绑定函数隐式绑定到接收器。调用成员的首选方式是使用Value.invokeMember
。 - 使 Nashorn 伪 URL 支持仅在 Nashorn 兼容模式下可用(
--js.nashorn-compat
)。 - 实现了对公共和私有类字段的支持,包括静态字段。此功能可以使用实验性选项
js.class-fields
启用,并且在 Node.js 中默认可用。 - 为非标准
arguments
全局属性添加了js.global-arguments
选项,默认值为true
。
更多详细信息可以在 GitHub 上的项目更新日志中找到。
LLVM 运行时
- 工具链现在基于 LLVM 9.0.0。
- 支持通过工具链访问
llvm-ar
、llvm-nm
、llvm-objcopy
、llvm-objdump
、llvm-ranlib
、llvm-readelf
、llvm-readobj
和llvm-strip
。
更多详细信息请参阅 GitHub 上的组件更新日志。
Python
- 通过实现语法
from JavaType import *
来导入 Java 类的所有静态成员,以及通过将path/to/jarfile.jar!path/inside/jar
添加到sys.path
来从 JAR 文件内部导入 Python 代码,改进了 Jython 兼容性。 - 增加了对日期和时间互操作的支持。
- 增加了通过
Context.Builder.timeZone
设置时区的支持。 - 实现了 PEP 570 - Python 仅限位置参数。
要查看完整的更改列表,请参阅项目更新日志。
R
- 在 Linux 上,
libgfortran
的所需版本从 3 更改为 5。有关详细信息,请参阅要求部分。 - 实现了通过数字和/或字符串矩阵对数组进行子集操作。
- 修复了多语言值不是对象的问题(参见 #123)。
- 修复了
sprintf %g
和%G
格式不正确的问题(尾随零,参见 #126)。 - 添加了 R 内置函数和 C API。
更多详细信息可以在 GitHub 上的项目更新日志中找到。
Ruby
Ruby 组件的详细更新日志可在 GitHub 上查阅。
- 更新到 Ruby 2.6.5(参见 #1749)。
- 更新了内部 LLVM 工具链到 LLVM 9,并减小了其下载大小。
- 在 macOS 上编译 OpenSSL 时,根据需要自动设置
PKG_CONFIG_PATH
(参见 #1830)。 - 与 sockets 和
RSTRING_PTR
相关的性能改进。 - 100+ 兼容性和错误修复,请参阅更新日志。
GraalVM 嵌入器(SDK)的更改
- 已弃用的
graalvm.home
和graalvm.version
系统属性已移除,请改用 HomeFinder。 - 添加了
EventContext.createError
,允许在执行监听器/节点中引入访客应用程序错误。 - 添加了
Context.Builder.currentWorkingDirectory
,用于设置访客应用程序解析相对路径时使用的当前工作目录。 - 用于为没有 URI 的 Source 生成唯一 URI 的算法已更改为
SHA-256
。 - 所有 Truffle Graal 运行时选项(
-Dgraal.
)将在 20.1 版本中弃用。Truffle 运行时选项不再作为 Graal 选项(-Dgraal.
)指定。Graal 选项必须替换为使用 polyglot API 指定的相应引擎选项。TRUFFLE_STRICT_OPTION_DEPRECATION
环境变量可用于检测已弃用的 GraalVM 选项的使用。当TRUFFLE_STRICT_OPTION_DEPRECATION
设置为 true 并且使用了已弃用的 Graal 选项时,Truffle 运行时将抛出异常,列出所使用的已弃用选项及其相应的替代品。
更多详细信息可在 SDK 和 Truffle 更新日志中查阅。
工具
- 添加了一个
gu
选项,用于从本地目录安装所有可用组件,例如:gu install -C /path/to/downloaded/20.0-components/ native-image llvm-toolchain ruby r python wasm
。 - 在 VisualVM 中添加了 JDK Flight Recorder 数据查看器。
- 新增了 T-trace 检测框架与 OpenTracing 的集成。
- 在 T-trace 检测框架中添加了 LLVM 语言支持。
- 添加了 GraalVM 语言的 Language Server Protocol 实现的技术预览版,以及其对 GraalVM VSCode 扩展的支持。