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