Ruby 2.5.0 发布
由 naruse 于 2017 年 12 月 25 日发布
我们很高兴地宣布 Ruby 2.5.0 的发布。
Ruby 2.5.0 是 Ruby 2.5 系列的第一个稳定版本。它引入了许多新功能和性能改进。值得注意的更改如下:
新功能
rescue、else和ensure现在可以直接与do/end块一起使用。[Feature #12906]- 添加了
yield_self,用于在其上下文中产生给定块。与tap不同,它返回块的结果。[Feature #6721] - 支持分支覆盖率和方法覆盖率测量。分支覆盖率指示哪些分支被执行,哪些未被执行。方法覆盖率指示哪些方法被调用,哪些未被调用。通过运行包含这些新功能的测试套件,您可以了解哪些分支和方法被执行,并更严格地评估测试套件的总覆盖率。[Feature #13901]
- Hash#slice [Feature #8499] 和 Hash#transform_keys [Feature #13583]
- Struct.new 可以创建接受关键字参数的类。[Feature #11925]
- Enumerable#any?、all?、none? 和 one? 接受一个模式参数。[Feature #11286]
- 不再支持顶层常量查找。[Feature #11547]
- 我们最受欢迎的库之一 pp.rb 现在会自动加载。您不再需要编写
require "pp"。[Feature #14123] - 按反向顺序打印回溯和错误消息(最旧的调用在前面,最近的调用在后面)。当终端(TTY)上出现很长的回溯时,您可以轻松地在回溯的底部找到原因行。请注意,仅当回溯直接打印到终端时,顺序才会反转。[Feature #8661] [实验性]
性能改进
- 通过删除所有字节码(指令序列)中的
trace指令,性能提高了约 5-10%。trace指令是为了支持TracePoint而添加的。然而,在大多数情况下,TracePoint不会被使用,而trace指令只是纯粹的开销。取而代之的是,我们现在使用动态插桩技术。有关更多详细信息,请参阅 [Feature #14104]。 - 通过“惰性 Proc 分配”技术,块参数传递(例如
def foo(&b); bar(&b); end)比 Ruby 2.4 快约 3 倍。[Feature #14045] - Mutex 被重写,使其更小、更快。[Feature #13517]
- ERB 现在生成模板代码的速度是 Ruby 2.4 的两倍。
- 提高了包括
Array#concat、Enumerable#sort_by、String#concat、String#index、Time#+等在内的一些内置方法的性能。 - IO.copy_stream 使用 copy_file_range(2) 进行卸载复制。[Feature #13867]
自 2.4 以来的其他值得注意的更改
- SecureRandom 现在优先使用操作系统提供的源而非 OpenSSL。[Bug #9569]
- 将 cmath、csv、date、dbm 等、fcntl、fiddle、fileutils、gdbm、ipaddr、scanf、sdbm、stringio、strscan、webrick、zlib 从标准库提升为默认 gem。
- 更新至 Onigmo 6.1.3。
- 它添加了 缺失运算符。
- 请注意,Ruby 2.4.1 也包含了此更改。
- 更新至 Psych 3.0.2。
- 更新至 RubyGems 2.7.3。
- 更新至 RDoc 6.0.1。
- 将词法分析器从基于 IRB 的切换为 Ripper。这大大提高了文档生成的性能。
- 修复了存在了十多年的大量 bug。
- 添加了对最新版本 Ruby 语法语法的支持。
- 将支持的 Unicode 版本更新至 10.0.0。
Thread.report_on_exception现在默认设置为 true。此更改有助于调试多线程程序。[Feature #14143]- IO#write 现在接收多个参数。[Feature #9323]
通过这些更改,与 Ruby 2.4.0 相比,6158 个文件已更改,348484 行插入(+),82747 行删除(-)!
圣诞快乐,节日快乐,祝您使用 Ruby 2.5 编程愉快!
下载
-
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
SIZE: 15834941 bytes SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d -
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip
SIZE: 19495617 bytes SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84 -
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
SIZE: 13955820 bytes SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c -
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz
SIZE: 11292472 bytes SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578
近期新闻
Ruby 4.0.0 发布
我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 25 日
Ruby 文档的全新外观
继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。
由 Stan Lo 发布于 2025 年 12 月 23 日
重新设计我们的网站标识
我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。
由 Hiroshi SHIBATA 发布于 2025 年 12 月 22 日
Ruby 4.0.0 preview3 发布
我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 18 日