slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Ruby 3.2.0 发布,带有 WebAssembly 编译器、生产环境就绪的 YJIT 优化与更快的正则表达式引擎
17611538698
webmaster@21cto.com

Ruby 3.2.0 发布,带有 WebAssembly 编译器、生产环境就绪的 YJIT 优化与更快的正则表达式引擎

编程语言 0 1486 2023-01-08 11:09:17

图片

Ruby 核心开发团队在 12 月 25 日发布的 Ruby 3.2.0 ,做为开发者的圣诞礼物,其主要新功能包括初始 WebAssembly 支持和 YJIT(又一个即时编译器)的第一个非实验版本,与 Ruby 传统解释器性能有41%的提升。

YJIT 项目由 Shopify 发起,并得到 GitHub 的协助。如 Shopify 项目负责人 Maxime Chevalier-Boisvert 所说,Shopify 是“一家由 Ruby on Rails 提供技术支持的大型服务器基础设施公司”。

图片

CRuby 已经有了一个名为 MJIT(基于方法的即时编译器)的 JIT 编译器,但 Chevalier-Boisvert 表示,“虽然它已经在较小的基准测试中实现了加速,但到目前为止,它在提供广泛使用的场合,加速方面不太满意”。

YJIT 基于称为 Basic Block Versioning 的 JIT 编译器架构,最初由 Chevalier-Boisvert 作为其博士研究项目的一部分。YJIT 项目的目标是“最终取代大部分执行的解释器”。目前,Ruby 3.2.0 同时支持 YJIT 和 MJIT。

YJIT 是 Ruby 的正式组成部分。根据维护者 Yui Naruse 在Ruby 3.2.0发布公告称,它“已经在生产工作负载上进行了一年多的测试,并被证明相当稳定”,因此已经宣布可以投入生产。它在 Linux、MacOS、BSD 和其他类 Unix 平台上运行良好,并支持 x86-64 和 Arm64 硬件架构。

一年前 YJIT 被移植到 Rust,原因是“在代码可维护性方面面临挑战。如大家所知,JIT 编译器可能会变得非常复杂,而 C99 没有提供很多工具来管理这种复杂性,” Chevalier-Boisvert这样说道。

Ruby 3.2.0 的另一大特性是基于 WASI 的 WebAssembly 支持。

图片

“这使得 CRuby 二进制文件可以在 Web 浏览器、无服务器边缘环境或其他类型的 WebAssembly/WASI 嵌入设备上使用,”这是一种“Try Ruby”游乐场,它可以使用该技术在浏览器中运行 Ruby。目前,在支持方面还存在一些差距,因为“WebAssembly 本身缺少一些功能来实现 Fiber、异常和 GC,因为这个技术仍在发展,” 维护者 Naruse 说。

Ruby 3.2的 另一个新功能是 Regexp(正则表达式)算法升级,它可以将性能提高很多倍:Naruse 的一份实例显示了一个在 Ruby 3.1 中需要 10 秒的表达式,现在仅需要 0.003 秒就可运行完毕。

作者:场长

评论