Ruby VM综述:Ruby 1.9.2 Preview 1,Ruby版本收集站点

下一版Ruby将在今年晚些时候发布正式版,现在预览版1.9.2 Preview 1已经发布。与此同时还发布了一个详细的更新列表,这个列表给出了API的更新情况:

  • Socket API将更加对象化。
  • 重新实现Time并且加强之。现在的Time没有max/min值,也就是说不存在2038年问题。
  • 使用了新的Random类来生成随机数序列。
  • merb用户的好消息:Method#parameter。

列表的最后一项,新的方法Method#parameters对于Merb的action参数特性是非常必要的。这个特性需要知道一个方法的形式参数的个数和名字。在Ruby 1.8.x中,通常使用ParseTree来实现这个功能,但是由于ParseTree已经废弃,不会在Ruby 1.9.x中存在,所以action参数在1.9.x中不可用。权益之计是在JRuby和Ruby 1.9.1上使用the methodpara这个gem。

现在使用Method#parameters,获得方法的形式参数将会变得非常简单。只需简单地获取方法的句柄,然后调用parameters。例如,方法:

def hello(a,b,x=42, *args)

的参数可以表示为:

[[:req, :a], [:req, :b], [:opt, :x], [:rest, :args]]

简略浏览Ruby Trunk ChangeLog(注意:大文件),我们可以看到Narihiro Nakamura近期所做出的更新。“Longlife GC patch”(链接地址给出了diff)通过改变VMGC来以不同的方式处理长生命周期对象。从这些更新中可以看到,在这次发布版中,长生命周期对象看起来像是方法体和内联的缓存条目。在长生命周期空间中,使用remembered sets来跟踪变化。

在1.9.2中计划加入更多特性;但是究竟哪些特性会加入到最终版本中依然悬而未决。

在数年前,只有一个主流Ruby版本的时候,编写一个兼容的Ruby程序库是非常容易的。现在的程序库不但要兼容Ruby 1.9.x,还要兼容其他各种类型的Ruby实现。

David A. Black搭建了一个介绍Ruby版本的站点,http://ruby-versions.net/:

我搭建了一个站点,你可以ssh登录上去,检视大量历史及现在的Ruby版本以及各种实现,包括Ruby 1.0到1.9.2的快照、Rubinius、JRuby和Ruby企业版等。

另外一个检查跨版本Ruby代码的办法是MultiRuby,它会下载相应的Ruby版本然后在这些版本上运行代码。

查看英文原文:Ruby VM Roundup: Ruby 1.9.2 Preview 1, Ruby Versions Site

你可能感兴趣的:(Ruby VM综述:Ruby 1.9.2 Preview 1,Ruby版本收集站点)