InfoQ

新闻

Ruby 1.9发布

作者 Rick DeNatale译者 马家宽 发布于 2007年12月29日 上午12时55分

社区
Ruby
主题
性能和可伸缩性
标签
Rake,
文档,
开源项目发布,
RubyGems

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

没有回复

回复

独家内容

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。

揭示常见的重构误区

相对于Java,.NET在持续重构方面所给与的重视仍然少为人知,大多数人对于重构是否真正属于开发过程,以及如何将其应用到开发过程中持观望态度。Danijel Arsenovski试图为你揭示这些谜题。