Sgaoileadh cànan prògramadh Ruby 3.2

Chaidh Ruby 3.2.0 a leigeil ma sgaoil, cànan prògramaidh fiùghantach stèidhichte air nithean a tha gu math èifeachdach ann an leasachadh phrògraman agus a’ toirt a-steach na feartan as fheàrr de Perl, Java, Python, Smalltalk, Eiffel, Ada agus Lisp. Tha còd a’ phròiseict air a chuairteachadh fo cheadan BSD (“2-clause BSDL”) agus “Ruby”, a tha a’ toirt iomradh air an dreach as ùire de chead GPL agus a tha gu tur co-chòrdail ri GPLv3.

Prìomh leasachaidhean:

  • Chuir sinn ris port tùsail den eadar-theangair CRuby, a bhios a’ cruinneachadh a-steach do chòd eadar-mheadhanach WebAssembly airson a ruith ann am brobhsair lìn no fo amannan ruith leotha fhèin leithid wasmtime. Airson eadar-obrachadh dìreach leis an t-siostam obrachaidh nuair a bhios e a’ ruith air leth, thathas a’ cleachdadh an WASI (WebAssembly System Interface) API. Am measg rudan eile, tha pasgan VFS air a thoirt seachad a bharrachd air WASI, a leigeas leat an tagradh Ruby gu lèir a phacadh gu taisbeanadh ann an cruth aon fhaidhle wasm. Faodar ruith ann am brabhsair a chleachdadh gus seirbheisean trèanaidh is demo a chruthachadh leithid TryRuby. Aig an ìre leasachaidh a th’ ann an-dràsta, bidh am port gu soirbheachail a’ dol seachad air na h-ionadan deuchainn bunaiteach agus bootstrap, nach bi a’ cleachdadh an Thread API. Chan eil am port cuideachd a’ toirt taic do Fibres, eisgeachdan, no cruinneachadh sgudail.
  • Chaidh an inneal-cruinneachaidh JIT in-phròiseas YJIT, a chaidh a chruthachadh le luchd-leasachaidh an àrd-ùrlar e-malairt Shopify mar phàirt de dh’ iomairt gus coileanadh phrògraman Ruby a bhios a ’cleachdadh frèam Rails agus a’ gairm mòran dhòighean a mheudachadh, ainmeachadh seasmhach agus deiseil airson. cleachdadh cinneasachaidh. Is e am prìomh eadar-dhealachadh bhon inneal-cruinneachaidh MJIT JIT a chaidh a chleachdadh roimhe, a tha stèidhichte air a bhith a’ giullachd dhòighean slàn agus a’ cleachdadh inneal-cruinneachaidh taobh a-muigh ann an cànan C, gu bheil YJIT a’ cleachdadh Lazy Basic Block Versioning (LBBV) agus anns a bheil inneal-cruinneachaidh JIT aonaichte. Le LBBV, bidh JIT an-toiseach a’ cur ri chèile toiseach a’ mhodh, agus a’ cur ri chèile an còrr beagan ùine às deidh sin, às deidh na seòrsaichean caochladairean agus argamaidean a thathar a’ cleachdadh a dhearbhadh aig àm cur gu bàs. Tha YJIT ri fhaighinn airson ailtireachd x86-64 agus arm64 / aarch64 air Linux, MacOS, BSD agus àrd-ùrlaran UNIX eile.

    Eu-coltach ri Ruby, tha an còd YJIT sgrìobhte ann an cànan Rust agus feumaidh e an inneal-tionndaidh rustc 1.58.0+ airson a chur ri chèile, agus mar sin tha togail YJIT à comas gu bunaiteach agus tha e roghainneil. Nuair a bha iad a’ cleachdadh YJIT, chaidh àrdachadh 41% ann an coileanadh a chlàradh nuair a bha e a’ ruith an deuchainn yjit-bench an coimeas ri bhith a’ cleachdadh mìneachadh.

    Sgaoileadh cànan prògramadh Ruby 3.2

  • Dìon a bharrachd an aghaidh ionnsaighean diùltadh seirbheis nuair a bhios tu a’ giullachd dàta bhon taobh a-muigh ann an abairtean cunbhalach neo-èifeachdach agus ùineail (ReDoS). Tha an algairim maidsidh, a chleachdas an dòigh cuimhneachaidh, air a leasachadh gu mòr. Mar eisimpleir, chaidh ùine cur gu bàs an abairt ‘/^a*b?a*$/ =~“a” * 50000 + “x”’ a lùghdachadh bho 10 gu 0.003 diogan. Tha cosgais optimization na àrdachadh ann an caitheamh cuimhne, agus tha an caitheamh timcheall air 10 tursan nas àirde na meud an dàta cuir a-steach. Is e an dàrna ceum tèarainteachd an comas ùine a mhìneachadh (mar eisimpleir, “Regexp.timeout = 1.0”) nuair a dh’ fheumar an abairt àbhaisteach a phròiseasadh.
  • Tha am modh syntax_suggest air a ghabhail a-steach, a chuidicheas le bhith a’ lorg adhbharan mhearachdan co-cheangailte ri abairt “deireadh” a tha a dhìth no dùnaidh a bharrachd. 'deireadh' gun choimeas, prìomh fhacal a dhìth (`dèan', `def`, `ma tha`, msaa) ? Cù clas 1 > 2 defbark > 3 deireadh 4 deireadh
  • Chaidh an comas argamaidean a chomharrachadh airson mearachdan co-cheangailte ri seòrsaichean agus argamaidean a chur ris a’ mhodh taisbeanaidh àite na mearachd, mar eisimpleir: test.rb:2: ann an `+’: cha ghabh nil a cho-èigneachadh gu Integer (TypeError) sum = ary [0] + araidh [1] ^^^^^^
  • Chaidh co-chòrdadh ùr a chur ris airson seataichean argamaidean ath-stiùireadh gu dòighean eile: def foo(*) bar(*) end def baz(**) quux(**) end
  • Thathas a’ moladh Ruby_vm/mjit/compiler - caochladh den t-seann inneal-cruinneachaidh MJIT JIT, air ath-sgrìobhadh sa chànan Ruby. Dèan cinnteach gun ruith MJIT ann am pròiseas air leth an àite a bhith a’ ruith ann an snàithlean neach-obrach MJIT.
  • Ann am Bundler 2.4, bidh giollachd eisimeileachd a’ cleachdadh an lorgaire dreach PubGrub, a tha cuideachd air a chleachdadh ann am manaidsear pacaid taigh-seinnse airson cànan Dart. Tha an algairim Molinillo a chaidh a chleachdadh roimhe seo fhathast air a chleachdadh ann an RubyGems, ach thèid PubGrub a chuir na àite san àm ri teachd.
  • Tionndaidhean ùraichte de mhodalan gem togte agus an fheadhainn a tha air an toirt a-steach don leabharlann àbhaisteach.

Source: fosgailtenet.ru

Cuir beachd ann