Ruby 2.5 系列第一个稳定版本发布,新版包括了一系列新的特性和性能改进。主要变化包括:rescue/else/ensure 允许直接与 do/end 块使用,yield 增加 yield_self,Struct.new 能创建接受关键字参数的类,最高级常量查询不再可用,移除所有 trace 指令提升 5-10% 性能,SecureRandom 将更偏向使用操作系统提供的 SSL 库等。
此版本包括数个新特性和性能提升,例如:
yield_self
来使用当前上下文 yield 代码块。不同于 tap
,此方法会返回代码块的运行结果。[功能 #6721]require "pp"
来加载。[功能 #14123]trace
指令提升了大约 5-10% 的性能。trace
指令的引入是为了提供 TracePoint
的支持。然而,在大多数情况,TracePoint
不会被用到,trace
指令增加了额外的开销。作为替代,我们实现了一个动态指令技术,详情见 [功能 #14104]。def foo(&b); bar(&b); end
)的性能相较于 Ruby 2.4 提升了约 3 倍。[功能 #14045]Array#concat
, Enumerable#sort_by
, String#concat
, String#index
, Time#+
等。Thread.report_on_exception
默认值现为 true,这对调试多线程程序很有帮助。[功能 #14143]自 Ruby 2.4.0 以来,已有 6158 个文件更改,348484 行增加(+),82747 行删减(-)!
圣诞快乐!享受你 Ruby 2.5 的编程之旅吧!