夜夜躁很很躁日日躁麻豆,精品人妻无码,制服丝袜国产精品,成人免费看www网址入口

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Ruby 4.0正式發(fā)布!推出全新編譯器+原生隔離環(huán)境

0
分享至

克雷西 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI

30周年之際,Ruby語言帶著全新的4.0版本,給開發(fā)者送上了年終大禮。

增隔離命名空間新的JIT編譯器,還有重設(shè)計(jì)的Ractor API,這款開源語言迎來一系列更新。



Ruby是一種開源的面向?qū)ο竽_本語言,在20世紀(jì)90年代由日本人松本行弘開發(fā),遵守GPL協(xié)議和Ruby License。

其主要特性就是簡單快捷,變量沒有類型、任何東西都有值,不需要注釋就可以讀懂。

對于這次更新,網(wǎng)友們給予了高度評價(jià),表示要是沒有Ruby更新,連圣誕節(jié)都不完整了。



那么,30歲的Ruby,這次都迎來了哪些更新呢?

全新編譯器ZJIT

Ruby 4.0中,Rails at Scale團(tuán)隊(duì)正式推出了名為ZJIT的全新即時編譯器(Just-In-Time Compiler)。

這是一種一種傳統(tǒng)的方法級編譯器,核心架構(gòu)采用了靜態(tài)單賦值(SSA,Static Single Assignment)形式的中間表示,旨在突破現(xiàn)有YJIT編譯器的性能上限。

傳統(tǒng)的Ruby解釋器是逐行執(zhí)行代碼,效率較低,而JIT編譯器則是將熱點(diǎn)代碼轉(zhuǎn)換成機(jī)器碼。

其中,YJIT的設(shè)計(jì)理念聚焦于局部,它將編譯視域限制在微小的基本塊(Basic Block)中。

這種策略雖然能快速生成機(jī)器碼并降低內(nèi)存占用,但由于缺乏對代碼整體結(jié)構(gòu)的認(rèn)知,難以進(jìn)行跨越整個方法的全局優(yōu)化。

相對而言,ZJIT引入了SSA中間表示技術(shù)。在這種架構(gòu)下,編譯器會分析完整的方法體并構(gòu)建全局?jǐn)?shù)據(jù)流圖,確保每個變量在邏輯上僅被賦值一次。

這種全局分析能力賦予了ZJIT執(zhí)行常量折疊(在編譯期直接計(jì)算固定結(jié)果)和死代碼消除(移除無效計(jì)算步驟)等深度優(yōu)化的潛力,這些都是YJIT受限于架構(gòu)而難以高效實(shí)現(xiàn)的。

在處理Ruby的動態(tài)類型特性時,兩者也采用了截然不同的路徑。

YJIT傾向于通過版本化機(jī)制保留多條代碼路徑以適應(yīng)不同的變量類型。

ZJIT則采用了側(cè)向退出(Side-exits)機(jī)制。

它會基于當(dāng)前類型穩(wěn)定的假設(shè)生成單一且激進(jìn)優(yōu)化的機(jī)器碼,一旦運(yùn)行時檢測到變量類型不再符合預(yù)期(例如整數(shù)變?yōu)樽址?,程序會立即觸發(fā)側(cè)向退出,終止當(dāng)前優(yōu)化代碼的執(zhí)行并安全回退到解釋器。



這種機(jī)制允許編譯器在假設(shè)成立的前提下剝離大量冗余檢查。

盡管ZJIT目前的綜合性能尚未完全超越成熟的YJIT,但其基于SSA的嚴(yán)謹(jǐn)架構(gòu)可以突破局部優(yōu)化帶來的瓶頸,為Ruby在未來實(shí)現(xiàn)更復(fù)雜的代碼分析和更高的峰值性能奠定了基礎(chǔ)。



隔離命名空間Ruby::Box

