Vydanie programovacieho jazyka Ruby 3.1

Bol vydaný Ruby 3.1.0, dynamický objektovo orientovaný programovací jazyk, ktorý je vysoko efektívny pri vývoji programov a zahŕňa najlepšie vlastnosti Perlu, Java, Pythonu, Smalltalku, Eiffela, Ada a Lisp. Kód projektu je distribuovaný pod licenciou BSD („2-klauzulová BSDL“) a „Ruby“, ktorá sa vzťahuje na najnovšiu verziu licencie GPL a je plne kompatibilná s GPLv3.

Hlavné vylepšenia:

  • Bol pridaný nový experimentálny kompilátor JIT YJIT, ktorý vytvorili vývojári platformy elektronického obchodu Shopify ako súčasť iniciatívy na zlepšenie výkonu programov Ruby, ktoré používajú rámec Rails a volajú veľa metód. Kľúčový rozdiel oproti predtým používanému kompilátoru MJIT JIT, ktorý je založený na spracovaní celých metód a využíva externý kompilátor v jazyku C, je v tom, že YJIT používa Lazy Basic Block Versioning (LBBV) a obsahuje integrovaný JIT kompilátor. Pri LBBV JIT najskôr skompiluje iba začiatok metódy a zvyšok skompiluje o niečo neskôr, po tom, čo sa počas vykonávania určia typy použitých premenných a argumentov. Pri použití YJIT bol zaznamenaný 22% nárast výkonu pri teste na koľajniciach a 39% nárast pri teste tekutej omietky. YJIT je v súčasnosti obmedzený na podporu pre operačné systémy typu unix na systémoch s architektúrou x86-64 a je predvolene vypnutý (ak chcete aktivovať, zadajte v príkazovom riadku príznak „--yjit“).
  • Vylepšený výkon starého kompilátora MJIT JIT. Pre projekty používajúce Rails sa predvolená maximálna veľkosť vyrovnávacej pamäte (--jit-max-cache) zvýšila zo 100 na 10000 1000 inštrukcií. Prestal sa používať JIT pre metódy s viac ako XNUMX inštrukciami. Na podporu Zeitwerk of Rails sa už kód JIT nevyhadzujú, keď je TracePoint povolený pre udalosti triedy.
  • Obsahuje kompletne prepísaný debug.gem debugger, ktorý podporuje vzdialené ladenie, nespomaľuje ladenú aplikáciu, podporuje integráciu s pokročilými ladiacimi rozhraniami (VSCode a Chrome), dá sa použiť na ladenie viacvláknových a viacprocesových aplikácií, poskytuje rozhranie na vykonávanie kódu REPL, ponúka pokročilé možnosti sledovania, dokáže zaznamenávať a prehrávať útržky kódu. Predtým ponúkaný debugger lib/debug.rb bol odstránený zo základnej distribúcie.
    Vydanie programovacieho jazyka Ruby 3.1
  • Implementované vizuálne zvýraznenie chýb v prehľadoch sledovania spätného volania. Označovanie chýb sa poskytuje pomocou vstavaného a predvolene povoleného balíčka drahokamov error_highlight. Ak chcete zakázať označovanie chýb, môžete použiť nastavenie „--disable-error_highlight“. $ ruby ​​​​test.rb test.rb:1:in " ": nedefinovaná metóda "time" pre 1:Integer (NoMethodError) 1.time {} ^^^^^ Mali ste na mysli? krát
  • Shell interaktívnych výpočtov IRB (REPL, Read-Eval-Print-Loop) implementuje automatické dopĺňanie zadaného kódu (pri písaní sa zobrazuje nápoveda s možnosťami pokračovania v zadávaní, medzi ktorými sa môžete presúvať klávesom Tab alebo Shift+ kláves Tab). Po výbere možnosti pokračovania sa v blízkosti zobrazí dialógové okno s dokumentáciou spojenou s vybratou položkou. Na prístup k úplnej dokumentácii je možné použiť klávesovú skratku Alt+d.
    Vydanie programovacieho jazyka Ruby 3.1
  • Syntax jazyka teraz umožňuje pri volaní funkcií preskočiť hodnoty v hash literáloch a argumentoch kľúčových slov. Napríklad namiesto výrazu „{x: x, y: y}“ môžete teraz zadať „{x:, y:}“ a namiesto „foo(x: x, y: y)“ - foo( x:, y:)“.
  • Stabilizovaná podpora pre jednoriadkové zhody vzorov (ary => [x, y, z]), ktoré už nie sú označené ako experimentálne.
  • Operátor "^" v zhode vzorov môže teraz obsahovať ľubovoľné výrazy, napríklad: Prime.each_cons(2).lazy.find_all{_1 v [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • V jednoriadkových vzorových zhodách môžete vynechať zátvorky: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Jazyk anotácií typu RBS, ktorý umožňuje určiť štruktúru programu a použité typy, pribudla podpora určenia hornej hranice parametrov typu pomocou symbolu „<“, pridaná podpora pre aliasy generických typov, implementovaná podpora pre kolekcií na správu drahokamov, zlepšil výkon a implementoval mnoho nových podpisov pre vstavané a štandardné knižnice.
  • Do statického typového analyzátora TypePro, ktorý generuje anotácie RBS na základe analýzy kódu bez explicitných informácií o type, bola pridaná experimentálna podpora pre integrované vývojové prostredia (napríklad bol pripravený doplnok na integráciu TypePro s editorom VSCode).
  • Poradie spracovania viacerých úloh bolo zmenené. Napríklad predtým sa komponenty výrazu „foo[0], bar[0] = baz, qux“ spracovávali v poradí baz, qux, foo, bar, ale teraz foo, bar, baz, qux.
  • Pridaná experimentálna podpora prideľovania pamäte pre reťazce pomocou mechanizmu VWA (Variable Width Allocation).
  • Aktualizované verzie vstavaných drahokamových modulov a tých, ktoré sú súčasťou štandardnej knižnice. Vstavané sú balíčky net-ftp, net-imap, net-pop, net-smtp, matrix, prime a debug.

Zdroj: opennet.ru

Pridať komentár