Shpërndarja e gjuhës së programimit Ruby 3.2

Ndodhi lansimi i Ruby 3.2.0, një gjuhë programimi dinamike, objekt-oriented, e cila shquhet për efikasitetin e madh në zhvillimin e programeve dhe përfshin karakteristikat më të mira të Perl, Java, Python, Smalltalk, Eiffel, Ada dhe Lisp. Kodi i projektit shpërndahet nën licencat BSD ("2-clause BSDL") dhe "Ruby", e cila i referohet versionit më të fundit të licencës GPL dhe është plotësisht e përputhshme me GPLv3.

Përmirësimet kryesore:

  • E shtuar porti fillestar i interpreterit CRuby, i cili kompilohet nĂ« kod ndĂ«rmjetĂ«s WebAssembly pĂ«r ta ekzekutuar nĂ« shfletues ose nĂ«n menaxhimin e runtime-ve tĂ« veçanta, si wasmtime. PĂ«r ndĂ«rveprimin direkt me sistemin operative gjatĂ« ekzekutimit tĂ« veçuar pĂ«rdoret API WASI (WebAssembly System Interface). Midis gjĂ«rave tĂ« tjera, Ă«shtĂ« ofruar njĂ« veshje VFS mbi WASI, e cila lejon paketimin e tĂ«rĂ« aplikacionit nĂ« gjuhĂ«n Ruby nĂ« njĂ« pĂ«rfaqĂ«sim tĂ« vetĂ«m wasm-file. Ekzekutimi nĂ« shfletues mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar shĂ«rbime web arsimore dhe demonstrative, si TryRuby. NĂ« kĂ«tĂ« fazĂ« tĂ« zhvillimit, porta kalon me sukses grupe testuese basic dhe bootstrap, nĂ« tĂ« cilat nuk pĂ«rdoret API Thread. Po ashtu, nĂ« portin nuk mbĂ«shteten fiberset (Fiber), pĂ«rjashtimet dhe grumbullimi i plehrave.
  • Deklaruar i qĂ«ndrueshĂ«m dhe gati pĂ«r pĂ«rdorim tĂ« brendshĂ«m, JIT-kompiluesi YJIT, i krijuar nga zhvilluesit e platformĂ«s e-commerce Shopify, nĂ« kuadĂ«r tĂ« iniciativĂ«s pĂ«r rritjen e performancĂ«s sĂ« programeve Ruby qĂ« pĂ«rdorin framework-un Rails dhe thĂ«rrasin shumĂ« metoda. Dallimi kyç nga JIT-kompiluesi mĂ« parĂ« i pĂ«rdorur MJIT, i cili bazohet nĂ« pĂ«rpunimin e metodave tĂ« plota dhe pĂ«rdor njĂ« kompiler tĂ« jashtĂ«m nĂ« gjuhĂ«n C, Ă«shtĂ« se YJIT aplikon versionimin e bllokut bazĂ« (LBBV - Lazy Basic Block Versioning) dhe pĂ«rmban njĂ« kompiler JIT tĂ« integruar. FalĂ« LBBV, JIT fillimisht kompilon vetĂ«m fillimin e metodĂ«s, ndĂ«rsa pjesa tjetĂ«r e kompiluar nĂ« njĂ« kohĂ« mĂ« vonĂ«, pas pĂ«rcaktimit tĂ« tipave tĂ« variablave dhe argumenteve tĂ« pĂ«rdorura gjatĂ« ekzekutimit. YJIT Ă«shtĂ« i disponueshĂ«m pĂ«r arkitekturĂ«n x86-64 dhe arm64/aarch64 nĂ« Linux, MacOS, BSD dhe platforma tĂ« tjera UNIX.

    Ndryshe nga CRuby, kodi YJIT është shkruar në gjuhën Rust dhe kërkon për kompilim prani të kompilatorit rustc 1.58.0+, kështu që ndërtimi i YJIT është nën ndihmën e default-it dhe është i opsional. Kur përdoret YJIT, është vënë re një rritje e performancës prej 41% në testin yjit-bench në krahasim me përdorimin e interpretimit.

    Shpërndarja e gjuhës së programimit Ruby 3.2
  • Shtuar njĂ« mbrojtje shtesĂ« nga sulmet qĂ« shkaktojnĂ« refuse-of-service gjatĂ« trajtimit tĂ« tĂ« dhĂ«nave tĂ« jashtme nĂ« shprehje tĂ« rregullta e joligjore (ReDoS). Ka pĂ«rmirĂ«suar ndjeshĂ«m algoritmin e pĂ«rputhjes, nĂ« tĂ« cilin pĂ«rfshihet teknika e memorizimit. PĂ«r shembull, koha e ekzekutimit pĂ«r shprehjen ‘/^a*b?a*$/ =~ "a" * 50000 + "x"‘ u shkurtua nga 10 nĂ« 0.003 sekonda. Çmimi i optimizimit Ă«shtĂ« rritja e pĂ«rdorimit tĂ« memories, konsumimi i sĂ« cilĂ«s Ă«shtĂ« rreth 10 herĂ« mĂ« i madh se madhĂ«sia e tĂ« dhĂ«nave tĂ« hyrjes. Masa e dytĂ« e mbrojtjes Ă«shtĂ« mundĂ«sia e pĂ«rcaktimit tĂ« njĂ« kufiri kohor (pĂ«r shembull, "Regexp.timeout = 1.0"), pĂ«r sa kohĂ« duhet tĂ« pĂ«rfundojĂ« pĂ«rpunimi i shprehjes sĂ« rregullt.
  • PĂ«rfshirĂ« nĂ« mĂ«nyrĂ«n syntax_suggest, e cila ndihmon nĂ« diagnostikimin e shkakut tĂ« gabimeve qĂ« lidhen me mungesĂ«n ose shkakun e tepĂ«rt tĂ« shprehjes pĂ«rmbyllĂ«se "end". Unmatched `end’, missing keyword (`do’, `def`, `if`, etj.) ? 1 class Dog > 2 defbark > 3 end 4 end
  • NĂ« mĂ«nyrĂ«n e shfaqjes sĂ« vendit tĂ« gabimeve Ă«shtĂ« shtuar mundĂ«sia e shĂ«njimit tĂ« argumenteve gjatĂ« gabimeve tĂ« lidhura me tipet dhe argumentet, pĂ«r shembull: test.rb:2:in `+’: nil nuk mund tĂ« shndĂ«rrohet nĂ« Integer (TypeError) sum = ary[0] + ary[1] ^^^^^^
  • Shtuar njĂ« sintaksĂ« tĂ« re pĂ«r tĂ« drejtuar nĂ« metoda tĂ« tjera tĂ« grupeve tĂ« argumenteve: def foo(*) bar(*) end def baz(**) quux(**) end
  • Propozuar ruby_vm/mjit/compiler - njĂ« variant i vjetĂ«r i JIT-kompiluesit MJIT, i rikthyer nĂ« gjuhĂ«n Ruby. Siguruar ekzekutimin e MJIT nĂ« njĂ« proces tĂ« veçantĂ«, nĂ« vend qĂ« tĂ« ekzekutohet nĂ« thread-in MJIT punĂ«tor.
  • NĂ« Bundler 2.4, gjatĂ« trajtimit tĂ« varĂ«sive Ă«shtĂ« pĂ«rdorur pĂ«rcaktuesi i versioneve PubGrub, i cili gjithashtu pĂ«rdoret nĂ« menaxherin e paketave pub pĂ«r gjuhĂ«n Dart. Algoritmi i mĂ«parshĂ«m Molinillo vazhdon tĂ« pĂ«rdoret nĂ« RubyGems, por nĂ« tĂ« ardhmen do tĂ« zĂ«vendĂ«sohet me PubGrub.
  • Versionet e moduleve tĂ« integruar dhe atyre qĂ« pĂ«rfshihen nĂ« bibliotekĂ«n standarde janĂ« pĂ«rditĂ«suar.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster