Vydanie programovacieho jazyka Ruby 3.2

Bol vydaný Ruby 3.2.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:

  • Pridaný počiatočný port interpreta CRuby, ktorý sa skompiluje do prechodného kódu WebAssembly pre spustenie vo webovom prehliadači alebo pod samostatnými runtimemi, ako je wasmtime. Na priamu interakciu s operačným systémom pri samostatnom spustení sa používa API WASI (WebAssembly System Interface). Okrem iného je na vrchu WASI poskytnutý obal VFS, ktorý vám umožňuje zabaliť celú aplikáciu Ruby do prezentácie vo forme jedného súboru wasm. Spustenie v prehliadači je možné použiť na vytváranie tréningových a ukážkových webových služieb, ako je napríklad TryRuby. V súčasnej fáze vývoja port úspešne prechádza základnými a bootstrap testovacími sadami, ktoré nepoužívajú Thread API. Port tiež nepodporuje vlákna, výnimky ani zber odpadu.
  • Priebežný kompilátor JIT YJIT, ktorý vytvorili vývojári e-commerce platformy Shopify ako súčasť iniciatívy na zvýšenie výkonu programov Ruby, ktoré využívajú rámec Rails a volajú množstvo metód, bol vyhlásený za stabilný a pripravený na výrobné využitie. 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. YJIT je k dispozícii pre architektúry x86-64 a arm64/aarch64 na Linuxe, MacOS, BSD a ďalších platformách UNIX.

    Na rozdiel od Ruby je kód YJIT napísaný v jazyku Rust a na kompiláciu vyžaduje kompilátor rustc 1.58.0+, takže zostava YJIT je predvolene vypnutá a je voliteľná. Pri použití YJIT bol zaznamenaný 41% nárast výkonu pri spustení yjit-bench testu v porovnaní s použitím interpretácie.

    Vydanie programovacieho jazyka Ruby 3.2

  • Pridaná dodatočná ochrana proti útokom odmietnutia služby pri spracovaní externých údajov v neefektívnych a časovo náročných regulárnych výrazoch (ReDoS). Algoritmus párovania, ktorý využíva techniku ​​zapamätania, bol výrazne vylepšený. Napríklad čas vykonania výrazu '/^a*b?a*$/ =~ "a" * 50000 + "x"' sa skrátil z 10 na 0.003 sekundy. Náklady na optimalizáciu predstavujú zvýšenie spotreby pamäte, ktorej spotreba je približne 10-krát vyššia ako veľkosť vstupných dát. Druhým bezpečnostným opatrením je schopnosť definovať časový limit (napríklad „Regexp.timeout = 1.0“), počas ktorého musí byť regulárny výraz spracovaný.
  • Zahrnutý je režim syntax_suggest, ktorý pomáha diagnostikovať príčiny chýb spojených s chýbajúcim alebo nadbytočným uzatváracím výrazom „end“. Nezodpovedá 'end', chýba kľúčové slovo (`do', `def`, `if` atď.) ? 1 trieda Pes > 2 defbark > 3 koniec 4 koniec
  • Do režimu zobrazenia miesta chyby bola pridaná možnosť označovať argumenty pre chyby súvisiace s typmi a argumentmi, napríklad: test.rb:2:in `+': nil sa nedá vynútiť do Integer (TypeError) sum = ary [0] + ary [1] ^^^^^^
  • Pridaná nová syntax na presmerovanie sád argumentov na iné metódy: def foo(*) bar(*) end def baz(**) quux(**) end
  • Navrhuje sa Ruby_vm/mjit/compiler - variant starého kompilátora MJIT JIT, prepísaný do jazyka Ruby. Zabezpečil, že MJIT beží v samostatnom procese namiesto behu v pracovnom vlákne MJIT.
  • V Bundleri 2.4 používa spracovanie závislostí detektor verzií PubGrub, ktorý sa tiež používa v správcovi balíkov pub pre jazyk Dart. Predtým používaný algoritmus Molinillo sa naďalej používa v RubyGems, ale v budúcnosti bude nahradený aj PubGrub.
  • Aktualizované verzie vstavaných drahokamových modulov a tých, ktoré sú súčasťou štandardnej knižnice.

Zdroj: opennet.ru

Pridať komentár