Verëffentlechung vun der Ruby Programméiersprooch 3.2

Ruby 3.2.0 gouf verëffentlecht, eng dynamesch objektorientéiert Programmiersprache déi héich effizient an der Programmentwécklung ass an déi bescht Feature vu Perl, Java, Python, Smalltalk, Eiffel, Ada a Lisp integréiert. De Projet Code gëtt ënner der BSD ("2-Klausel BSDL") an "Ruby" Lizenzen verdeelt, déi op déi lescht Versioun vun der GPL Lizenz bezitt a voll mat GPLv3 kompatibel ass.

Main Verbesserungen:

  • En initialen Hafen vum CRuby Dolmetscher bäigefüügt, deen an de WebAssembly Zwëschencode kompiléiert fir an engem Webbrowser ze lafen oder ënner Standalone Runtime wéi Wasmtime. Fir direkt Interaktioun mam Betribssystem wann se separat lafen, gëtt d'WASI (WebAssembly System Interface) API benotzt. Ënner anerem gëtt e VFS-Wrapper uewen op WASI geliwwert, wat Iech erlaabt déi ganz Ruby-Applikatioun an eng Presentatioun a Form vun enger eenzeger Wasm-Datei ze packen. Lafen an engem Browser ka benotzt ginn fir Training an Demo Webservicer wéi TryRuby ze kreéieren. An der aktueller Etapp vun der Entwécklung passéiert den Hafen d'Basis- a Bootstrap-Testsuiten erfollegräich, déi d'Thread API net benotzen. Den Hafen ënnerstëtzt och keng Faser, Ausnahmen oder Müllsammlung.
  • Den YJIT am Prozess JIT Compiler, erstallt vun den Entwéckler vun der Shopify E-Commerce Plattform als Deel vun enger Initiativ fir d'Performance vu Ruby Programmer ze erhéijen déi de Rails Kader benotzen a vill Methoden nennen, gouf stabil a prett fir Produktioun benotzen. De Schlësselunterscheed vum virdru benotzte MJIT JIT Compiler, deen op der Veraarbechtung vu ganze Methoden baséiert an en externen Compiler an der C Sprooch benotzt, ass datt YJIT Lazy Basic Block Versioning (LBBV) benotzt an en integréierten JIT Compiler enthält. Mat LBBV kompiléiert JIT als éischt nëmmen den Ufank vun der Method, a kompiléiert de Rescht e bësse méi spéit, nodeems d'Zorte vu Variablen an Argumenter benotzt gi während der Ausféierung bestëmmt. YJIT ass verfügbar fir x86-64 an arm64/aarch64 Architekturen op Linux, MacOS, BSD an aner UNIX Plattformen.

    Am Géigesaz zu Ruby ass den YJIT Code an der Rust Sprooch geschriwwen a erfuerdert de Rustc 1.58.0+ Compiler fir d'Kompilatioun, sou datt de YJIT Build als Standard deaktivéiert ass an optional ass. Wann Dir YJIT benotzt, gouf eng 41% Erhéijung vun der Leeschtung opgeholl wann Dir de Yjit-Bänk Test am Verglach mat der Interpretatioun benotzt.

    Verëffentlechung vun der Ruby Programméiersprooch 3.2

  • Zousätzlech Schutz géint Denial of Service Attacke bäigefüügt wann Dir extern Donnéeën an ineffizienten an Zäitopwendende reguläre Ausdréck (ReDoS) veraarbecht. De passende Algorithmus, deen d'Memoriséierungstechnik benotzt, gouf wesentlech verbessert. Zum Beispill gouf d'Ausféierungszäit vum Ausdrock '/^a*b?a*$/ =~ "a" * 50000 + "x"' vun 10 op 0.003 Sekonnen reduzéiert. D'Käschte vun der Optimisatioun ass eng Erhéijung vum Erënnerungsverbrauch, de Verbrauch vun deem ass ongeféier 10 Mol méi héich wéi d'Gréisst vun den Inputdaten. Déi zweet Sécherheetsmoossnam ass d'Fäegkeet fir en Timeout ze definéieren (zum Beispill "Regexp.timeout = 1.0") während deem de reguläre Ausdrock muss veraarbecht ginn.
  • De Syntax_suggest Modus ass abegraff, wat hëlleft d'Ursaache vu Feeler ze diagnostizéieren, déi mat engem fehlenden oder extra Ofschloss "Enn" Ausdrock verbonne sinn. Unmatched `Enn', fehlt Schlësselwuert (`do', `def`, `if`, etc.) ? 1 Klass Hond > 2 defbark > 3 Enn 4 Enn
  • D'Kapazitéit fir Argumenter ze markéieren fir Fehler am Zesummenhang mat Typen an Argumenter ass an de Feelerplaz Display Modus bäigefüügt, zum Beispill: test.rb:2:in `+': null kann net an Integer (TypeError) gezwongen ginn sum = ary [0] + ary [1] ^^^^^^
  • Nei Syntax bäigefüügt fir Sätze vun Argumenter op aner Methoden ëmzeleeden: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler gëtt proposéiert - eng Variant vum alen MJIT JIT Compiler, ëmgeschriwwen an der Ruby Sprooch. Assuréiert datt MJIT an engem separaten Prozess leeft anstatt an engem MJIT Aarbechter thread ze lafen.
  • Am Bundler 2.4 benotzt Ofhängegkeetsveraarbechtung de PubGrub Versioun Detektor, och am Pub Package Manager fir d'Dart Sprooch benotzt. De virdru benotzte Molinillo Algorithmus gëtt weider an RubyGems benotzt, awer wäert och an Zukunft duerch PubGrub ersat ginn.
  • Aktualiséiert Versioune vun agebaute Bijou Moduler an déi an der Standardbibliothéik abegraff.

Source: opennet.ru

Setzt e Commentaire