Lëshimi i gjuhës programimi Ruby 3.1

U lançua Ruby 3.1.0, një gjuhë programimi dinamike dhe objekt-orientuese, e cila shquhet për efikasitetin e saj të lartë në zhvillimin e aplikacioneve 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:

  • ËshtĂ« shtuar njĂ« kompiler i ri eksperimental JIT nĂ« procesin e brendshĂ«m YJIT, e krijuar nga zhvilluesit e platformĂ«s sĂ« tregtisĂ« elektronike Shopify si pjesĂ« e njĂ« iniciative pĂ«r tĂ« rritur performancĂ«n e aplikacioneve Ruby qĂ« pĂ«rdorin kadrin Rails dhe bĂ«jnĂ« thirrje pĂ«r shumĂ« metoda. Dallimi kyç nga kompileri i mĂ«parshĂ«m JIT MJIT, i cili bazoheshin nĂ« pĂ«rpunimin e metodave tĂ« tĂ«ra dhe pĂ«rdorte njĂ« kompiler tĂ« jashtĂ«m nĂ« gjuhĂ«n C, Ă«shtĂ« se YJIT aplikon versionimin e blloqeve bazĂ« (LBBV — Lazy Basic Block Versioning) dhe pĂ«rmban njĂ« kompiler JIT tĂ« integruar. FalĂ« LBBV, JIT fillon tĂ« kompilohet vetĂ«m nĂ« fillim tĂ« metodĂ«s, ndĂ«rsa pjesa tjetĂ«r kompilohet pas njĂ« kohe, pasi gjatĂ« ekzekutimit tĂ« pĂ«rcaktohen llojet e variablave dhe argumenteve qĂ« pĂ«rdoren. Me pĂ«rdorimin e YJIT Ă«shtĂ« vĂ«nĂ« re njĂ« rritje e performancĂ«s gjatĂ« ekzekutimit tĂ« testit railsbench me 22% dhe tĂ« testit liquid-render me 39%. YJIT aktualisht Ă«shtĂ« e kufizuar nĂ« mbĂ«shtetje pĂ«r OS tĂ« ngjashĂ«m me unix nĂ« sisteme me arkitekturĂ« x86-64 dhe Ă«shtĂ« e çaktivizuar si parazgjedhje (pĂ«r ta aktivizuar, duhet tĂ« jepni flag-un ‘—yjit’ nĂ« linjĂ«n e komandave).
  • PerformancĂ«n e kompjuterit JIT tĂ« vjetĂ«r MJIT e pĂ«rmirĂ«suar. PĂ«r projektet qĂ« pĂ«rdorin Rails, madhĂ«sia maksimale e cache-it (—jit-max-cache) tani Ă«shtĂ« rritur nga 100 nĂ« 10000 instrukcione si parazgjedhje. Ndalimi i pĂ«rdorimit tĂ« JIT pĂ«r metodat qĂ« pĂ«rfshijnĂ« mĂ« shumĂ« se 1000 instrukcione Ă«shtĂ« ndĂ«rprerĂ«. PĂ«r tĂ« mbĂ«shtetur Zeitwerk tĂ« Rails, kodi i formuar nĂ« JIT nuk hidhet mĂ«, nĂ«se pĂ«r ngjarjet e klasĂ«s Ă«shtĂ« aktivizuar TracePoint.
  • NĂ« pĂ«rbĂ«rje Ă«shtĂ« includuar njĂ« debugger i ri qĂ« Ă«shtĂ« rrewrite-uar plotĂ«sisht, debug.gem, i cili mbĂ«shtet debugging tĂ« largĂ«t, nuk ngadalĂ«son aplikacionin qĂ« po debug-zohet, mbĂ«shtet integrimin me ndĂ«rfaqet e avancuara tĂ« debugging (VSCode dhe Chrome), mund tĂ« pĂ«rdoret pĂ«r debugging tĂ« aplikacioneve me shumĂ« fije dhe shumĂ« procese, ofron njĂ« ndĂ«rfaqe pĂ«r ekzekutimin e kodit REPL, ofron mundĂ«si tĂ« avancuara pĂ«r gjurmimin, dhe mund tĂ« regjistrojĂ« dhe ripĂ«rsĂ«risĂ« fragmente tĂ« kodit. Debugger-i lib/debug.rb qĂ« Ă«shtĂ« ofruar mĂ« parĂ« Ă«shtĂ« larguar nga paketimi bazĂ«.
    Lëshimi i gjuhës programimi Ruby 3.1
  • ËshtĂ« realizuar njĂ« theks i dukshĂ«m i gabimeve nĂ« raportet e kthimeve tĂ« thirrjeve. Theksi i gabimeve sigurohet pĂ«rmes paketĂ«s sĂ« integruar dhe tĂ« aktivizuar si parazgjedhje, error_highlight. PĂ«r tĂ« çaktivizuar theksimin e gabimeve, mund tĂ« pĂ«rdorni cilĂ«simin «—disable-error_highlight». $ ruby test.rb test.rb:1:in «
    »: metode e paqartë «time» për 1:Integer (NoMethodError) 1.time {} ^^^^^ A keni dashur të thoni? times
  • NĂ« shellin e llogaritjeve interaktive IRB (REPL, Read-Eval-Print-Loop) Ă«shtĂ« realizuar plotĂ«simi automatik i kodit tĂ« futur (ndĂ«rsa shkruani, shfaqet njĂ« sugjerim me opsionet e vazhdimit tĂ« futjes, midis tĂ« cilave mund tĂ« lĂ«vizni me çelĂ«sin Tab ose Shift+Tab). Pas zgjedhjes sĂ« opsionit tĂ« vazhdimit, shfaqet njĂ« dialog qĂ« tregon dokumentacionin e lidhur me elementin e zgjedhur. PĂ«r t'u kaluar nĂ« dokumentacionin e plotĂ«, mund tĂ« pĂ«rdoret kombinimi i tastave Alt+d.
    Lëshimi i gjuhës programimi Ruby 3.1
  • Sintaksa e gjuhĂ«s tani lejon tĂ« kalohen vlerat nĂ« literalet e hash-it dhe argumentet e fjalĂ«ve kyç gjatĂ« thirrjes sĂ« funksioneve. PĂ«r shembull, nĂ« vend tĂ« shprehjes «{x: x, y: y}» tani mund tĂ« tregoni «{x:, y:}», dhe nĂ« vend tĂ« «foo(x: x, y: y)» — «foo(x:, y:)».
  • PĂ«rkrahja e pĂ«rshtatjeve tĂ« njĂ« vije Ă«shtĂ« stabilizuar (ary => [x, y, z]), tĂ« cilat tashmĂ« nuk kanĂ« shenjĂ«n eksperimentale.
  • Operatori «^» nĂ« pĂ«rshtatje mund tĂ« pĂ«rmbajĂ« shprehje tĂ« rastĂ«sishme, pĂ«r shembull: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #=>? [[3, 5], [5, 7], [11, 13]]
  • NĂ« pĂ«rshtatjet e njĂ« vije lejohet tĂ« mos shĂ«nohen kllapat: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • NĂ« gjuhĂ«n e anotimeve tĂ« tipave RBS, e cila lejon tĂ« pĂ«rcaktohet struktura e programit dhe tipet e pĂ«rdorura, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r caktimin e kufijve tĂ« sipĂ«rm tĂ« parametrave tĂ« tipit me simbolin «<», Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r pseudonimet e tipeve tĂ« pĂ«rgjithshme, Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r koleksionet pĂ«r menaxhimin e gem-eve, Ă«shtĂ« pĂ«rmirĂ«suar performanca dhe janĂ« prezantuar shumĂ« nĂ«nshkrime tĂ« reja pĂ«r bibliotekat e brendshme dhe standarde.
  • NĂ« analizuesin statik tĂ« tipave TypePro, i cili gjeneron anotime RBS bazuar nĂ« analizĂ«n e kodit pa informacion tĂ« qartĂ« pĂ«r tipet, Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r mjediset e integruara tĂ« zhvillimit (p.sh., Ă«shtĂ« pĂ«rgatitur njĂ« shtesĂ« pĂ«r integrimin e TypePro me redaktorin VSCode).
  • Ka ndryshuar rendi i pĂ«rpunimit tĂ« disa caktimeve. PĂ«r shembull, mĂ« parĂ« komponentĂ«t e shprehjes «foo[0], bar[0] = baz, qux» pĂ«rpunoheshin nĂ« rendin baz, qux, foo, bar, ndĂ«rsa tani janĂ« foo, bar, baz, qux.
  • Shtuar mbĂ«shtetje eksperimentale pĂ«r ndarjen e memories pĂ«r vargje duke pĂ«rdorur mekanizmin VWA (Variable Width Allocation).
  • PĂ«rditĂ«suar versionet e moduleve gem tĂ« integruara dhe tĂ« standardit tĂ« bibliotekĂ«s. Paketat e integruara net-ftp, net-imap, net-pop, net-smtp, matrix, prime dhe debug.

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