Útgáfa af Ruby forritunarmálinu 3.2

Ruby 3.2.0 kom út, kraftmikið hlutbundið forritunarmál sem er mjög skilvirkt í þróun forrita og inniheldur bestu eiginleika Perl, Java, Python, Smalltalk, Eiffel, Ada og Lisp. Verkefniskóðanum er dreift undir BSD ("2-lið BSDL") og "Ruby" leyfi, sem vísar til nýjustu útgáfu GPL leyfisins og er fullkomlega samhæft við GPLv3.

Helstu endurbætur:

  • Bætti við upphaflegu tengi fyrir Cruby túlk, sem safnar saman í WebAssembly millikóða til að keyra í vafra eða undir sjálfstæðum keyrslutíma eins og wasmtime. Fyrir bein samskipti við stýrikerfið þegar keyrt er sérstaklega er WASI (WebAssembly System Interface) API notað. Meðal annars fylgir VFS umbúðir ofan á WASI, sem gerir þér kleift að pakka öllu Ruby forritinu í kynningu í formi einnar wasm skráar. Að keyra í vafra er hægt að nota til að búa til þjálfunar- og kynningarvefþjónustur eins og TryRuby. Á núverandi þróunarstigi stenst höfnin með góðum árangri grunn- og ræsiprófunarsvíturnar, sem nota ekki Thread API. Gáttin styður heldur ekki trefjar, undantekningar eða sorphirðu.
  • YJIT JIT þýðandinn í vinnslu, búinn til af hönnuðum Shopify netverslunarvettvangsins sem hluti af átaki til að auka afköst Ruby forrita sem nota Rails rammann og kalla margar aðferðir, hefur verið lýstur stöðugur og tilbúinn fyrir framleiðslunotkun. Lykilmunurinn frá áður notaða MJIT JIT þýðandanum, sem byggir á því að vinna heilar aðferðir og notar ytri þýðanda á C tungumálinu, er að YJIT notar Lazy Basic Block Versioning (LBBV) og inniheldur samþættan JIT þýðanda. Með LBBV safnar JIT aðeins saman byrjun aðferðarinnar og setur restina saman nokkru síðar, eftir að tegundir breyta og rökum sem notaðar eru eru ákvarðaðar við framkvæmd. YJIT er fáanlegt fyrir x86-64 og arm64/aarch64 arkitektúra á Linux, MacOS, BSD og öðrum UNIX kerfum.

    Ólíkt Ruby er YJIT kóðinn skrifaður á Rust tungumálinu og krefst rustc 1.58.0+ þýðanda fyrir samantekt, þannig að YJIT byggingin er sjálfkrafa óvirk og er valfrjáls. Þegar YJIT var notað var 41% aukning á frammistöðu skráð þegar yjit-bekk prófið var keyrt samanborið við notkun túlkunar.

    Útgáfa af Ruby forritunarmálinu 3.2

  • Bætt við viðbótarvörn gegn afneitun á þjónustuárásum við vinnslu utanaðkomandi gagna í óhagkvæmum og tímafrekum reglulegum tjáningum (ReDoS). Samsvörunaralgrímið, sem notar minnistæknina, hefur verið bætt verulega. Til dæmis var framkvæmdartími tjáningarinnar '/^a*b?a*$/ =~ "a" * 50000 + "x"' stytt úr 10 í 0.003 sekúndur. Kostnaður við hagræðingu er aukning á minnisnotkun, neysla hennar er um það bil 10 sinnum hærri en stærð inntaksgagnanna. Önnur öryggisráðstöfunin er hæfileikinn til að skilgreina tímamörk (til dæmis „Regexp.timeout = 1.0“) þar sem vinna þarf úr reglulegu seginu.
  • Syntax_suggest hátturinn er innifalinn, sem hjálpar til við að greina orsakir villna sem tengjast vantar eða auka lokandi „enda“ tjáningu. Ósamsvarandi „endir“, vantar leitarorð („gera“, „def“, „ef“ osfrv.) ? 1 flokkur Hundur > 2 defbark > 3 end 4 end
  • Möguleikinn til að merkja rök fyrir villum sem tengjast tegundum og rökum hefur verið bætt við skjástillingar villustaðsetningar, til dæmis: test.rb:2:in `+': ekki er hægt að þvinga núll í heiltölu (TypeError) summa = ary [0] + ary [1] ^^^^^^
  • Bætti við nýrri setningafræði til að beina settum af rökum yfir á aðrar aðferðir: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler er lagt til - afbrigði af gamla MJIT JIT þýðandanum, endurskrifað á Ruby tungumálinu. Tryggt að MJIT keyrir í sérstöku ferli í stað þess að keyra í MJIT vinnuþræði.
  • Í Bundler 2.4 notar ávanavinnsla PubGrub útgáfuskynjarann, sem einnig er notaður í krápakkastjóranum fyrir Dart tungumálið. Áður notað Molinillo reikniritið er áfram notað í RubyGems, en verður einnig skipt út fyrir PubGrub í framtíðinni.
  • Uppfærðar útgáfur af innbyggðum gimsteinseiningum og þeim sem eru í venjulegu bókasafni.

Heimild: opennet.ru

Bæta við athugasemd