导读 Ruby 3.3.0-preview1的发布。 Ruby 3.3增加了一个新的名为RJIT的纯Ruby JIT编译器,使用Lrama作为分析器生成器,并特别对YJIT进行了许多性能改进。

RJIT
  1. 引入了一个纯Ruby JIT编译器RJIT并取代了MJIT。
  2. RJIT只支持Unix平台上的x86_64架构。
  3. 与MJIT不同,它在运行时不需要C编译器。
  4. RJIT的存在只是为了试验性的目的。
  5. 你应该在生产中继续使用 YJIT。
  6. 如果你对为Ruby开发JIT感兴趣,请查看k0kubun在RubyKaigi第三天的演讲。
  7. 使用Lrama而不是Bison
  8. 用Lrama LALR分析器生成器代替Bison Feature #19637
  9. 如果你有兴趣,请看Ruby解析器的未来愿景
YJIT
  1. 比3.2有了明显的性能改进
  2. 对Splat和rest参数的支持得到了改进。
  3. 为虚拟机的堆栈操作分配了寄存器。
  4. 更多带有可选参数的调用被编译了。
  5. Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#===被特别优化。
  6. 实例变量不再向解释器输出巨形对象的形状。
  7. 编译代码的元数据使用了更少的内存。
  8. 改进了ARM64上的代码生成
  9. 可以选择在暂停模式下启动YJIT,之后再手动启用它
  10. –yjit-pause 和 RubyVM::YJIT.resume
  11. 这可以用来在你的应用程序完成启动后才启用YJIT。
  12. 退出追踪选项现在支持采样
  13. –trace-exits-sample-rate=N
  14. 多个错误修复
其他值得注意的新功能
性能改进

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。

标准库更新

更新了以下默认宝石。

  1. RubyGems 3.5.0.dev
  2. bigdecimal 3.1.4
  3. bundler 2.5.0.dev
  4. csv 3.2.7
  5. fiddle 1.1.2
  6. fileutils 1.7.1
  7. irb 1.6.4
  8. optparse 0.4.0.pre.1
  9. 心理学 5.1.0
  10. 绛红 0.3.3
  11. stringio 3.0.7
  12. strscan 3.0.7
  13. 语法建议 1.0.4
  14. 时间 0.2.2
  15. 超时 0.3.2
  16. uri 0.12.1

以下捆绑的gems 已经更新。

  1. minitest 5.18.0
  2. rbs 3.1.0
  3. typeprof 0.21.7
  4. debug 1.8.0

加上这些变化,自Ruby 3.2.0以来,有1922个文件被改变,75283个插入(+),44896个删除(-)!

Download
  1. //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz
  2. SIZE: 20428213
    SHA1: 5445eec1cd9ddb44e03e74568cac94209c91b42d
    SHA256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
    SHA512: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
  3. //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz
  4. SIZE: 15074600
    SHA1: 4c22ebca287c87811e1050bf4d59b7d32255b212
    SHA256: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
    SHA512: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
  5. //cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip
  6. SIZE: 24846962
    SHA1: 31774fa653c54107b6afc30adda3a0350d8f41d2
    SHA256: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553
    SHA512: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0

原文来自:

本文地址://lrxjmw.cn/many-performance-improvements.html编辑:王艳敏,审核员:清蒸github

Linux大全:

Linux系统大全:

红帽认证RHCE考试心得: