由 naruse 发布于 2016 年 12 月 25 日
我们很高兴地宣布 Ruby 2.4.0 的发布。
Ruby 2.4.0 是 Ruby 2.4 系列的第一个稳定版本。它引入了许多新功能,例如
引入哈希表改进 (由 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 扩展都需要修复。
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 的反馈,它会在线程在没有 join 的情况下被垃圾回收时显示报告。
线程死锁检测现在显示带有回溯和依赖关系的线程
Ruby 在等待线程周围有死锁检测,但其报告不包含足够的调试信息。Ruby 2.4 的死锁检测显示带有回溯和依赖线程的线程。
自 2.3 以来的其他重要更改
- 支持 OpenSSL 1.1.0 (放弃对 0.9.7 或更早版本的支持)
- ext/tk 现在已从 stdlib 中移除 Feature #8539
- XMLRPC 现在已从 stdlib 中移除 Feature #12160
有关详细信息,请参阅 NEWS 或提交日志。
有了这些更改,自 Ruby 2.3.0 以来,2523 个文件已更改,289129 个插入(+),84670 个删除(-)!
圣诞快乐,节日快乐,并享受使用 Ruby 2.4 编程的乐趣!
下载
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
SIZE: 12572424 bytes SHA1: 944d2588308391b20a89642472454d1dfe7b2360 SHA256: 440bbbdc49d08d3650f340dccb35986d9399177ad69a204def56e5d3954600cf SHA512: bef7bb53f63fb74073d071cc125fb67b273ed0779ef43c2d2969089b9ca21fff1bd012281c5b748f7a3c24dd26e71730d7248c05a01cb23ab2089eb4d02115fe
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz
SIZE: 14104044 bytes SHA1: d44a3c50a0e742341ed3033d5db79d865151a4f4 SHA256: 152fd0bd15a90b4a18213448f485d4b53e9f7662e1508190aa5b702446b29e3d SHA512: 21c9f596b42dd9cba7a53963a59fed0c2e0c1eb960a4ac7087ea3eaa991ce9252d32639e1edcb75b1d709bc07c4820a6dc336ab427d0643c6e6498e0eacdbc8b
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.xz
SIZE: 9906880 bytes SHA1: 038804bbd0e77508dd2510b729a9f3b325489b2e SHA256: 3a87fef45cba48b9322236be60c455c13fd4220184ce7287600361319bb63690 SHA512: 975a5388592adc038461e0acebb6c0efee242891b2ea8621476401458efe2bc0fdd317d3bf99beb745b0b3808410efdff33862da29c95c027f457943721e3ab6
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.zip
SIZE: 15758757 bytes SHA1: 29e1bab11551011718c35a51827edcb55bd656fc SHA256: 5c2bbfa26fd6a15a2d70961874b0f3a386206fcc5f698e240dd8b0c9f0f18c5e SHA512: 31d932372ce490eeac0a70bc8dcf842909a90435422398d069c05cf01d994936064b8f4e60879e28a8655c1296eb8e180e348cb95e001ed6ca73cda0ff77de23