前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ruby 2.5.0 稳定版发布

Ruby 2.5.0 稳定版发布

作者头像
Debian中国
发布2018-12-20 16:23:27
1.2K0
发布2018-12-20 16:23:27
举报
文章被收录于专栏:Debian中国

Ruby 2.5 系列第一个稳定版本发布,新版包括了一系列新的特性和性能改进。主要变化包括:rescue/else/ensure 允许直接与 do/end 块使用,yield 增加 yield_self,Struct.new 能创建接受关键字参数的类,最高级常量查询不再可用,移除所有 trace 指令提升 5-10% 性能,SecureRandom 将更偏向使用操作系统提供的 SSL 库等。

此版本包括数个新特性和性能提升,例如:

新特性

  • 允许在 do/end 中直接使用 rescue/else/ensure。[功能 #12906]
  • 新增 yield_self 来使用当前上下文 yield 代码块。不同于 tap,此方法会返回代码块的运行结果。[功能 #6721]
  • 支持测量分支代码覆盖和方法代码覆盖。分支代码覆盖指检查哪些分支被覆盖到,哪些没有。而方法覆盖在指可以测量方法是否被调用。基于这些新特性运行你的测试用例,你可以精确地知道哪些分支和方法被运行,并更精确地计算测试的代码覆盖程度。[功能 #13901]
  • 新增 Hash#slice [功能 #8499] 和 Hash#transform_keys。[功能 #13583]
  • Struct.new 现在可以被用于创建含有关键字参数的类。[功能 #11925]
  • Enumerable#any?, all?, none? 和 one? 可以接受一个模式作为参数。[功能 #11286]
  • 删除顶层常量查找。[功能 #11547]
  • 我们最喜爱的库之一 pp.rb,现已自动加载。无需手动写 require "pp" 来加载。[功能 #14123]
  • 逆序打印(从旧到新)调用跟踪和错误消息。当在终端(TTY)中用较长的调用跟踪信息时,你可以从最底部看到直接触发问题的行。需要注意的是,仅当在直接输出到终端时,才会逆序打印。[功能 #8661] [试验性]

性能提升

  • 通过在字节码中移除了全部 trace 指令提升了大约 5-10% 的性能。trace 指令的引入是为了提供 TracePoint的支持。然而,在大多数情况,TracePoint 不会被用到,trace 指令增加了额外的开销。作为替代,我们实现了一个动态指令技术,详情见 [功能 #14104]
  • 通过懒惰 Proc 分配使 block 参数传递代码块(例如 def foo(&b); bar(&b); end)的性能相较于 Ruby 2.4 提升了约 3 倍。[功能 #14045]
  • 互斥锁的复写变得更轻量和快速。[功能 #13517]
  • ERB 现在模板生成代码的速度相较于 Ruby 2.4 提升 2 倍。
  • 提升了多个内置方法例如 Array#concatEnumerable#sort_byString#concatString#indexTime#+ 等。
  • IO.copy_stream 使用 copy_file_range(2) 来拷贝负载。[功能 #13867]

与 2.4 相比的重要变化

  • SecureRandom 倾向使用操作系统方法而非 OpenSSL。[漏洞 #9569]
  • 将 cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib 从标准库中提升到默认 gem。
  • 升级 Onigmo 到 6.1.3。
  • 把 bundler 纳入标准库。
  • 更新到 Psych 3.0.2。
  • 更新到 Rubygems 2.7.3。
  • 更新到 RDoc 6.0.1。
  • 更新到 Unicode 10.0.0。
  • Thread.report_on_exception 默认值现为 true,这对调试多线程程序很有帮助。[功能 #14143]
  • IO#write 现接受多个参数 [功能 #9323]

详见 NEWS 或提交记录以查看详情。

自 Ruby 2.4.0 以来,已有 6158 个文件更改,348484 行增加(+),82747 行删减(-)

圣诞快乐!享受你 Ruby 2.5 的编程之旅吧!

下载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新特性
  • 性能提升
  • 与 2.4 相比的重要变化
  • 下载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档