告别性能问题:Ruby 3.0正式发布

【告别性能问题:Ruby 3.0正式发布】经历了长久的等待 , 我们终于在圣诞期间迎来了 Ruby 3.0 , 正如开发者 Matz 在上次演讲中所说的那样 。 对于 Web 开发者来说 , 本次更新不仅提升了运行速度 , 还克服了早前的一些缺点 。 首先 , 异步线程将由 Fibers 进行控制 , 因为当前的服务器会在释放其它线程时阻塞 I/O 操作 , 比如 API 调用 / 数据库操作等 。
告别性能问题:Ruby 3.0正式发布文章插图
(图 via Sloboda Studio)
其次是启用基于 Fibers over Threads的线程操作 , 是因为这么做能够减少上下文的切换开销 。
然后是 Ruby Actor / Ractor:它与 JavaScript 中在后台运行的网络操作相似 , 但 Ractor 还支持并行执行 。 由于法共享普通对象 , Ractor 的线程并行安全性也更优 , 且支持基于消息传递的通讯方案 。
内存性能方面 , 通过使用垃圾压缩器(GP) , 大多数对象将被传输到堆(heap)并自动压缩 。
得益于 RBS , Ruby 3.0 还支持类型检查 。 作为一款类型签名语言 , RBS 可用于描述类的类型和定义、方法、实体变量、继承 / 混合关系、以及 Ruby 模块 。
其旨在查看 Ruby 程序中的常见模式 , 且允许联合、方法重载、以及泛型之列的高级类 , 让进程处理以 .rbs 格式编写的签名文件成为了可能 。
告别性能问题:Ruby 3.0正式发布文章插图
(传送门:Ruby-lang.org)
此外还有即时编译器方面的改进 , 因为 JIT 的编译速度提升了 50~500%(取决于具体的工作量)、支持编码块参数、权利转让(Right Assignmenet) , 以及包括 RubyGems 3.2.0.rc.1、Bundler 2.2.0.rc.1、IRB 1.2.6、Reline 0.1.5 在内的某些标准库更新 。
最后是向后兼容性 , Ruby 3.0 让在不同版本间进行切换不再是个问题 , 且日志中的警告信息有助于快速修复 bug。