Ruby 編程語(yǔ)言的創(chuàng)建者和首席設(shè)計(jì)師 Yukihiro Matsumoto(松本行弘)近期在某演講中分享了 Ruby 3 的一些情況。
原本 Ruby 3 計(jì)劃在東京奧運(yùn)會(huì)前夜發(fā)布,但奧運(yùn)會(huì)被推遲到 2021 年,所以一些核心開(kāi)發(fā)者想知道 Ruby 3 是否也會(huì)順理成章地推遲一年發(fā)布。討論后最終還是決定今年發(fā)布,并且現(xiàn)在定于 12 月 25 日。
“我們決定今年發(fā)布 Ruby 3,因?yàn)樽鳛殚_(kāi)源社區(qū),我們必須前進(jìn)。我們必須繼續(xù)前進(jìn),開(kāi)源社區(qū)通常不能停止發(fā)展,否則就是等死……”松本表示,過(guò)去四五年一直在談?wù)?Ruby 3 的未來(lái),但是一直也沒(méi)見(jiàn)發(fā)布,不過(guò)今年是真的會(huì)在 12 月 25 日圣誕節(jié)推出 Ruby 3。在圣誕節(jié)發(fā)布 Ruby 升級(jí)是社區(qū)的一項(xiàng)傳統(tǒng)。
接著松本分享了所有編程語(yǔ)言面臨的困境:升級(jí)與不升級(jí)的矛盾。在應(yīng)用運(yùn)行穩(wěn)定的基礎(chǔ)上,如果大改語(yǔ)言,那么就會(huì)帶來(lái)艱難升級(jí)的危險(xiǎn),Python、PHP 與 ECMAScript 都是很好的例子,它們的社區(qū)花了許多年才能接受這些變化。“使用 Python 3,社區(qū)花了十多年的時(shí)間;PHP 6 甚至被取消了,直接從 PHP 5 開(kāi)始創(chuàng)建 PHP7;EMCAScript 4 也被取消了。”
松本解釋說(shuō),如果不做出改變,人們可能會(huì)離開(kāi)社區(qū),而如果升級(jí)到更高版本則會(huì)帶來(lái)太多痛苦,他們也可能會(huì)離開(kāi)社區(qū)。這種進(jìn)退兩難的情況可能是每個(gè)編程語(yǔ)言面臨的困境,不過(guò)松本覺(jué)得這種時(shí)候更應(yīng)該向前:“因此,正如我所說(shuō),設(shè)計(jì)一種語(yǔ)言很困難,但是無(wú)論如何我們都必須向前邁進(jìn),以創(chuàng)造未來(lái)。”
同時(shí),在這種情況下,保持兼容性是很重要的。松本為 Ruby 3 明確了三個(gè)具體的目標(biāo):快速、并發(fā)與準(zhǔn)確。“使 Ruby 更快,并使 Ruby 程序員更高效”。
為了使 Ruby 更快,開(kāi)發(fā)團(tuán)隊(duì)將從改進(jìn)其即時(shí)編譯器(JIT)開(kāi)始;為了實(shí)現(xiàn)并發(fā),將避免使用其它語(yǔ)言的解決方案,諸如 ECSMAScript 7 添加了帶有關(guān)鍵字 async 和 await 的控制機(jī)制。Ruby 3 會(huì)改為實(shí)現(xiàn)其期待已久的異步 i/o fiber,作為控制異步線程的更好的方法。fiber 之間的上下文切換速度很快,因此性能會(huì)更高。
讓 Ruby 更加準(zhǔn)確的方法是優(yōu)化早期檢查錯(cuò)誤,主要靠類型分析器實(shí)現(xiàn),它將生成 Ruby 簽名,Ruby 3 將為其核心庫(kù)提供類型簽名,可用于類型檢查以及增強(qiáng)將來(lái)的 IDE。
松本還介紹了 Ruby 3 將帶來(lái)的三個(gè)新語(yǔ)法特性。第一個(gè)是便捷的模式匹配語(yǔ)法:
第二個(gè)新特性允許將值分配給等號(hào)右側(cè)的變量,“這在某些情況下非常方便。”
第三個(gè)新特性是為塊參數(shù)編號(hào):
不過(guò)松本也解釋,Ruby 3 語(yǔ)法上不會(huì)有太大變化,穩(wěn)定性很重要,他們將專注于改進(jìn) Ruby 的現(xiàn)有支持工具,例如用于語(yǔ)言服務(wù)器協(xié)議的 Solargraph、用于靜態(tài)類型檢查的 Sorbet,以及 Rubocop 的代碼 linter。
最后松本提及目前他正在考慮的“較小的 Ruby”這一瘋狂的想法,“我正在考慮使用較小的 Ruby 子集,該子集更簡(jiǎn)單并且更嚴(yán)格,并希望更快或更容易進(jìn)行優(yōu)化。”這一子集是向下兼容的,也就是說(shuō),它可以運(yùn)行在所有當(dāng)前版本的 Ruby 中。
責(zé)編AJX
-
源代碼
+關(guān)注
關(guān)注
96文章
2945瀏覽量
66770 -
開(kāi)源工具
+關(guān)注
關(guān)注
0文章
27瀏覽量
4495 -
ruby
+關(guān)注
關(guān)注
0文章
44瀏覽量
3457
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論