Ruby::Box是一個專門用于隔離代碼執(zhí)行環(huán)境的容器類,目的是解決長期困擾Ruby開發(fā)者的“全局污染”問題,并為構(gòu)建更安全、模塊化的應(yīng)用提供原生支持。

這涉及到Ruby的一個核心特性——開放類(Open Class)。

在傳統(tǒng)的Ruby環(huán)境中,任何代碼都可以隨時修改系統(tǒng)內(nèi)置的類(例如給String類添加新方法),這種行為被稱為“猴子補(bǔ)丁”(Monkey Patching)。

雖然這種特性賦予了語言極大的靈活性,但在大型項(xiàng)目中,如果不同的第三方庫同時修改了同一個類,就會引發(fā)嚴(yán)重的命名沖突。

Ruby::Box通過徹底的命名空間隔離(Namespace Isolation)解決了這一難題。



當(dāng)代碼在某個Box中運(yùn)行時,它對內(nèi)置類的修改、定義的全局變量或頂層常量,都被嚴(yán)格限制在當(dāng)前Box的內(nèi)部作用域中,完全不會“泄漏”到外部環(huán)境或其他Box中。

從架構(gòu)設(shè)計(jì)的角度來看,Ruby::Box被定義為Module的子類,這意味著它本質(zhì)上也是一種模塊。

在Ruby4.0的運(yùn)行模型中,所有的用戶主程序默認(rèn)運(yùn)行在名為“main”的Box中。而當(dāng)開發(fā)者通過Ruby::Box.new創(chuàng)建新的隔離環(huán)境時,系統(tǒng)會基于包含最原始、純凈Ruby環(huán)境的“root”Box進(jìn)行復(fù)制。

為了確保高性能,這一過程采用了寫時復(fù)制(Copy-on-Write)技術(shù),這使得創(chuàng)建新Box的內(nèi)存開銷極低,同時保證了各個環(huán)境之間的獨(dú)立性。

此外,Ruby::Box還提供了文件級的作用域控制能力。通常情況下,一個.rb文件的加載和執(zhí)行可以被限定在一個單一的Box中,這意味著該文件內(nèi)的所有方法定義和常量解析都在該Box的上下文中完成。

這對于開發(fā)插件系統(tǒng)、多租戶應(yīng)用或者需要運(yùn)行不可信代碼(沙箱環(huán)境)的場景具有革命性意義。它允許開發(fā)者在保留Ruby動態(tài)特性的前提下,構(gòu)建出更加健壯、安全且易于維護(hù)的系統(tǒng)架構(gòu)。

重設(shè)計(jì)的Ractor API

在Ruby4.0的更新中,為了解決Ruby3.x時代Ractor通信中存在的“多路通信混亂”和“消息竊取”等諸多痛點(diǎn),Ractor API也迎來了一次重大的重構(gòu)。

其核心在于引入了Ractor::Port機(jī)制,讓并行編程變得更加直觀和安全。

在早期版本中,Ractor主要依賴“推”(Push)和“拉”(Pull)兩種模式。當(dāng)多個Ractor向同一個目標(biāo)發(fā)送消息時,接收方往往難以分辨消息的來源,就像所有信件都被塞進(jìn)了一個沒有標(biāo)簽的公共郵箱。

而在新版設(shè)計(jì)中,Ractor::Port充當(dāng)了專用信道的角色,任何人都可以向這個端口發(fā)送消息,但只有端口的創(chuàng)建者才有權(quán)從里面取出消息。這種“多對一”的單向通道設(shè)計(jì),完美契合了Actor模型的語義。



具體的改進(jìn)主要體現(xiàn)在三個方面:

首先是消息的定向投遞與安全性。通過Ractor::Port,消息不再是廣播式的混亂投遞,而是精準(zhǔn)地發(fā)送到指定的端口。這徹底杜絕了“消息竊取”現(xiàn)象,即A模塊發(fā)送的消息意外被B模塊的接收函數(shù)截獲。

