Ho lokolloa ha puo ea lenaneo la Ruby 3.2

Ruby 3.2.0 e lokollotsoe, e leng puo e matla ea lenaneo e shebaneng le ntho e sebetsang hantle haholo ho nts'etsopele ea lenaneo mme e kenyelletsa likarolo tse ntle ka ho fetisisa tsa Perl, Java, Python, Smalltalk, Eiffel, Ada le Lisp. Khoutu ea morero e ajoa tlas'a BSD ("2-clause BSDL") le laesense ea "Ruby", e bolelang mofuta oa morao-rao oa laesense ea GPL mme e lumellana ka botlalo le GPLv3.

Lintlafatso tsa mantlha:

  • E kentse boema-kepe ba pele ba mofetoleli oa CRuby o kopanyang khoutu ea mahareng ea WebAssembly ho sebetsa ho sebatli sa marang-rang kapa tlas'a linako tse ikemetseng tse kang wasmtime. Bakeng sa ho sebelisana ka ho toba le mokhoa oa ho sebetsa ha o sebetsa ka thoko, WASI (WebAssembly System Interface) API e sebelisoa. Har'a lintho tse ling, VFS e tlamang ka holim'a WASI e fanoa, e leng se u lumellang hore u kenye kopo eohle ka puo ea Ruby ka pono ka mokhoa oa faele e le 'ngoe ea wasm. Ho matha ka har'a sebatli ho ka sebelisoa ho theha lithupelo le lits'ebeletso tsa webo tsa demo joalo ka TryRuby. Boemong ba hajoale ba nts'etsopele, boema-kepe bo atlehile ho fetisa li-suite tsa tlhahlobo tsa mantlha le tsa bootstrap, tse sa sebeliseng Thread API. Kou le eona ha e tšehetse Fiber, Exceptions, kapa Pokello ea Lithōle.
  • The in-process JIT compiler YJIT, e entsoeng ke baetsi ba Shopify e-commerce platform e le karolo ea mohato oa ho eketsa ts'ebetso ea mananeo a Ruby a sebelisang moralo oa Rails le ho bitsa mekhoa e mengata, e phatlalalitsoe hore e tsitsitse ebile e loketse. tshebediso ya tlhahiso. Phapang e ka sehloohong ho tloha ho moqapi oa MJIT JIT o neng o sebelisoa pele, o itšetlehileng ka mokhoa oa ho sebetsana le mekhoa le ho sebelisa moqapi oa C o ka ntle, ke hore YJIT e sebelisa Lazy Basic Block Versioning (LBBV) 'me e na le motlatsi oa JIT o kopantsoeng. Ka lebaka la LBBV, JIT e bokella feela qalo ea mokhoa qalong, 'me e bokella tse ling ka mor'a nako e itseng, ka mor'a hore mefuta ea mefuta-futa le likhang tse sebelisoang li khethoe nakong ea ho bolaoa. YJIT e fumaneha bakeng sa meralo ea x86-64 le arm64/aarch64 ho Linux, MacOS, BSD, le lipolanete tse ling tsa UNIX.

    Ho fapana le CRuby, khoutu ea YJIT e ngotsoe ka Rust 'me e hloka hore rustc 1.58.0+ compiler e bokelle, kahoo ho bokella YJIT ho koaletsoe ka ho sa feleng' me ke boikhethelo. Ha u sebelisa YJIT, keketseho ea 41% ea ts'ebetso e tlalehiloe ha ho etsoa tlhahlobo ea yjit-bench ha e bapisoa le ho sebelisa tlhaloso.

    Ho lokolloa ha puo ea lenaneo la Ruby 3.2

  • E ekelitse ts'ireletso e eketsehileng khahlanong le litlhaselo tse bakang ho haneloa ha ts'ebeletso ha o sebetsana le data ea kantle ka mantsoe a tloaelehileng a sa sebetseng le a nako e telele (ReDoS). Algorithm e ntlafalitsoeng haholo, e sebelisang mokhoa oa ho hopola. Mohlala, nako ea tšebetso ea poleloana '/^a*b?a*$/ =~ "a" * 50000 + "x"' e fokolitsoe ho tloha ho metsotsoana e 10 ho isa ho 0.003. Theko ea ho ntlafatsa ke keketseho ea tšebeliso ea memori, eo tšebeliso ea eona e ka bang makhetlo a 10 ho feta boholo ba data ea ho kenya. Tekanyo ea bobeli ea ts'ireletso ke bokhoni ba ho hlalosa nako ea nako (mohlala, "Regexp.timeout = 1.0"), eo polelo e tloaelehileng e tlamehang ho ba le nako ea ho sebetsa.
  • Syntax_suggest mode e kenyellelitsoe ho thusa ho fumana lisosa tsa liphoso tse amanang le polelo ea ho koala ea "qetellong" e sieo kapa e sa hlokahaleng. `Qetellong' e sa bapisoang, lentsoe la sehlooho le sieo (`etsa', `def`, `haeba`, joalo-joalo) ? Ntja ea sehlopha sa 1 > 2 defbark > 3 end 4 end
  • E kentse bokhoni ba ho tšoaea likhang ha ho e-na le liphoso tse amanang le mefuta le likhang ho mokhoa oa sebaka sa phoso, mohlala: test.rb:2:in `+': ha ho letho le ka qobelloang ho kena Integer (TypeError) sum = ary[ 0] + ary [1] ^^^^^^^
  • E kentse syntax e ncha bakeng sa ho fetisetsa mekhoa e meng ea likhang: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler e sisintsweng - mofuta o mong wa mokgoboketsi wa kgale wa MJIT JIT, o ngotsweng hape ka puo ya Ruby. E netefalitse ts'ebetso ea MJIT ka mokhoa o fapaneng, ho fapana le ho bolaoa ka khoele ea basebetsi ba MJIT.
  • Ho Bundler 2.4, ho sebetsana le ts'epo ho sebelisa mofuta oa PubGrub, hape o sebelisoang ke mookameli oa sephutheloana sa pub bakeng sa Dart. Algorithm e sebelisitsoeng pele ea Molinillo e ntse e tsoela pele ho sebelisoa ho RubyGems, empa hape e tla nkeloa sebaka ke PubGrub nakong e tlang.
  • Liphetolelo tse ntlafalitsoeng tsa li-module tsa lehakoe tse hahelletsoeng ka har'a laebrari.

Source: opennet.ru

Eketsa ka tlhaloso