写点什么

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:551078
用户头像

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

关注

评论

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

XTransfer技术新人进阶秘诀:不可错过的宝藏Mentor

XTransfer技术

职场新人 职场经验

探索C语言程序奥秘——C语言程序编译与预处理

未见花闻

6月月更

MCN机构遍地开花:博主和作者要谨慎签约、行业水很深

石头IT视角

Android 硬布局item的高级写法

yechaoa

android layout 6月月更

TSDB在民机行业中的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

畅直播|针对直播痛点的关键技术解析

ZEGO即构

直播体验升级 首帧秒开

Redis 那些事

Damon

6月月更

Smartctl 打开设备遇到 Permission denied 问题排查过程记录

耳东@Erdong

Linux smart 6月月更 Permission denied

Java基础:异常处理机制

百思不得小赵

异常 javase 6月月更

主数据建设的背景

奔向架构师

数据仓库 主数据 6月月更

Sumati GameFi生态纵览,神奇世界中的元素设计

鳄鱼视界

非凸联合创始人李佐凡:将量化作为自己的终身事业

非凸科技

人工智能 机器学习 rust 量化交易 算法交易

jwt

卢卡多多

JWT 6月月更

疫情防控,居家办公,网上授课之心得 | 社区征文

sky

初夏征文

海泰前沿技术|隐私计算技术在医疗数据保护中的应用

电子信息发烧客

波卡生态发展不设限的奥义——多维解读平行链

One Block Community

区块链 科技

ERROR日志格式与注意点

zarmnosaj

6月月更

由点到面贯穿整个Java泛型理解

知识浅谈

Java泛型

java定义属性错误_错误处理

工程师日月

6月月更

给你讲懂 MVCC 续篇

Nick

MySQL 源码 MVCC 6月月更 深入解析

如何抓手机的包进行分析,Fiddler神器或许能帮到您!

wljslmz

抓包 fiddler 6月月更

GitHub 高赞的 Flutter 状态管理插件BLoC 简介

岛上码农

flutter ios 安卓开发 跨平台开发 6月月更

“阿里健康”们的逻辑早就变了

科技新知

netty系列之:在netty中使用tls协议请求DNS服务器

程序那些事

Java Netty 程序那些事 6月月更

升哲科技 AI 智能防溺水服务上线

SENSORO

大数据 AI 物联网

我国SaaS产业的发展趋势与路径

小炮

实战攻防演练中的四大特点

穿过生命散发芬芳

6月月更 攻防演练

Java Core 「17」ThreadLocal

Samson

学习笔记 Java core 6月月更

谈谈飞书对开发工作的优势 | 社区征文

武师叔

初夏征文

Ruby 1.9发布_Ruby_Rick DeNatale_InfoQ精选文章