Vydání programovacího jazyka Ruby 3.1

Byl vydán Ruby 3.1.0, dynamický objektově orientovaný programovací jazyk, který je vysoce účinný při vývoji programů a zahrnuje nejlepší vlastnosti Perlu, Javy, Pythonu, Smalltalku, Eiffela, Ada a Lisp. Kód projektu je distribuován pod licencí BSD („2-klauzule BSDL“) a „Ruby“, která odkazuje na nejnovější verzi licence GPL a je plně kompatibilní s GPLv3.

Hlavní vylepšení:

  • Byl přidán nový experimentální in-process JIT kompilátor YJIT, který vytvořili vývojáři e-commerce platformy Shopify jako součást iniciativy ke zlepšení výkonu programů Ruby, které používají framework Rails a volají spoustu metod. Klíčový rozdíl oproti dříve používanému kompilátoru MJIT JIT, který je založen na zpracování celých metod a využívá externí kompilátor v jazyce C, je v tom, že YJIT používá Lazy Basic Block Versioning (LBBV) a obsahuje integrovaný JIT kompilátor. S LBBV JIT nejprve zkompiluje pouze začátek metody a zbytek zkompiluje o něco později, poté, co se během provádění určí typy proměnných a použitých argumentů. Při použití YJIT byl zaznamenán 22% nárůst výkonu při provádění testu na kolejích a 39% nárůst v testu tekuté omítky. YJIT je v současné době omezen na podporu unixových operačních systémů na systémech s architekturou x86-64 a je ve výchozím nastavení zakázán (pro aktivaci zadejte příznak „--yjit“ na příkazovém řádku).
  • Vylepšený výkon starého kompilátoru MJIT JIT. U projektů využívajících Rails byla výchozí maximální velikost mezipaměti (--jit-max-cache) zvýšena ze 100 na 10000 1000 instrukcí. Přestal používat JIT pro metody s více než XNUMX instrukcemi. Kvůli podpoře Zeitwerk of Rails již není kód JIT zahazován, když je TracePoint povolen pro události třídy.
  • Obsahuje kompletně přepsaný debugger debug.gem, který podporuje vzdálené ladění, nezpomaluje laděnou aplikaci, podporuje integraci s pokročilými ladícími rozhraními (VSCode a Chrome), lze jej použít pro ladění vícevláknových a víceprocesových aplikací, poskytuje rozhraní pro provádění kódu REPL, nabízí pokročilé možnosti sledování, může zaznamenávat a přehrávat úryvky kódu. Dříve nabízený debugger lib/debug.rb byl odstraněn ze základní distribuce.
    Vydání programovacího jazyka Ruby 3.1
  • Implementováno vizuální zvýraznění chyb v reportech zpětného trasování. Označování chyb je zajištěno pomocí vestavěného a ve výchozím nastavení povoleného balíčku drahokamů error_highlight. Chcete-li zakázat označování chyb, můžete použít nastavení „--disable-error_highlight“. $ ruby ​​​​test.rb test.rb:1:in " ": nedefinovaná metoda "time" pro 1:Integer (NoMethodError) 1.time {} ^^^^^ Měli jste na mysli? časy
  • Shell interaktivních výpočtů IRB (REPL, Read-Eval-Print-Loop) implementuje automatické doplňování zadaného kódu (při psaní se zobrazuje nápověda s možnostmi pokračování zadávání, mezi kterými se můžete pohybovat pomocí Tab nebo Shift+ klávesa Tab). Po výběru možnosti pokračování se v blízkosti zobrazí dialogové okno, které zobrazuje dokumentaci spojenou s vybranou položkou. Pro přístup k úplné dokumentaci lze použít klávesovou zkratku Alt+d.
    Vydání programovacího jazyka Ruby 3.1
  • Syntaxe jazyka nyní umožňuje přeskočit hodnoty v hash literálech a argumentech klíčových slov při volání funkcí. Například místo výrazu „{x: x, y: y}“ nyní můžete zadat „{x:, y:}“ a místo „foo(x: x, y: y)“ - foo( x:, y:)“.
  • Stabilizovaná podpora pro jednořádkové shody vzorů (ary => [x, y, z]), které již nejsou označeny jako experimentální.
  • Operátor "^" ve shodách se vzorem může nyní obsahovat libovolné výrazy, například: Prime.each_cons(2).lazy.find_all{_1 v [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • V jednořádkových vzorových shodách můžete vynechat závorky: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Typový anotační jazyk RBS, který umožňuje určit strukturu programu a použité typy, přidal podporu pro určení horní hranice parametrů typu pomocí symbolu „<“, přidána podpora pro aliasy generických typů, implementována podpora pro kolekce pro správu drahokamů, vylepšený výkon a implementace mnoha nových signatur pro vestavěné a standardní knihovny.
  • Do statického analyzátoru typů TypePro byla přidána experimentální podpora pro integrovaná vývojová prostředí, která generuje anotace RBS na základě analýzy kódu bez explicitních informací o typu (například byl připraven doplněk pro integraci TypePro s editorem VSCode).
  • Pořadí zpracování více úkolů bylo změněno. Dříve se například složky výrazu „foo[0], bar[0] = baz, qux“ zpracovávaly v pořadí baz, qux, foo, bar, nyní však foo, bar, baz, qux.
  • Přidána experimentální podpora pro alokaci paměti pro řetězce pomocí mechanismu VWA (Variable Width Allocation).
  • Aktualizované verze vestavěných drahokamových modulů a těch, které jsou součástí standardní knihovny. Vestavěné jsou balíčky net-ftp, net-imap, net-pop, net-smtp, matrix, prime a debug.

Zdroj: opennet.ru

Přidat komentář