2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Ruby 1.9 发布

  • 2007-12-29
  • 本文字数:1194 字

    阅读完需:约 4 分钟

2007 年圣诞节刚刚过去,Ruby1.9如约而至

在以往的Ruby 版本中,如果版本号的最后一位为奇数,通常都表示该Ruby 版本为实验版本。所以Ruby1.7 就是一个实验版本,而Ruby1.8 则是一个正式版本。Ruby 核心团队遵循这一规则,将Ruby 的新发布版命名为1.9.0。这意味着Ruby 1.9 不再被认为是实验性版本,虽然其实现到达产品应用的要求尚需一些时日。Matz 表示仍会继续改进 1.9 版本的稳定性。不过 Ruby1.9 的语言定义现在已经稳定下来了,今后也不会再向其加入实验性的特性。包括 Rails 在内的主要 Ruby 项目,已经着手进行 Ruby1.9 的兼容工作。更多这方面的信息可以在下面看到。

Ruby1.9 引入了大量变化和新特性,其中许多都非常自然。例如在向方法传递 hash 参数时,新的 hash 语法格式可以使您不再需要书写“=>”。所以一个像下面这样的调用:

link_to :controller => 'People', :action => "list"现在可以写为:

link_to controller: fred, action: "list"关于 Ruby1.9 版本相对于 1.8 版本的变化信息,最佳的资源一直是 list kept by Mauricio Fernandez 。Mauricio 已经通过人工方式追踪这些变化有近两年的时间。最近他还宣布他将在稍后发布一个通过自动分析版本变更日志生成的新列表

另一个有趣的变化是,一些诸如 Ruby Gems这样的重要 ruby“外部”工具现在也成为了标准库的一部分。

也许最大的变化的还是在内部。Ruby1.9 实现于一个新的 Ruby 虚拟机之上。比起 Matz 团队在之前版本实现中所使用的旧式抽象语法树 (abstract syntax tree,简称 AST) 解释器,这一新的虚拟机要高效的多。YARV 同时在并发方面进行了调整:Ruby 现在使用内核线程(即便由于全局解释器锁的存在,Ruby 代码不会并行执行);此外, Fibers 对延续机制(Continuations)进行了更新并将协同程序(Coroutines)引入到了 Ruby 中

另一方面,Ruby1.9并不向后兼容 Ruby 1.8。一些语义已经发生了变化。例如,块(block)中的参数现在的作用域被限制为块内部,块的语义也有了一些微调。这些变化意味着现有 Ruby 程序需要做出一定的改写后才能使用 Ruby1.9。

Ruby 图书出版商们正在加紧工作。Pragmatic Programmers 最近宣布《Programming Ruby》的第三版(著名的“镐头书”)正在写作过程中。和Pragmatics 的惯例一样,这本书已经以beta 项目方式发布出来,供读者们试读。O’Reilly 也宣布说由 David Flanigan 和 Yukihiro Matsumoto 撰写的《The Ruby Programming Language》一书有望在 2008 年 1 月发布。这本书将对 Matz 的《Ruby in a Nutshell》进行扩展,使其包含 Ruby1.9 的相关内容。

查看英文原文: Ruby 1.9 released - - - - - -

译者简介:马家宽,北京大学软件工程实验室博士研究生,研究方向为过程管理(Process Management)。专业方面的目标是领悟一点软件开发中理论、技术、实践和人这些关键要素的结合之道。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-12-29 00:551231
用户头像

发布了 24 篇内容, 共 44265 次阅读, 收获喜欢 0 次。

关注

评论

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

GreatSQL社区月报 | 2023.04

GreatSQL

greatsql社区

开发中关于HTTPS不得不规避的2个大坑

北桥苏

https TCP/IP ssl

软件测试是青春饭吗?

测吧(北京)科技有限公司

测试

极氪汽车引入瓴羊Quick BI,数据可视化助力企业数字转型

小偏执o

阿里云李钟:弹性计算控制系统团队的提效之路

云布道师

阿里云 弹性计算

Java 8 之后的新特性都是鸡肋吗?

Java你猿哥

Java ssm API Java 8 java 8 的新特性

一种KV存储的GC优化实践

vivo互联网技术

KV存储 GC设计

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

Java你猿哥

Java 数据库 微服务 Spring Boot java面试

穿越数据智能“海峡”,企业更需要什么样的数智底座?

用友BIP

“数字裂变”宇宙,华为云与和伙伴组成“银河护卫队”

脑极体

华为云

MySQL好玩新特性:离线模式

GreatSQL

MySQL greatsql greatsql社区

Java 是如何毁掉你的编程思维的?

Java你猿哥

Java 程序员 ssm

《 Istio 权威指南 》新著重磅发行!华为云云原生团队匠心力作

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

详解集群级备份恢复:物理细粒度备份恢复

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

【5.05-5.12】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

数据治理三大模式详解,治理新范式释放数据潜能

袋鼠云数栈

数据治理

GPT时代,我们应该怎么办?| 社区征文

AIWeker

AI GPT 三周年征文

智慧园区移动应用发展面临瓶颈,如何解决?

没有用户名丶

智能化生产应用搭建的实战案例

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 5 月 PK 榜

硬核!阿里最新出品架构核心场景实战手册,解决99%的架构问题

Java你猿哥

快来答题!看看你是开源几级选手?

开放原子开源基金会

瓴羊Quick BI、帆软横向对比,国内商业BI工具崛起

巷子

mac上哪款系统仪表板好用?实用软件推荐~

真大的脸盆

Mac Mac 软件 系统监测 仪表盘工具

【开发点滴】在vscode的python调试中,如何让调试程序以sudo方式运行?

无人之路

Python vscode ChatGPT

构建自己的思维逻辑体系

老张

逻辑思维 如何解决问题

如何使用Go语言实现面向对象编程中的封装、继承和多态

Jack

从 yield 开始入门协程

乌龟哥哥

三周年连更

Java Web实战 | JDBC案例:实现图书管理

TiAmo

JDBC DAO JavaBean

京东短网址高可用提升最佳实践 | 京东云技术团队

京东科技开发者

最佳实践 高可用设计 企业号 5 月 PK 榜 短网址

如何解决由于TLS版本不兼容导致的问题

JefferLiu

Java TLS

软件测试 | admin后台管理

测吧(北京)科技有限公司

测试

Ruby 1.9发布_Ruby_Rick DeNatale_InfoQ精选文章