Ruby 2.5.0 发布

naruse 于 2017 年 12 月 25 日发布

我们很高兴地宣布 Ruby 2.5.0 的发布。

Ruby 2.5.0 是 Ruby 2.5 系列的第一个稳定版本。它引入了许多新功能和性能改进。值得注意的更改如下:

新功能

  • rescueelseensure 现在可以直接与 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#concatEnumerable#sort_byString#concatString#indexTime#+ 等在内的一些内置方法的性能。
  • 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。
  • 更新至 Psych 3.0.2。
  • 更新至 RubyGems 2.7.3。
  • 更新至 RDoc 6.0.1。
  • 将支持的 Unicode 版本更新至 10.0.0。
  • Thread.report_on_exception 现在默认设置为 true。此更改有助于调试多线程程序。[Feature #14143]
  • IO#write 现在接收多个参数。[Feature #9323]

有关详细信息,请参阅 NEWS提交日志

通过这些更改,与 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 日

更多新闻...