0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Ruby 3.2.0正式發(fā)布 新增多項改進(jìn)

OSC開源社區(qū) ? 來源: OSC開源社區(qū) ? 2022-12-27 10:49 ? 次閱讀
Ruby 3.2.0 現(xiàn)已發(fā)布,該版本添加了許多功能和性能改進(jìn)。具體更新內(nèi)容如下:

基于 WASI 的 WebAssembly 支持

這是基于 WASI 的 WebAssembly 支持的初始移植。此項特性使得 CRuby 二進(jìn)制文件可在 Web 瀏覽器、Serverless Edge 環(huán)境和其他 WebAssembly/WASI 嵌入器上使用。目前,此移植可在不使用 Thread API 的前提下通過基本和引導(dǎo)測試套件的測試。2cb1ef12-852e-11ed-bfe3-dac502259ad0.png

生產(chǎn)就緒的 YJIT

2cce2984-852e-11ed-bfe3-dac502259ad0.png
  • YJIT 不再是實驗性的

    • 已經(jīng)在生產(chǎn)工作負(fù)載上進(jìn)行了一年多的測試,證明非常穩(wěn)定。

  • YJIT 現(xiàn)在支持 Linux、MacOS、BSD 和其他 UNIX 平臺上的 x86-64 和 arm64/aarch64 CPU

    • 此版本支持 Apple M1/M2、AWS Graviton、Raspberry Pi 4 等。

  • 構(gòu)建 YJIT 現(xiàn)在需要 Rust 1.58.0+。[Feature #18481 ]

    • 為了確保 CRuby 是使用 YJIT 構(gòu)建的,請在運行./configure腳本之前安裝rustc>= 1.58.0 。

  • YJIT 3.2 版本比 3.1 更快,內(nèi)存開銷大約是 3.1 的 1/3。

    • 總體而言,YJIT 比 yjit-bench 上的 Ruby 解釋器快 41%(幾何平均值)。

    • JIT 代碼的物理內(nèi)存是延遲分配的。與 Ruby 3.1 不同,Ruby 進(jìn)程的 RSS 被最小化,因為--yjit-exec-mem-size分配的虛擬內(nèi)存頁在 JIT 代碼實際使用之前不會映射到物理內(nèi)存頁。

    • 引入 Code GC,當(dāng) JIT 代碼的內(nèi)存消耗達(dá)到--yjit-exec-mem-size時,釋放所有代碼頁。

    • RubyVM::YJIT.runtime_stats在現(xiàn)有的inline_code_sizeoutlined_code_sizekeys 之外,還返回 Code GC metrics:code_gc_countlive_page_count、freed_page_countfreed_code_size。

  • RubyVM::YJIT.runtime_stats生成的大部分統(tǒng)計數(shù)據(jù)現(xiàn)在都可以在發(fā)布版本中使用。

    • 只需使用--yjit-stats運行 ruby 來計算和轉(zhuǎn)儲統(tǒng)計信息(會產(chǎn)生一些運行時開銷)。

  • YJIT 現(xiàn)在經(jīng)過優(yōu)化以利用 object shapes。[Feature #18776 ]

  • 在定義新常量時,利用更細(xì)粒度的常量失效來減少代碼的無效化。[Feature #18589 ]

  • 默認(rèn)--yjit-exec-mem-size更改為 64 (MiB)。

  • 默認(rèn)--yjit-call-threshold更改為 30。

針對 ReDoS 的正則表達(dá)式改進(jìn)

由于正則表達(dá)式匹配會耗費不少時間,當(dāng)代碼試圖向不受信任的輸入匹配低效的正則表達(dá)式時,攻擊者可能會利用它進(jìn)行 DoS 攻擊(即正則表達(dá)式 DoS,或稱作 ReDoS)。因此新版本引入了兩項可顯著緩解 ReDoS 攻擊的改進(jìn)。改進(jìn)的正則表達(dá)式匹配算法從 Ruby 3.2 開始,Regexp 的匹配算法通過使用記憶技術(shù)得到了極大的改進(jìn)。
# This match takes 10 sec. in Ruby 3.1, and 0.003 sec. in Ruby 3.2 /^a*b?a*$/ =~ "a" * 50000 + "x"
2ceafd02-852e-11ed-bfe3-dac502259ad0.png2d11e5c0-852e-11ed-bfe3-dac502259ad0.png改進(jìn)后的匹配算法使得大多數(shù) Regexp 匹配(實驗中大約為 90%)在線性時間內(nèi)完成。對于 3.2.0 預(yù)覽版本的用戶:此優(yōu)化可能會消耗與每個匹配的輸入長度成比例的內(nèi)存。預(yù)計不會出現(xiàn)實際問題,因為此內(nèi)存分配通常會延遲,并且正常的 Regexp 匹配最多應(yīng)消耗 10 倍的內(nèi)存輸入長度。正則表達(dá)式超時退出機制此版本引入了正則表達(dá)式超時退出機制。
Regexp.timeout = 1.0

/^a*b?a*$/ =~ "a" * 50000 + "x"
#=> Regexp::TimeoutError is raised in one second
Regexp.timeout根據(jù) Ruby 應(yīng)用程序的要求進(jìn)行配置,可以防止或顯著降低 DoS 的風(fēng)險。請注意,Regexp.timeout是全局配置項,如果希望對某些特殊的正則表達(dá)式使用不同的超時設(shè)置,需要使用timeout關(guān)鍵字Regexp.new。
Regexp.timeout = 1.0

# This regexp has no timeout
long_time_re = Regexp.new("^a*b?a*$", timeout: nil)

long_time_re =~ "a" * 50000 + "x" # never interrupted
此項特性的最初提案:https://bugs.ruby-lang.org/issues/17837

其他值得注意的新功能

語法建議
  • syntax_suggest(以前的dead_end)的功能已集成到 Ruby 中,可以幫助找到錯誤的位置,例如丟失或多余的 end 。

Unmatched `end', missing keyword (`do', `def`, `if`, etc.) ?

  1  class Dog
> 2    defbark
> 4    end
  5  end
[Feature #18159]錯誤高亮
  • 現(xiàn)在它指向 TypeError 和 ArgumentError 的相關(guān)參數(shù)

test.rbin `+': nil can't be coerced into Integer (TypeError)

sum = ary[0] + ary[1]
               ^^^^^^
語言
  • 匿名 rest 和關(guān)鍵字 rest 參數(shù)可以作為參數(shù)傳遞,而不僅僅是在方法參數(shù)中使用。[Feature #18351]

  deffoo(*)
    bar(*)
  end
  defbaz(**)
    quux(**)
  end
更多詳情可查看官方公告:https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ruby
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    3627

原文標(biāo)題:Ruby 3.2.0正式發(fā)布,新增多項改進(jìn)

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點推薦

    又一款藍(lán)牙5.4芯片發(fā)布,發(fā)射性能提升新增多接口

    (電子發(fā)燒友網(wǎng)綜合報道)射頻 SoC 芯片是實現(xiàn)萬物互聯(lián)的核心環(huán)節(jié),利用豐富的無線連接技術(shù)可以實現(xiàn)各種不同場景的連接需求。其中,藍(lán)牙無線連接芯片在物聯(lián)網(wǎng)消費電子領(lǐng)域占據(jù)了重要的市場地位,并憑借低功耗、低延遲、多連接等技術(shù)優(yōu)勢。國際藍(lán)牙技術(shù)聯(lián)盟數(shù)據(jù)顯示,2024年全球低功耗藍(lán)牙設(shè)備出貨量約為18億臺,單臺藍(lán)牙設(shè)備一般搭載單顆射頻藍(lán)牙類SoC芯片。 ? 業(yè)內(nèi)消息指出,昂瑞微推出了新一代低功耗無線射頻芯片OM6629系列方案,支持藍(lán)牙
    的頭像 發(fā)表于 05-21 18:11 ?3186次閱讀

    智融科技再獲多項殊榮

    珠海智融科技股份有限公司(以下簡稱“智融科技”),憑借卓越的創(chuàng)新能力與高速成長動能,近期在珠海市2024年度評選中喜獲多項殊榮。
    的頭像 發(fā)表于 04-11 11:34 ?446次閱讀

    光峰科技為2025款問界M9供應(yīng)智能激光投影巨幕系統(tǒng)2.0

    近日,鴻蒙智行2025款旗艦SUV問界M9正式發(fā)布新增多項黑科技與升級版智駕體驗,打造50萬級銷冠巔峰之上的新氣象,僅上市兩小時,就實現(xiàn)了大定突破一萬輛。
    的頭像 發(fā)表于 03-24 17:49 ?578次閱讀

    SOLIDWORKS 2025 PDM新增功能

    隨著SOLIDWORKS?2025的發(fā)布其PDM系統(tǒng)也迎來了一系列重要的新增功能。這些功能不僅進(jìn)一步簡化了產(chǎn)品數(shù)據(jù)管理流程,還顯著提升了團隊協(xié)作的效率和準(zhǔn)確性。本文將詳細(xì)解析SOLIDWORKS?2025?PDM的新增功能,以便
    的頭像 發(fā)表于 01-22 13:48 ?340次閱讀
    SOLIDWORKS 2025 PDM<b class='flag-5'>新增</b>功能

    荷蘭4月1日起擴大半導(dǎo)體設(shè)備出口管制,新增特定測量設(shè)備等多項技術(shù)

    來源:集成電路材料研究 荷蘭4月1日起擴大半導(dǎo)體設(shè)備出口管制,新增特定測量設(shè)備等多項技術(shù) 據(jù)荷蘭政府官網(wǎng)消息,外貿(mào)和發(fā)展部長Reinette Klever于1月15日在政府公報上宣布,2025年4月
    的頭像 發(fā)表于 01-20 11:39 ?438次閱讀

    四創(chuàng)電子榮獲2024年企業(yè)管理創(chuàng)新成果多項榮譽

    日前,安徽省企業(yè)家聯(lián)合會發(fā)布2024年企業(yè)管理現(xiàn)代化創(chuàng)新成果名單,四創(chuàng)電子獲得多項榮譽。
    的頭像 發(fā)表于 01-08 10:16 ?524次閱讀
    四創(chuàng)電子榮獲2024年企業(yè)管理創(chuàng)新成果<b class='flag-5'>多項</b>榮譽

    SOLIDWORKS 2025設(shè)計新增功能

    SOLIDWORKS 2025的發(fā)布為設(shè)計領(lǐng)域注入了新的活力,其新增功能不僅提升了設(shè)計效率,還增強了協(xié)作和數(shù)據(jù)管理的能力
    的頭像 發(fā)表于 12-20 17:13 ?634次閱讀

    SOLIDWORKS 2025引入了多項新增工具和增強功能

    在工程設(shè)計領(lǐng)域,SOLIDWORKS一直以其強大的功能和靈活的操作性贏得了廣泛的認(rèn)可。隨著SOLIDWORKS 2025版本的發(fā)布,這款三維CAD設(shè)計軟件再次以一系列令人矚目的新增工具和增強功能,為全球設(shè)計師和工程師們帶來了設(shè)計體驗和效率提升
    的頭像 發(fā)表于 12-17 15:23 ?650次閱讀

    【華秋DFM】V4.4新版發(fā)布:以用戶需求為核心,持續(xù)優(yōu)化設(shè)計與制造體驗

    ,我們的開發(fā)團隊終于推出了 華秋DFM 4.4版本 !本次更新基于廣泛收集到的用戶反饋,并針對設(shè)計流程中的痛點進(jìn)行了多項重要改進(jìn),并結(jié)合實際應(yīng)用場景,我們推出了一系列 具有實用價值的新功能及優(yōu)化措施
    發(fā)表于 11-20 22:22

    HyperLynx 2409新增功能和改進(jìn)功能

    作為HyperLynx Schematic Analysis加入HyperLynx系列;Xpedition AMS即將作為HyperLynx AMS加入HyperLynx系列。我們的產(chǎn)品一如既往地出色,并具有以下新增功能和改進(jìn)功能。
    的頭像 發(fā)表于 11-04 11:15 ?1140次閱讀

    請問linux-3.2.0的內(nèi)核支持TLV320AIC3104音頻驅(qū)動嗎?

    請問linux-3.2.0的內(nèi)核支持TLV320AIC3104音頻驅(qū)動么?
    發(fā)表于 10-15 06:29

    請問inux-3.2.0中tlv320aic3x.c驅(qū)動是否支持TLV320AIC3104這款芯片呢?

    TLV320AIC3104搜索到了,但是沒有聲音輸出,量了下波形,時鐘不對。是否是因為linux-3.2.0中tlv320aic3x.c這個驅(qū)動未支持TLV320AIC3104這款芯片呢?有其他人在linux-3.2.0上用過TLV320AIC3104這款芯片么? 電路
    發(fā)表于 10-14 06:53

    云知聲山海大模型多項能力全球領(lǐng)跑

    國內(nèi)人工智能權(quán)威機構(gòu)清華大學(xué)基礎(chǔ)模型研究中心發(fā)布SuperBench九月綜合榜單。本次評測選取海內(nèi)外24個具有代表性的大模型,結(jié)果顯示,山海大模型對齊、智能體、安全等多項能力全球領(lǐng)跑。
    的頭像 發(fā)表于 10-12 14:30 ?763次閱讀
    云知聲山海大模型<b class='flag-5'>多項</b>能力全球領(lǐng)跑

    微軟發(fā)布了Windows 11的Build 26120.1252更新

    今日,微軟面向其Dev頻道的Windows Insider項目成員隆重發(fā)布了Windows 11的Build 26120.1252(KB5038603)更新,此次更新標(biāo)志著多項重要改進(jìn)與優(yōu)化的到來,旨在為用戶帶來更加順暢與高效的
    的頭像 發(fā)表于 07-16 14:42 ?912次閱讀

    光莆股份發(fā)布關(guān)于變更部分募集資金用途及新增募集資金投資項目的公告

    近期,光莆股份發(fā)布《變更部分募集資金用途及新增募集資金投資項目》的公告,新增募投項目“半導(dǎo)體光電傳感器件集成封測研發(fā)及產(chǎn)業(yè)化項目”和“海外智能制造產(chǎn)業(yè)基地擴建項目”的建設(shè),把握技術(shù)革新和市場機遇
    的頭像 發(fā)表于 07-15 17:02 ?682次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品