导读 | Ruby 3.3.0-preview1的发布。 Ruby 3.3增加了一个新的名为RJIT的纯Ruby JIT编译器,使用Lrama作为分析器生成器,并特别对YJIT进行了许多性能改进。 |
RJIT
- 引入了一个纯Ruby JIT编译器RJIT并取代了MJIT。
- RJIT只支持Unix平台上的x86_64架构。
- 与MJIT不同,它在运行时不需要C编译器。
- RJIT的存在只是为了试验性的目的。
- 你应该在生产中继续使用 YJIT。
- 如果你对为Ruby开发JIT感兴趣,请查看k0kubun在RubyKaigi第三天的演讲。
- 使用Lrama而不是Bison
- 用Lrama LALR分析器生成器代替Bison Feature #19637
- 如果你有兴趣,请看Ruby解析器的未来愿景
YJIT
- 比3.2有了明显的性能改进
- 对Splat和rest参数的支持得到了改进。
- 为虚拟机的堆栈操作分配了寄存器。
- 更多带有可选参数的调用被编译了。
- Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#===被特别优化。
- 实例变量不再向解释器输出巨形对象的形状。
- 编译代码的元数据使用了更少的内存。
- 改进了ARM64上的代码生成
- 可以选择在暂停模式下启动YJIT,之后再手动启用它
- –yjit-pause 和 RubyVM::YJIT.resume
- 这可以用来在你的应用程序完成启动后才启用YJIT。
- 退出追踪选项现在支持采样
- –trace-exits-sample-rate=N
- 多个错误修复
其他值得注意的新功能
性能改进
define?(@ivar)在使用对象形状时进行了优化。
自3.2以来其他值得注意的变化
兼容性问题
注意:不包括功能错误的修复。
移除的常量
以下废弃的常量已被删除。
移除的方法
删除了以下废弃的方法。
Stdlib兼容性问题
ext/readline已经退役
我们有reline,它是与ext/readline API兼容的纯Ruby实现。我们在未来依靠reline。如果你需要使用ext/readline,你可以通过rubygems.org用gem install readline-ext来安装ext/readline。
我们不再需要安装 libreadline 或 libedit 等库。
C语言API更新
更新的 C 语言 API
以下 API 已被更新。
移除的 C 语言 API
删除了以下废弃的API。
标准库更新
更新了以下默认宝石。
- 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
- 心理学 5.1.0
- 绛红 0.3.3
- stringio 3.0.7
- strscan 3.0.7
- 语法建议 1.0.4
- 时间 0.2.2
- 超时 0.3.2
- uri 0.12.1
以下捆绑的gems 已经更新。
- minitest 5.18.0
- rbs 3.1.0
- typeprof 0.21.7
- debug 1.8.0
加上这些变化,自Ruby 3.2.0以来,有1922个文件被改变,75283个插入(+),44896个删除(-)!
Download
- //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz
- //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz
- //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip
SIZE: 20428213 SHA1: 5445eec1cd9ddb44e03e74568cac94209c91b42d SHA256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed SHA512: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
SIZE: 15074600 SHA1: 4c22ebca287c87811e1050bf4d59b7d32255b212 SHA256: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb SHA512: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
SIZE: 24846962 SHA1: 31774fa653c54107b6afc30adda3a0350d8f41d2 SHA256: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553 SHA512: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0
原文来自:
本文地址://gulass.cn/many-performance-improvements.html编辑:王艳敏,审核员:清蒸github
Linux大全:
Linux系统大全: