Ruby 2.4.0-rc1 发布

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

Ruby 2.4.0-rc1 是 Ruby 2.4.0 的第一个候选版本。发布此 rc1 的目的是为了获得社区的反馈。请随时发送反馈,因为您仍然可以修复这些功能。

引入哈希表改进 (作者: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 的信息,当线程在没有加入的情况下被垃圾回收时,它会显示一个报告。

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

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

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

自 2.3 以来的其他显著变化

  • 支持 OpenSSL 1.1.0(放弃支持 0.9.7 或更早版本)
  • ext/tk 现在已从 stdlib 中移除 Feature #8539
  • XMLRPC 现在已从 stdlib 中移除 Feature #12160

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

随着这些更改,自 Ruby 2.3.0 以来,修改了 2519 个文件,增加了 288606 行,删除了 83896 行

下载

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

    SIZE:   12512729 bytes
    SHA1:   a0439652a97a2406b691e8a1e586e2cf08c258ba
    SHA256: 3b156b20f9df0dd62cbeeb8e57e66ea872d2a5b55fabdef1889650122bcc2ea7
    SHA512: b43902ac7794487197df55a45256819d2e7540b77f1ed4eb68def3e0473ee98860a400862075bafadbde74f242e1dfe36a18cd6fe05ac42aae1ea6dddc9978ce
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.gz

    SIZE:   14098505 bytes
    SHA1:   6b242f9ec7b908c9aa26e497440684ba06d86927
    SHA256: e41ada7650eed2a5800534d1201ba7c88f1627085659df994f47ab4c5e327745
    SHA512: 26d3c60483ce2d6eaabd7077085102fad6633f18cf5d772bacf6f563670030cb7bba22d54d8b7dfa5eac8b52990371c4a6ad1c095dff6f6b3a7bbe1a8ffb3754
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.xz

    SIZE:   9930088 bytes
    SHA1:   7c404e8bec9859f708927f7203d4f42187e678b7
    SHA256: 3f014b3186d10676da6c512d14c65db23ccc4bf200fed9d7c6f9a58fd1e3295b
    SHA512: 22e209e28da1f2394f50c0a7dd5d0d4d4c0c5a6b5b0b02260fad0267a0940b98f0e2b0f36a44f87d1612555cb3022f43cd136a5186c7f87650aa20264408d415
    
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.zip

    SIZE:   15785968 bytes
    SHA1:   7d82386434ccbb1701f2995286bf29c8b9179e01
    SHA256: 14e6910e36618cddffeb22bad5f1052f907dc31ec93d4aa945bca0905d8a52c4
    SHA512: 5dd89320d429e5bd5faf3709be7e5b70f7355304d6324d7ac13a69187e5f1446ad5988c8186bc33f4fea8934288294f9d16fea173f39b2b39967746c4b03d1d4
    

发布评论

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

ReleaseEngineering24