其次是摒棄了復(fù)雜的同步原語。新版本廢棄了Ractor.yield和Ractor#take等容易引發(fā)死鎖和競爭條件的舊方法,轉(zhuǎn)而使用更清晰的Ractor#send配合端口機(jī)制。

同時,為了處理Ractor的生命周期,引入了與線程類似的Ractor#join(等待結(jié)束)和Ractor#value(獲取返回值)方法。

特別是Ractor#value,它設(shè)計(jì)為只能被一個Ractor調(diào)用一次,這種限制允許系統(tǒng)在不復(fù)制對象的情況下安全地傳遞返回值,極大地提升了效率。

最后是高效的多路復(fù)用。新的Ractor.select方法經(jīng)過重寫,現(xiàn)在支持同時監(jiān)聽多個Ractor::Port。

當(dāng)任何一個端口收到消息時,select會立即返回該端口和對應(yīng)的消息。這比傳統(tǒng)的輪詢機(jī)制要高效得多,并且解決了過去在復(fù)雜并發(fā)場景下難以協(xié)調(diào)多個數(shù)據(jù)源的問題。

總的來說,Ractor::Port的引入通過更輕量級的實(shí)現(xiàn)和更嚴(yán)謹(jǐn)?shù)耐ㄐ牌跫s,為Ruby開發(fā)者提供了一套既符合直覺又具備高性能的并發(fā)工具箱。

其他更新

除了上面三個比較大的方面,這次Ruby 4.0還有一系列其他更新:

  • 語法更符合直覺:邏輯運(yùn)算符現(xiàn)在可以寫在換行后的行首,不再強(qiáng)制要求放在上一行行末;
  • 核心庫“轉(zhuǎn)正”:Set和Pathname從標(biāo)準(zhǔn)庫升級為核心庫,開發(fā)者無需再手動編寫require語句;
  • 調(diào)試體驗(yàn)升級:當(dāng)發(fā)生參數(shù)傳遞錯誤時,ErrorHighlight功能現(xiàn)在不僅會高亮顯示“調(diào)用出錯”的代碼行,還會同時顯示“方法定義”的代碼行,方便開發(fā)者快速對照排查;
  • 緊跟Unicode標(biāo)準(zhǔn):完整支持Unicode17.0標(biāo)準(zhǔn),能原生識別和處理最新的Emoji17.0表情符號;
  • 更嚴(yán)格的空值檢查:為了防止空值意外轉(zhuǎn)換成空數(shù)組從而掩蓋代碼邏輯中的Bug,nil對象不再響應(yīng)to_a方法;
  • 性能底層優(yōu)化:Class.new(創(chuàng)建新類)的速度在所有場景下都得到了顯著提升;垃圾回收機(jī)制(GC)現(xiàn)在能獨(dú)立管理不同大小的內(nèi)存池,有效降低了內(nèi)存占用;
  • 更靈活的數(shù)組查詢:Array類新增了rfind方法,可以高效地從數(shù)組末尾開始向前查找符合條件的元素;
  • 自定義對象展示:Kernel#inspect方法新增了定制功能,開發(fā)者可以通過定義instance_variables_to_inspect來決定在打印對象調(diào)試信息時顯示哪些變量,避免輸出過多無關(guān)信息。

那么,你覺得更新后的Ruby,有沒有更好用呢?


[1]https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/
[2]https://docs.ruby-lang.org/en/master/Ruby/Box.html
[3]https://railsatscale.com/2025-12-24-launch-zjit/
[4]https://dev.to/ko1/ractorport-revamping-the-ractor-api-98

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
普京官宅遇襲第三天,王毅外長告示全世界,用10個字定義中俄現(xiàn)狀

普京官宅遇襲第三天,王毅外長告示全世界,用10個字定義中俄現(xiàn)狀

風(fēng)云人物看歷史
2025-12-31 10:01:47
TA:槍手以一場令人信服的勝利,有力地證明了他們的冠軍實(shí)力

