发布 Ruby 3.1 编程语言

Ruby 3.1.0 发布,一种动态的面向对象编程语言,程序开发效率极高,融合了 Perl、Java、Python、Smalltalk、Eiffel、Ada 和 Lisp 的最佳功能。 该项目代码在BSD(“2-clause BSDL”)和“Ruby”许可证下分发,这是指最新版本的GPL许可证,与GPLv3完全兼容。

主要改进:

  • 添加了一个新的实验性进程内 JIT 编译器 YJIT,它是由 Shopify 电子商务平台的开发人员创建的,作为提高使用 Rails 框架并调用大量方法的 Ruby 程序性能的计划的一部分。 与之前使用的 MJIT JIT 编译器(基于处理整个方法并使用 C 语言中的外部编译器)的主要区别在于,YJIT 使用惰性基本块版本控制 (LBBV) 并包含集成的 JIT 编译器。 使用 LBBV,JIT 首先仅编译方法的开头部分,并在执行过程中确定所使用的变量和参数的类型后,稍后编译其余部分。 使用 YJIT 时,运行 Railsbench 测试时性能提高了 22%,液体渲染测试时性能提高了 39%。 YJIT 目前仅限于支持 x86-64 架构系统上的类 UNIX 操作系统,并且默认情况下处于禁用状态(要激活,请在命令行中指定“--yjit”标志)。
  • 改进了旧 MJIT JIT 编译器的性能。 对于使用 Rails 的项目,默认最大缓存大小 (--jit-max-cache) 已从 100 条指令增加到 10000 条指令。 停止对超过 1000 条指令的方法使用 JIT。 为了支持 Rails 的 Zeitwerk,当为类事件启用 TracePoint 时,JIT 代码不再被丢弃。
  • 它包括一个完全重写的debug.gem调试器,它支持远程调试,不会减慢被调试应用程序的速度,支持与高级调试接口(VSCode和Chrome)集成,可用于调试多线程和多进程应用程序,提供REPL代码执行接口,提供高级跟踪功能,可以记录和重放代码片段。 先前提供的调试器 lib/debug.rb 已从基本发行版中删除。
    发布 Ruby 3.1 编程语言
  • 在回调跟踪报告中实现了错误的视觉突出显示。 使用内置且默认启用的 gem 包 error_highlight 提供错误标记。 要禁用错误标记,您可以使用“--disable-error_highlight”设置。 $ ruby​​ test.rb test.rb:1:in " ": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ 你是说吗? 次
  • 交互式计算IRB(REPL,Read-Eval-Print-Loop)的外壳实现了输入代码的自动完成(当您键入时,会显示一个提示,其中包含用于继续输入的选项,您可以使用Tab或Shift+在这些选项之间移动Tab 键)。 选择继续选项后,附近会显示一个对话框,其中显示与所选项目关联的文档。 键盘快捷键 Alt+d 可用于访问完整文档。
    发布 Ruby 3.1 编程语言
  • 现在,语言语法允许在调用函数时跳过哈希文本和关键字参数中的值。 例如,您现在可以指定“{x:, y:}”,而不是表达式“{x: x, y: y}”,而不是“foo(x: x, y: y)” - foo( x:,y:)”。
  • 稳定支持单行模式匹配 (ary => [x, y, z]),不再标记为实验性的。
  • 模式匹配中的“^”运算符现在可以包含任意表达式,例如: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • 在单行模式匹配中,可以省略括号: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS 类型注释语言允许您确定程序的结构和所使用的类型,添加了对使用“<”符号指定类型参数上限的支持,添加了对泛型类型别名的支持,实现了对用于管理 gems 的集合,提高了性能并为内置库和标准库实现了许多新签名。
  • TypePro静态类型分析器增加了对集成开发环境的实验性支持,无需显式类型信息即可根据代码分析生成RBS注释(例如,已经准备了一个用于将TypePro与VSCode编辑器集成的插件)。
  • 处理多个作业的顺序已更改。 例如,以前表达式“foo[0], bar[0] = baz, qux”的组件按照 baz, qux, foo, bar 的顺序处理,但现在是 foo, bar, baz, qux。
  • 添加了对使用 VWA(可变宽度分配)机制的字符串内存分配的实验性支持。
  • 内置 gem 模块和标准库中包含的模块的更新版本。 内置 net-ftp、net-imap、net-pop、net-smtp、matrix、prime 和 debug 包。

来源: opennet.ru

添加评论