Ruby 2.5.0概览

2018 年 1 月 25 日

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

六年来,Ruby 一直遵循每年圣诞节期间新发布一个主版本的传统。去年12 月25 日,Ruby 2.5.0 发布。

Ruby 2.5.0 主要是给出了多个性能相关的改进,其中最显著的改进是从字节码中移除了所有追踪指令,这使性能上提高了 5% 到 10%。最初,添加追踪指令是为了支持 TracePoint 。但是在很多情况下,TracePoint 并未使用,只是增添了开销。现在,Ruby 转而支持动态指令技术(dynamic instrumentation)。其它一些性能相关的改进包括:以参数形式传递代码块(Block)的性能提高了三倍,从模板生成ERB 代码的性能提高了两倍。一些Ruby 内建函数的性能也得到了改进,其中包括 Array#concatString#concatEnumerable#sort_by等,以及用于多线程的Mutex类。

除了一些性能上的改进,现在Struct.new支持创建接受关键词参数的类, do/end代码块可以直接与 ensure/rescue/else 控制流一并使用。

在对软件库的支持上,Ruby 2.5.0 将一些标准软件库提升到缺省软件包(Gems)中,其中包括了 cmath、csv、date、dbm、etc、fcntl、fiddle、fileutils、gdbm、ipaddr、scanf、sdbm、stringio、strscan、webrick、zlib 等。同时,2.5.0 内建了广为使用的pp命令,在程序中不再需要明确指明require pp,这是 Ruby 程序中最常出现的一行命令。

Ruby 开发人员现在可以选择逆序输出堆栈跟踪(Stacktrace)信息。这样,堆栈跟踪中的重大错误消息显示在前面,而非最后显示。但是该特性是实验性的,可能会在随后的版本中移除。

Ruby 2.5.0 还支持分支和方法覆盖度量,可以在代码执行期间对不同的方法和分支调用做更好的性能测试。

Ruby 2.5.0 完全禁用了顶层常量查找(Constant Lookup),会给出一个警告,而非错误。新版本中添加了 yield self,用于在自身的上下文中回调一个指定的代码块(译者注:语法糖)。不同于也是返回一个代码块的tap命令,该语法在对象链(Chaining)中十分有用。

Ruby 2.5.0 可在官方网站下载。

查看英文原文: Ruby 2.5.0 Overview

2018 年 1 月 25 日 18:036526
用户头像

发布了 364 篇内容, 共 88.1 次阅读, 收获喜欢 160 次。

关注

评论

发布
暂无评论
发现更多内容

一文搞懂所有HashMap面试题

云流

编程 面试 计算机

区块链可信数据服务平台搭建解决方案

t13823115967

区块链 可信区块链

架构师训练营第十周作业

我是谁

极客大学架构师训练营

连企业业务模式都搞不清楚,何谈研发体系建设?

菜根老谭

研发体系

Linux笔记(二): vim 基本操作

Leo

Linux 学习 前端进阶训练营

看了 5 种分布式事务方案,我司最终选择了 Seata,真香!

程序员内点事

Java 分布式事务 seata

红外遥控接收发射原理及ESP8266实现

IoT云工坊

人工智能 物联网 esp8266 红外遥控 pwm

监控之美——Prometheus云原生监控

华章IT

运维 云原生 监控 Prometheus

区块链版权应用开发,区块链助力版权保护

13530558032

GitHub 标星 1.3k+,一款超赞的用于字符串处理的 Java 8 库,附带源码分析

沉默王二

Java GitHub 字符串

Linux 服务器开发学习路线总结(配图 c/c++ )后台开发、Golang后台开发、后端技术栈

Linux服务器开发

golang Linux 后台开发 后端开发 Linux服务器

前嗅教你大数据:常见的网站反爬策略与解决方案

前嗅大数据

大数据 数据采集 代理IP 网站反爬 反爬策略

微前端架构初探

徐小夕

Java 前端 前端开发 微前端 前端进阶

浅谈原子操作

阿里云基础软件团队

内核

实体经济的数智化要塞,为什么是供应链?

脑极体

极客大学 - 架构师训练营 第十周总结

9527

接口测试和性能测试的区别

测试人生路

软件测试 性能测试 接口测试

5个高效的Flutter开发工具

咸鱼杰克

flutter 跨平台 dart

信息聚合接口的实现与展望

QiyihaoLabs

高并发系统设计

区块链溯源有哪些优势?区块链产品溯源系统搭建

13530558032

一口气看完45个寄存器,CPU核心技术大揭秘

程序员架构进阶

cpu 操作系统 寄存器 核心

智慧警务大数据平台搭建_公安大数据应用平台

13530558032

淘宝APP高并发架构设计pdf已开源:从架构分层到实战维护,挑战全网

马士兵老师

Java 编程语言 高并发 淘宝 高并发系统设计

【2020GET】即构科技蒋宁波:教育行业客户需求的核心是什么?

ZEGO即构

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

比伯

Java 架构 面试 编程语言 计算机

LeetCode题解:17. 电话号码的字母组合,回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Java开发利器之重试器

Java老k

Java

Windows环境下如何进行线程Dump分析

Java老k

Java dump

Spring 源码阅读环境的搭建

程序员小航

spring 源码 环境安装 源码阅读 spring 5

感恩,改变世界的开发者们!

京东智联云开发者

开发者 程序人生

五年Java开发经验,4面阿里成功拿下offer,分享一下个人面经!

Java成神之路

Java 程序员 架构 面试 编程语言

Ruby 2.5.0概览-InfoQ