世界实时:Ruby 3.3.0 发布首个预览版

2023-05-15 07:31:45

Ruby 3.3.0-preview1 已发布,作为 3.3 的第一个预览版。Ruby 3.3 最重大的改动是添加了一个名为 RJIT 的新纯 Ruby JIT 编译器,使用 Lrama 作为解析器生成器,并带来许多性能改进。

RJIT

Ruby 3.3.0-preview1 引入纯 Ruby JIT 编译器 RJIT 替换了 MJIT。与 MJIT 不同,RJIT在运行时不需要 C 编译器。

有关 RJIT 的详细介绍,可查看此前的报道:《Ruby 引入新 JIT 编译器 RJIT,替代 MJIT》。


(资料图片)

但要注意:RJIT 仅支持 Unix 平台上的 x86_64 架构。而且目前 RJIT 仅用于实验目的。应该在生产中继续使用 YJIT。

使用 Lrama 而不是 Bison

用Lrama LALR 解析器生成器功能替换 Bison #19637

YJIT

性能改进

改进了 Splat 和 rest 参数支持。 为虚拟机的堆栈操作分配寄存器。 编译更多带有可选参数的调用。 Integer#!=,String#!=,Kernel#block_given?,Kernel#is_a?,Kernel#instance_of?,Module#===特别优化。

编译代码的元数据使用更少的内存

改进了 ARM64 上的代码生成

可选择以暂停模式启动 YJIT,然后手动启用它:--yjit-pauseRubyVM::YJIT.resume。注意:只有在应用程序完成启动后,才可以使用它来启用 YJIT 。

退出跟踪选项现在支持采样:--trace-exits-sample-rate=N

多个错误修复

标准库更新:

RubyGems 3.5.0.dev bigdecimal 3.1.4 bundler 2.5.0.dev csv 3.2.7 fiddle 1.1.2 fileutils 1.7.1 irb 1.6.4 optparse 0.4.0.pre.1 psych 5.1.0 reline 0.3.3 stringio 3.0.7 strscan 3.0.7 syntax_suggest 1.0.4 time 0.2.2 timeout 0.3.2 uri 0.12.1

详情查看更新公告:https://www.ruby-lang.org/en/news/2023/05/12/ruby-3-3-0-preview1-released/

标签:

关闭
新闻速递