Ruby釋出2.6.0版本第二預覽版,官方提到,這次的第二預覽版釋出的時程比過去都還早,因為包含了重要的功能更新JIT(Just-In-Time)編譯器,另外,除了部分語法更新外,在效能上也有提升。

Ruby在2.6版本將首次實作JIT編譯器,但這個版本目前僅為測試用,沒有太多最佳化,在程式語言方面,也只初步為JIT基礎架構做準備。官方表示,提供JIT編譯器的目的,在於提高Ruby應用程式的執行效能,而與其他語言的JIT編譯器不同,Ruby會先輸出C語言程式碼,再由常用的C語言編譯器來生成原生程式碼,這是比較特殊的JIT編譯方法。

官方表示,現在這個JIT編譯器功能還處在非常早期的階段,僅是提供一個測試的版本,讓開發者檢查在自家環境是否適用,並發現可能存在的安全性風險,而且目前也僅在Ruby以Gcc或是Clang建置,並且編譯器在Runtime可用時才支援JIT編譯器。

在Ruby 2.6.0第二預覽版僅在就JIT編譯器基礎架構做準備,並沒有做太多的最佳化,開發者可以對這個版本做一些效能測試,但不要將其做為最終的效能表現,尤其是像Rails應用程序。未來還會在JIT編譯器中實現iniling方法,預期將會增加Ruby應用程式效能。

在效能方面,Proc#call效率獲得提升,官方提到他們不再需要在意$SAFE,效能因此提升約略1.4倍,另外,block.call也執行的更快了,除了在Ruby 2.5時提升了block傳遞參數的速度,更在2.6中改進了block calling的傳遞效能,因此官方表示,block.call整體效能改進約為之前的2.6倍。

這個版本增加了實驗性功能RubyVM::AST,這個模組具有解析的功能,能將給定的Ruby程式碼字串轉為抽象語法樹(Abstract Syntax Tree,AST)節點,而parse_file方法將能解析給定的Ruby程式碼檔案,同樣回傳AST節點。由於這功能是實驗性質,官方不保證AST節點結構的相容性。

官方也預告,Ruby持續增加平臺支援,而下一個計畫將會支援Visual Studio。


Advertisement

更多 iThome相關內容