Ruby 2.2.0 發佈

我們很高興的宣佈 Ruby 2.2.0 發佈了。

Ruby 2.2 針對使用者對 Ruby 各式各樣的需求,做了許多修正、加了許多新功能與改良。

譬如,垃圾回收器現在可以回收符號物件了。這降低了符號的記憶體使用量,因為在 2.2 版本之前,符號是不可以被 GC 回收的。Rails 5.0 將採用符號 GC 技術,也就是要求使用 Ruby 2.2 以上的版本(進一步了解請參考 Rails 官方 4.2 發佈一文)。

同時也減少了新搭載的增量垃圾回收器的停滯時間,對於執行 Rails 應用程式來說很有用。Rails blog表示 Rails 5.0 的開發將會完善利用增量 GC 和符號 GC。

另一個與記憶體管理有關的新功能是給 configure.in 新增了一個設定,可以啟用 jemalloc,請參考 Feature #9113。這是一個實驗性的功能,預設沒有開啟。我們需要蒐集使用場景與效能資料來確定有良好的效果,確定之後這個功能會預設開啟。

另外加入了一個實驗性的支持,system() 和 spawn() 呼叫和 vfork(2) 一同使用。進一步了解請閱讀 tanaka-san 的部落格(日文)。這個變更預期可以大幅提昇 process 執行外部命令的速度。但 vfork(2) 是一個晦澀的呼叫,可能是個危險的系統呼叫。我們想試試看究竟能提昇多少效能和了解最佳使用場景。

請試試看 Ruby 2.2.0 並享受與 Ruby 2.2.0 的編程時光,有任何發現請告訴我們!

自 2.1 起重要的變更

  • 增量化 GCYARV Maniacs No.12);
  • 符號 GCRubyKaigi 2014 簡報介紹);
  • configure –with-jemalloc Feature #9113
  • 核心函式庫:
    • 支援 Unicode 7.0 #9092
    • 新方法:
      • Enumerable#slice_after #9071、Enumerable#slice_when #9826
      • Float#next_float、Float#prev_float #9834
      • File.birthtime、File#birthtime #9647
      • String#unicode_normalize #10084
  • 系統內建函式庫:
    • 更新 Psych 至 2.0.8;
    • 更新 Rake 至 10.4.2;
    • 更新 RDoc 至 4.2.0;
    • 更新 RubyGems 2.4.5;
    • 更新 test-unit 至 3.0.8(從原碼庫移除,改綁定至 tarball 裡);
    • 更新 minitest 至 5.4.3(從原碼庫移除,改綁定至 tarball 裡);
    • 棄用 mathn。
  • C API:
    • 移除棄用的 API。

參見 NEWS in Ruby repository (WIP) 來了解更多細節。

自 Ruby v2.1.0 以來,計有 1557 變更的檔案,程式碼新增 125039 行,移除 74376 行!

下載

  • https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.bz2
    • SIZE: 13304042 bytes
    • MD5: d03cd4690fec1fff81d096d1c1255fde
    • SHA256: 1c031137999f832f86be366a71155113675b72420830ce432b777a0ff4942955
    • SHA512: 04edc53e8cd1732c3ca61ebeb1d6133614beb10f77f9abb80d8d36352fe8aa205112068e460bf600b2c7e81e0ddcc3b311e7e027c320366f1bd992b3e378a6ad
  • https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz
    • SIZE: 16494584 bytes
    • MD5: cd03b28fd0b555970f5c4fd481700852
    • SHA256: 7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc
    • SHA512: 1ba0c68e1c8d2b60bbd1e218cf36463edbe34cf9418d7593702b631e68d02297465f752e71395f6cfa4104f4cd70a1eb44381ffb74bc7801758b830931fdcfc6
  • https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.xz
    • SIZE: 10304244 bytes
    • MD5: 54b43c6c6c9dd4c4b08ceb03ad0ded7a
    • SHA256: 848714e280fc5fb44dbac3b060b206e56c1947006324ee68a174d68b483ef8ca
    • SHA512: cd7e52faa464df8aca7ccfa23a5f06248e1ad82bc8c9f1829aa1b51ff37b15973b8caaa68e914d837325b8d59427fda4f3cad82c50925e1c84e688324a2a155d
  • https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.zip
    • SIZE: 18441027 bytes
    • MD5: f8e1d0cee4f2d9535a9529ed23ae3700
    • SHA256: e06c1e2b1248cf881749833084b2bec93f7612676009190ff9bc89b8fd07c29f
    • SHA512: 364dd927b496520d95a1b06c68e1a265015f4cab08bdf3efaa323d385e7bf075eae47f2e1db78a629db0f3c0c1ed24e086603ba21e2da02ac06dd3c8b716766e