Lëshimi i gjuhës programuese Ruby 3.1

Ruby 3.1.0 është lëshuar, një gjuhë programimi dinamike e orientuar drejt objekteve që është shumë efikase në zhvillimin e programit dhe përfshin veçoritë më të mira të Perl, Java, Python, Smalltalk, Eiffel, Ada dhe Lisp. Kodi i projektit shpërndahet nën licencat BSD ("2-klauzolë BSDL") dhe "Ruby", i cili i referohet versionit më të fundit të licencës GPL dhe është plotësisht i pajtueshëm me GPLv3.

Përmirësimet kryesore:

  • Është shtuar një përpilues i ri eksperimental në proces JIT, YJIT, i krijuar nga zhvilluesit e platformës së tregtisë elektronike Shopify si pjesë e një nisme për të përmirësuar performancën e programeve Ruby që përdorin kornizën Rails dhe kërkojnë shumë metoda. Dallimi kryesor nga përpiluesi MJIT JIT i përdorur më parë, i cili bazohet në përpunimin e metodave të tëra dhe përdor një përpilues të jashtëm në gjuhën C, është se YJIT përdor Lazy Basic Block Versioning (LBBV) dhe përmban një përpilues të integruar JIT. Me LBBV, JIT fillimisht përpilon vetëm fillimin e metodës dhe përpilon pjesën tjetër pak kohë më vonë, pasi të përcaktohen llojet e variablave dhe argumenteve të përdorura gjatë ekzekutimit. Kur përdorni YJIT, u regjistrua një rritje prej 22% në performancë gjatë ekzekutimit të testit të railsbench dhe një rritje prej 39% në testin e riprodhimit të lëngjeve. YJIT aktualisht është i kufizuar në mbështetjen për OS të ngjashme me unix në sistemet me arkitekturë x86-64 dhe është i çaktivizuar si parazgjedhje (për të aktivizuar, specifikoni flamurin "--yjit" në vijën e komandës).
  • Performanca e përmirësuar e përpiluesit të vjetër MJIT JIT. Për projektet që përdorin Rails, madhësia maksimale e paracaktuar e cache-it (--jit-max-cache) është rritur nga 100 në 10000 instruksione. Ndaloi përdorimin e JIT për metoda me më shumë se 1000 udhëzime. Për të mbështetur Zeitwerk of Rails, kodi JIT nuk hidhet më kur TracePoint aktivizohet për ngjarjet e klasës.
  • Ai përfshin një korrigjues plotësisht të rishkruar debug.gem, i cili mbështet korrigjimin në distancë, nuk ngadalëson aplikacionin e korrigjuar, mbështet integrimin me ndërfaqet e avancuara të korrigjimit (VSCode dhe Chrome), mund të përdoret për korrigjimin e aplikacioneve me shumë fije dhe me shumë procese, ofron një ndërfaqe e ekzekutimit të kodit REPL, ofron aftësi të avancuara gjurmimi, mund të regjistrojë dhe riprodhojë copa kodi. Korrigjuesi i ofruar më parë lib/debug.rb është hequr nga shpërndarja bazë.
    Lëshimi i gjuhës programuese Ruby 3.1
  • Zbatuar nënvizimin vizual të gabimeve në raportet e gjurmimit të kthimit. Raportimi i gabimit ofrohet duke përdorur error_highlight të paketës së integruar dhe të aktivizuar nga parazgjedhja. Për të çaktivizuar raportimin e gabimeve, mund të përdorni cilësimin "--disable-error_highlight". $ ruby ​​test.rb test.rb:1:in " ": metoda e padefinuar "time" për 1:Integer (NoMethodError) 1.time {} ^^^^^ E kishit fjalën? herë
  • Predha e llogaritjeve interaktive IRB (REPL, Read-Eval-Print-Loop) zbaton plotësimin automatik të kodit të futur (ndërsa shtypni, shfaqet një aluzion me opsionet për vazhdimin e hyrjes, midis të cilave mund të lëvizni me Tab ose Shift+ Tasti Tab). Pas zgjedhjes së opsionit të vazhdimit, aty pranë shfaqet një kuti dialogu që shfaq dokumentacionin e lidhur me artikullin e zgjedhur. Shkurtorja e tastierës Alt+d mund të përdoret për të hyrë në dokumentacionin e plotë.
    Lëshimi i gjuhës programuese Ruby 3.1
  • Sintaksa e gjuhës tani lejon që vlerat në fjalë për fjalë hash dhe argumentet e fjalëve kyçe të anashkalohen kur thirren funksionet. Për shembull, në vend të shprehjes "{x: x, y: y}" tani mund të specifikoni "{x:, y:}", dhe në vend të "foo(x: x, y: y)" - foo( x:, y: )".
  • Mbështetje e stabilizuar për përputhjet e modeleve me një linjë (ary => [x, y, z]), të cilat nuk janë më të shënuara si eksperimentale.
  • Operatori "^" në përputhjet e modeleve tani mund të përmbajë shprehje arbitrare, për shembull: Prime.each_cons(2).lazy.find_all{_1 në [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Në përputhjet e modeleve me një rresht, mund të hiqni kllapat: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Gjuha e shënimeve të tipit RBS, e cila ju lejon të përcaktoni strukturën e programit dhe llojet e përdorura, ka shtuar mbështetje për specifikimin e kufirit të sipërm të parametrave të tipit duke përdorur simbolin "<", mbështetje të shtuar për pseudonimet e llojeve gjenerike, mbështetje të zbatuar për koleksione për menaxhimin e gurëve të çmuar, përmirësimin e performancës dhe implementimin e shumë nënshkrimeve të reja për bibliotekat e integruara dhe standarde.
  • Mbështetja eksperimentale për mjediset e integruara të zhvillimit është shtuar në analizuesin e tipit statik TypePro, i cili gjeneron shënime RBS bazuar në analizën e kodit pa informacion të qartë të llojit (për shembull, një shtesë është përgatitur për integrimin e TypePro me redaktorin VSCode).
  • Rendi i përpunimit të detyrave të shumta është ndryshuar. Për shembull, më parë përbërësit e shprehjes “foo[0], bar[0] = baz, qux” përpunoheshin në rendin baz, qux, foo, bar, por tani foo, bar, baz, qux.
  • U shtua mbështetje eksperimentale për shpërndarjen e memories për vargjet duke përdorur mekanizmin VWA (Variable Width Alocation).
  • Versionet e përditësuara të moduleve të integruara të gurëve të çmuar dhe ato të përfshira në bibliotekën standarde. Paketat net-ftp, net-imap, net-pop, net-smtp, matrica, prime dhe debug janë të integruara.

Burimi: opennet.ru

Shto një koment