写点什么

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

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

关注

评论

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

Protocol buffers 的问题和滥用

HoneyMoose

接口测试

Xd

接口测试工具

ES6箭头函数的使用

bo

JavaScript 前端 ES6 7月月更

CentOS 7 常用的 11 个小技巧

耳东@Erdong

Linux 7月月更

什么是 Rest 动词

宇宙之一粟

REST API 7月月更

查策,查策,python字体反爬再一次实践

梦想橡皮擦

Python 爬虫 7月月更

最新的swoole-cli已可以支持Windows,手把手带你在windows体验swoole

迷彩

swoole 服务器开发 7月月更 swoole-cli

JAVA编程规范之建表规约

源字节1号

后端开发

计算机网络之初识网络

未见花闻

7月月更

Vue Router 守卫

程序员海军

Vue 7月月更

MySQL数据库索引

技术小生

索引 7月月更

Redis管道技术/分区

恒山其若陋兮

7月月更

阿里onedate分层思想

奔向架构师

数据中台 7月月更

视频号加强打击低俗内容:对违背公序良俗的内容必须赶尽杀绝

石头IT视角

开源分布式链路追踪对比

穿过生命散发芬芳

链路追踪 7月月更

STM32+ESP8266+MQTT协议连接阿里云物联网平台

DS小龙哥

7月月更

LibcarePlus 用户态热补丁技术那些事

openEuler

安全 openEuler 漏洞 #开源

D1-H 开发板——哪吒 开发入门

贾献华

7月月更

使用 Vue + Three.js 构建交互式 WEB 作品展示集(一)

devpoint

Vue three.js 7月月更

python干货——函数

Java学术趴

7月日更

openEuler 资源利用率提升之道 01:概论

openEuler

开源 openEuler 内核 资源管理

strncat() strncmp()

謓泽

7月月更

通过http请求启动jenkins任务

程序员欣宸

Java jenkins 7月月更

节流和防抖的说明和实现

南极一块修炼千年的大冰块

7月月更

在openEuler社区开源的Embedded SIG,来聊聊它的多 OS 混合部署框架

openEuler

Linux 开源 操作系统 嵌入式 openEuler

汇编语言伪指令详解(附实例)

timerring

汇编语言 7月月更 伪指令

Qt | 设置部件大小 sizeHint、minimumSizeHint、sizePolicy、stretch factor

YOLO.

qt 7月月更

Ruby 1.9发布_Ruby_Rick DeNatale_InfoQ精选文章