Ruby 2.4.0-preview3 发布

我们很高兴宣布 Ruby 2.4.0-preview3 的发布。

Ruby 2.4.0-preview3 是 Ruby 2.4.0 的第三个预览版本。发布此预览版3是为了获得社区的反馈。请随时发送反馈,因为您仍然可以影响其功能。

引入哈希表改进(由 Vladimir Makarov 实现)

通过引入开放寻址和一个包含顺序的数组来改进哈希表(st_table)的内部结构。这个改进已经和许多人讨论过,特别是和 Yura Sokolov。

Binding#irb:启动一个类似于 binding.pry 的 REPL 会话

在调试时,您可能经常使用 p 来查看变量的值。使用 pry,您可以在应用程序中使用 binding.pry 来启动 REPL 并运行任何 Ruby 代码。r56624 引入了 binding.irb,它的行为与 irb 类似。

将 Fixnum 和 Bignum 合并为 Integer

虽然 ISO/IEC 30170:2012 没有指定 Integer 类的细节,但 Ruby 有两个可见的 Integer 类:Fixnum 和 Bignum。Ruby 2.4 将它们合并为 Integer。所有接触 Fixnum 或 Bignum 类的 C 扩展都需要修复。

另请参阅 该工单akr 的幻灯片

String 支持 Unicode 大小写映射

String/Symbol#upcase/downcase/swapcase/capitalize(!) 现在处理 Unicode 大小写映射,而不仅仅是 ASCII 大小写映射。

性能改进

Ruby 2.4 还包含以下性能改进,包括语言变更

Array#max, Array#min

[x, y].max[x, y].min 经过优化,在某些条件下不会创建临时数组。

Regexp#match?

添加了 Regexp#match?,它执行正则表达式匹配而不创建反向引用对象并更改 $~ 以减少对象分配。

其他性能改进

调试

Thread#report_on_exception 和 Thread.report_on_exception

Ruby 会忽略线程中的异常,除非另一个线程显式地加入它们。使用 report_on_exception = true,您可以注意到线程是否由于未处理的异常而终止。

请向我们发送关于 report_on_exception 的默认值以及 report-on-GC 的反馈,report-on-GC 会在线程在未加入的情况下被垃圾回收时显示报告。

线程死锁检测现在显示带有回溯和依赖关系的线程

Ruby 有关于等待线程的死锁检测,但其报告不包含足够的调试信息。Ruby 2.4 的死锁检测显示带有回溯和依赖线程的线程。

尝试并享受使用 Ruby 2.4.0-preview3 进行编程的乐趣,并向我们发送反馈

自 2.3 以来的其他重要更改

有关详细信息,请参阅 NEWSChangeLog

随着这些更改,自 Ruby 2.3.0 以来,更改了 2470 个文件,增加了 283051 行代码 (+),删除了 64902 行代码 (-)

下载

  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.bz2

    SIZE:   12615328 bytes
    SHA1:   fefe49f6a7d5b642936c324f3b05aaac827355db
    SHA256: 305a2b2c627990e54965393f6eb1c442eeddfa149128ccdd9f4334e2e00a2a52
    SHA512: 6602c65a7b1e3bc680acc48217108f4335e84fdd74a9cf06f2e2f9ad00a2fccacf9fa035a912bc9d5cc3f0c7a5e21475971dfac37b0364311ef3645f25c7ddf9
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.gz

    SIZE:   15758023 bytes
    SHA1:   f6a6ec9f7fedad0bf4efee2e42801cc963f60dca
    SHA256: c35fe752ccfabf69bf48e6aab5111c25a05938b428936f780638e2111934c9dd
    SHA512: 68556d5252b6813b4c8eeba32733e940207f80694b5c5d20e69bf01eb52929ed2466496b05a895a5ad4831d430695e17624eb35b728b2d4d7cf02df756ac48b4
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.xz

    SIZE:   9957596 bytes
    SHA1:   66592b1a52f985638d639e7c3dd6bdda4e0569d0
    SHA256: b14be2b5c80bff0d6894ae2b37afdb17a968413e70236ec860f3e2d670b4c317
    SHA512: 5be20f0b2609745790c2b22f2228e69a840f63c34a117a1f95fd5436af211f0a6db2758d513d3e095a2d97c53c80793579cb2a1e00e70cf72c487a88c4a40d33
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.zip

    SIZE:   17579012 bytes
    SHA1:   15d08cff952da3844ae54887b7f74b12d47c9ee2
    SHA256: b95a8f67fb7d6e852db77c5660c8878c14d68eb72c5501dac164a7e640ecb06e
    SHA512: fa15e1b7ab0cab56c9a580e1b1e2fee250ee0b9c59546079675a1931a36e37131bd37d64033c75e05d8e9d9fcc33ce7850254d3acaca2136cf3bd08b070244f0
    

发布说明

另请参阅发布时间表和其他信息

ReleaseEngineering24