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