BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 杨晨 关注 0 他的粉丝 发布于 2009年7月25日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

下一版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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT