IronRuby項(xiàng)目概述及進(jìn)展
微軟在MIX'07上就宣布了IronRuby,然而兩年后我們?nèi)匀粵](méi)有看到1.0版。2008年1月,InfoQ曾經(jīng)采訪過(guò)John Lam,當(dāng)時(shí)John表示他們會(huì)在2008下半年發(fā)布,但***卻沒(méi)有實(shí)現(xiàn)。
作為開(kāi)發(fā)人員,我們當(dāng)然知道構(gòu)造軟件通常都會(huì)比你認(rèn)為的要費(fèi)時(shí)間。
IronRuby項(xiàng)目的程序經(jīng)理Jimmy Schementi在OSCON 2009上做了題為“IronRuby 0.9”的講演,他概述了微軟在IronRuby 1.0上的進(jìn)度。自從2008年采訪John Lam之后,IronRuby已經(jīng)又前進(jìn)了許多,其中有一些值得我們回顧:
IronRuby 0.6
于2009年7月發(fā)布,是一個(gè)非常重要的里程碑。Jimmy在他的博客中寫道:
性能是這個(gè)版本的主要關(guān)注點(diǎn),啟動(dòng)速度更快了,內(nèi)建類型也得到了優(yōu)化。Ruby的兼容性(可以跑Cucumber了!)以及與.NET的互操作得到了極大的改善。
IronRuby 0.9
Jimmy在OSCON上的講演主要是關(guān)于此版本的,這個(gè)版本將會(huì)包括***一組主要特性。Jimmy在最近的一篇博客中對(duì)此做了描述,其中包含了IronRuby的關(guān)鍵組件以及這些組件對(duì)開(kāi)法人員的意義。
跨平臺(tái)、跨瀏覽器的Ruby實(shí)現(xiàn):
任何時(shí)候當(dāng)人們聽(tīng)到.NET的時(shí)候,他們立刻會(huì)想到“Windows"。但是Miguel和Mono團(tuán) 隊(duì)證明這并非事實(shí)。他們構(gòu)建了一個(gè)開(kāi)源的.NET實(shí)現(xiàn),可以運(yùn)行在Linux、Mac OS和Windows系統(tǒng)上。他們還構(gòu)建了開(kāi)源的Silverlight 2,叫做Moonlight,這樣Silverlight程序就可以在使用Mozilla插件體系的Linux瀏覽器上運(yùn)行了。Silverlight 2本身可以運(yùn)行在使用Intel處理器Mac和Windows系統(tǒng)上。由于IronRuby可以運(yùn)行在.NET和Silverlight上,因此也可以運(yùn) 行在Mono和Moonlight上。
由于IronRuby是與.NET集成在一起的,因此你可以在IronRuby中調(diào)用任何已有的.NET代碼。這意味著可以在IrongRuby中使用任何 框架,比如Windows Forms、WPF或者GTK(#),因?yàn)?NET和Mono(分別)擁有對(duì)這些框架的CLI綁定。Mono甚至有一個(gè)使用GTK實(shí)現(xiàn)的Windows Forms,這樣應(yīng)用程序無(wú)須修改就可以運(yùn)行在兩個(gè)實(shí)現(xiàn)上。
動(dòng)態(tài)語(yǔ)言與靜態(tài)語(yǔ)言的互操作:
IronRuby與.NET框架集成的非常緊密,在IronRuby中調(diào)用C#/VB代碼不會(huì)感覺(jué)是在使用“互操作”。C#也可以通過(guò)DLR Hosting API調(diào)用IronRuby代碼。而在.NET 4.0中,動(dòng)態(tài)方法分配已經(jīng)成為了C#的一部分,因此在C#中調(diào)用IronRuby代碼和調(diào)用C#方法差不多。由于IronRuby基于DLR,因此也可 以方便的與其它DLR語(yǔ)言進(jìn)行交互,如今Python和Ruby可以很好的合作,未來(lái)的DLR語(yǔ)言也一樣可以。
性能方面的改進(jìn)非常明顯,Ruby on Rails的啟動(dòng)時(shí)間從80多秒下降到20秒左右。另一個(gè)值得注意的是,目前IronRuby可以運(yùn)行RubySpec測(cè)試了:
兼容性是一個(gè)重大的改進(jìn)。每次check-in時(shí),我們都運(yùn)行RubySpec測(cè)試,通過(guò)率是85%。這些測(cè)試來(lái)自于流行的Ruby框架,包括Rails、Rake、RSpec和RubyGems。不斷增加的兼容性bug,將是通往1.0路上要解決的主要問(wèn)題。
此外,該版本還支持Win32OLE庫(kù),這使Ruby程序可以與COM進(jìn)行交互,就像MRI上運(yùn)行的Watir那樣。
性能與其它Ruby實(shí)現(xiàn)做了比較,如MRI:
性能方面的表現(xiàn)也很好。在Ruby benchmark suite測(cè)試中,***版本在幾乎整個(gè)測(cè)試中都有MRI兩倍以上的性能表現(xiàn)。
IronRuby 1.0
IronRuby 1.0到底什么時(shí)候才能發(fā)布?這取決于整個(gè)社區(qū)。我們將會(huì)在0.9的子版本(0.9.1,0.9.2……)中持續(xù)改進(jìn),直到社區(qū)認(rèn)為IronRuby 1.0可以發(fā)布。
IronRuby官方網(wǎng)站: http://ironruby.net/
【編輯推薦】