TA:槍手以一場令人信服的勝利,有力地證明了他們的冠軍實(shí)力

懂球帝
2025-12-31 14:04:07
CC轟27+5+11仍無緣今日最佳!對不起,你碰到暴走的小卡了

CC轟27+5+11仍無緣今日最佳!對不起,你碰到暴走的小卡了

世界體育圈
2025-12-31 14:27:45
南京博物院事件升級,退休員工再曝大瓜,信息量太大,果然不簡單

南京博物院事件升級,退休員工再曝大瓜,信息量太大,果然不簡單

法老不說教
2025-12-23 16:48:26
被排隊(duì)斬殺的美國人為什么不反抗?

被排隊(duì)斬殺的美國人為什么不反抗?

觀雨大神經(jīng)
2025-12-26 19:55:35
42歲金莎帶小男友游歐洲,瘦出尖下巴像蛇精,顏值暴跌靈氣全無

42歲金莎帶小男友游歐洲,瘦出尖下巴像蛇精,顏值暴跌靈氣全無

愛好源自好奇心
2025-12-31 08:36:18
虧大了!王洪澤早上送杜鋒球票 晚上又請全隊(duì)吃宵夜 20萬年薪不夠

虧大了!王洪澤早上送杜鋒球票 晚上又請全隊(duì)吃宵夜 20萬年薪不夠

越嶺尋蹤
2025-12-31 08:49:51
馬筱梅說出玥兒箖箖不能回北京上學(xué)原因,表示老三會在北京上學(xué)

馬筱梅說出玥兒箖箖不能回北京上學(xué)原因,表示老三會在北京上學(xué)

到此為止的印象
2025-12-31 03:40:43
秘魯南部火車相撞事故致4名中國游客受傷

秘魯南部火車相撞事故致4名中國游客受傷

新華社
2025-12-31 13:29:03
中國海警出手!將登船檢查長榮貨輪,攔截美國軍火,敢運(yùn)就沒收?

中國海警出手!將登船檢查長榮貨輪,攔截美國軍火,敢運(yùn)就沒收?

文雅筆墨
2025-12-31 11:02:54
頭一回當(dāng)?shù)?!笑瘋了,天知道新手爸爸能鬧多少笑話

頭一回當(dāng)?shù)?!笑瘋了,天知道新手爸爸能鬧多少笑話

夜深愛雜談
2025-12-24 16:37:48
28國不許解放軍欺負(fù)人,非常罕見,臺軍總部放話:我們還守得住!

普覽
2025-12-31 14:20:45

開拓者3分險(xiǎn)勝獨(dú)行俠!阿夫迪亞27+9+11,楊瀚森獲重用,激活羅威

開拓者3分險(xiǎn)勝獨(dú)行俠!阿夫迪亞27+9+11,楊瀚森獲重用,激活羅威

球場沒跑道
2025-12-30 14:21:11
河北邢臺一家五口遇害案最新進(jìn)展:河北高院裁定同意死刑判決,報(bào)請最高法核準(zhǔn)

河北邢臺一家五口遇害案最新進(jìn)展:河北高院裁定同意死刑判決,報(bào)請最高法核準(zhǔn)

封面新聞
2025-12-31 14:01:04
據(jù)說全球僅20例!巴西一女子在同一晚與2名男子發(fā)生了關(guān)系

據(jù)說全球僅20例!巴西一女子在同一晚與2名男子發(fā)生了關(guān)系

忠于法紀(jì)
2025-12-04 11:25:07
新年首位訪華元首確定,專機(jī)將坐滿200多人,有五點(diǎn)讓人意想不到

新年首位訪華元首確定,專機(jī)將坐滿200多人,有五點(diǎn)讓人意想不到

觸摸史跡
2025-12-31 05:08:33
CBA第8輪最佳陣容:孫銘徽送北京首敗 薩林杰率廣東8戰(zhàn)全勝

