我被告知ruby 1.9.2是ruby 2.0但ruby 1.9.3预计将在不久的将来发布,它将包含一些性能增强功能.
那么他们有什么计划2.0?它会与ruby 1.9.x有很大的不同吗?
Jör*_*tag 32
已经在YARV中实现的两个特性(很可能最终在Ruby 2.0中)是traits(mix)和Module#prepend.
该mix方法,不像现在的include方法,需要一个列表模块,并结合了所有的人在同一时间,确保他们没有冲突的方法.它还为您提供了一种轻松解决冲突的方法,例如,如果要混合的两个模块定义相同的方法.因此,基本上,虽然该include方法允许您将模块视为mixin,但该mix方法允许您将模块视为特征.
Module#prepend将模块混合到一个类或模块中,同样就像include那样,但不是将它插入到类上方的继承链中,而是插入到类的下方.这意味着模块中的方法可以覆盖类中的方法,并且它们可以委托给overriden方法super,这两种方法在使用时都是不可能的include.这基本上alias_method_chain已经过时了.
一个已经讨论了几个月(或10年,取决于你如何计算)的特征是精炼.现在已经有超过10年的讨论要添加一种在Ruby中进行范围化,安全的猴子修补的方法.也就是我可以修补核心类的方法,但只有我的代码才会看到猴子补丁,其他代码则没有.多年来,这种安全猴子补丁的领跑者是Selector Namespaces,但是最近,Classboxes受到了很多关注,甚至最近,一个原型实现和Refinements规范,Classboxes的变种,被放置了向前.
一般来说,红宝石2.0的大主题是可扩展性:增加了对大团队,大的代码库,更大的问题大小,更大的机器,更多的内核.而且比例降低到更小的机器就像嵌入式设备.
我上面提到的三个功能是扩展到更大的团队和更大的代码库.一些用于扩展到更大问题大小和更多核心的建议功能是并行集合和Enumerable方法的并行实现map,以及更好的并发抽象,例如期货,承诺,代理,参与者,渠道,联接模式或类似的东西.
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |