有關(guān)Ruby企業(yè)版1.8.7的一些介紹
前幾周,Ruby企業(yè)版(Ruby Enterprise Edition,簡(jiǎn)稱REE)升級(jí)到了1.8.7,各個(gè)方面對(duì)這個(gè)版本的運(yùn)行情況都十分滿意。下面,InfoQ的Mirko Stocker對(duì)REE 1.8.7的一些情況進(jìn)行了總結(jié)。
Phusion發(fā)布了新的Ruby Enterprise Edition,版本號(hào)為1.8.7-20090928。之前的版本都基于Ruby 1.8.6,該版本開(kāi)始基于Ruby 1.8.7。Ruby 1.8.7發(fā)布已經(jīng)有段時(shí)間了,為什么現(xiàn)在才切換到1.8.7呢?Phusion在發(fā)布聲明中解釋了這個(gè)問(wèn)題:
我們起先并不愿意切換到1.8.7:很多人報(bào)告說(shuō)在引入1.8.7后遇到了各種不兼容的情況,而且其他幾個(gè)Ruby實(shí)現(xiàn)都抵制 1.8.7。然而,現(xiàn)在的情況不同了。Rails 3.0將不再支持Ruby 1.8.7之前的版本,JRuby最近也決定支持1.8.7,并且OS X Snow Leopard和所有Linux發(fā)行版都自帶了1.8.7。我們已經(jīng)收到了來(lái)自社區(qū)的很多請(qǐng)求,希望能有一個(gè)基于1.8.7的版本。
本次發(fā)布還有一些其他的消息——新版本集成了Brent Roman的MBARI補(bǔ)丁,它能改善性能、減少內(nèi)存開(kāi)銷。為了提升多線程速度,該版本中還包含了一個(gè)作為可選實(shí)驗(yàn)特性的補(bǔ)?。ㄗ髡呤荍oe Damato和Aman Gupta)。
這些補(bǔ)丁究竟起了多少改善作用呢?Twitter對(duì)該版本做了測(cè)試,正如Evan Weaver報(bào)告的那樣,它在吞吐量上帶來(lái)了顯著的提升。Evan還補(bǔ)充道“比起-O2或-O3(針對(duì)速度優(yōu)化),用-Os(針對(duì)大小優(yōu)化)編譯的Ruby更快一些。Phusion的Hongli指出Ruby的指令局部性很糟,主要是靠將指令塞進(jìn)指令緩存中來(lái)改善性能的”。
InfoQ向Ruby Enterprise Edition團(tuán)隊(duì)咨詢了在升級(jí)到新版本時(shí)是否存在一些問(wèn)題。Phusion的Ninh Bui回答道:
呃,除了從1.8.6到1.8.7的兼容性問(wèn)題,tcmalloc——我們使用的內(nèi)存分配器——在Snow Leopard上還無(wú)法正常工作。
Ninh的同事Hongli還補(bǔ)充說(shuō):
目前Xen的支持方面還存在一些問(wèn)題:有報(bào)告說(shuō)REE在Xen中運(yùn)行時(shí)輸出了很多(無(wú)害的)警告信息。我們計(jì)劃在以后的版本中加入Xen特有的編譯標(biāo)志來(lái)解決這個(gè)問(wèn)題。至于1.8.6和1.8.7的不兼容性,這是由語(yǔ)義變化造成的,例如,一些方法現(xiàn)在不再返回Array,改為返回 Enumerable;一些標(biāo)準(zhǔn)庫(kù)類有細(xì)微變化,等等。
社區(qū)已經(jīng)接受了這些變化,因此我并不認(rèn)為會(huì)有不兼容的問(wèn)題。
您可在www.rubyenterpriseedition.com獲取到Ruby Enterprise Edition的新版本。
【編輯推薦】