CBA第8輪最佳陣容:孫銘徽送北京首敗 薩林杰率廣東8戰(zhàn)全勝

醉臥浮生
2025-12-31 10:34:26
Meta將切斷Manus與中國關(guān)聯(lián)業(yè)務(wù)與股權(quán)關(guān)系

Meta將切斷Manus與中國關(guān)聯(lián)業(yè)務(wù)與股權(quán)關(guān)系

鞭牛士
2025-12-30 14:25:06
英超之夜:阿森納4-1維拉 曼聯(lián)1-1助狼隊(duì)終結(jié)12連敗 切爾西7輪1勝

英超之夜:阿森納4-1維拉 曼聯(lián)1-1助狼隊(duì)終結(jié)12連敗 切爾西7輪1勝

狍子歪解體壇
2025-12-31 06:52:09
哈馬斯確認(rèn)5名高官遇襲身亡

哈馬斯確認(rèn)5名高官遇襲身亡

參考消息
2025-12-30 11:05:11
2025-12-31 15:44:49
量子位 incentive-icons
量子位
追蹤人工智能動態(tài)
11949文章數(shù) 176355關(guān)注度
往期回顧 全部

科技要聞

老羅,演砸了,也封神了?

頭條要聞

6旬老人學(xué)滑翔傘墜亡 家屬認(rèn)為"生死協(xié)議"沒法律效力

頭條要聞

6旬老人學(xué)滑翔傘墜亡 家屬認(rèn)為"生死協(xié)議"沒法律效力

體育要聞

2025全球射手榜:姆巴佩66球 梅西第6C羅第9

娛樂要聞

告別2025年!大S、方大同離世青春退場

財(cái)經(jīng)要聞

高培勇:分配制度改革是提振消費(fèi)的抓手

汽車要聞

凱迪拉克純電中型SUV 售價(jià)不足24萬/33寸曲面屏

態(tài)度原創(chuàng)

手機(jī)
藝術(shù)
數(shù)碼
本地
公開課

手機(jī)要聞

蘋果官方回應(yīng)iPhone 17 Pro充電噪音:建議調(diào)整充電上限

藝術(shù)要聞

中國博物館全書!看遍中國8000年頂流審美

數(shù)碼要聞

前行者推出S9 V2系列中大手對稱鼠標(biāo):金屬漆面外殼+電鍍側(cè)鍵

本地新聞

即將過去的2025年,對重慶的影響竟然如此深遠(yuǎn)

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版 99热在线热| 人人操人人插人人| 亚洲国内精品自在线影院| 国产一二一二在线观看量| wwwyw国产成人精品| 国产精品久久久福利| 在线播放yw163尤物网站| 乱伦的一区二区| 婷婷丁香五月中文字幕| A毛片免费全部播放| 亚洲精品九九在线| 桃花岛亚洲成在人线AV| 日本视频在线播放一区二区| 少妇无码少少妇无码少妇导航少少妇导航网 | 秋霞人妻无码中文字幕| 中文乱字幕后在线视频一又粗又长一91| 沈阳露脸老熟女高潮| 国产熟女高潮视频| 波多野结衣aw在线观看| 日本再线一区二区| 91九色丨PORNY拍自丨蝌蚪| 国产精品久久久久久麻豆一区 | 成年视频人免费网站动漫在线| 黑人粗大亚洲| 男人j桶进女人p无遮挡全过程| 国产69久久精品成人看| 天堂在/线资源中文在线bt| 久久久久亚洲AV无码网址| 国产强奸AV在线| 国产乱人伦真实精品视频| 青草影院内射中出高潮| 88国产精品欧美一区二区三区| 人妻体内射精一区二区三区| 人妻色综合网| av电影在线观看| 久久国产精99精产国高潮 | 综合一区中视频在线播放| 国产野外高潮| 午夜裸体性播放| 欧美理论在线观看| 99re无码|