Verëffentlechung vun der Ruby Programméiersprooch 3.1

Ruby 3.1.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 neien experimentellen In-Prozess JIT Compiler, YJIT, gouf bäigefüügt, erstallt vun den Entwéckler vun der Shopify E-Commerce Plattform als Deel vun enger Initiativ fir d'Performance vu Ruby Programmer ze verbesseren, déi de Rails Kader benotzen a vill Methoden nennen. 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. Wann Dir YJIT benotzt, gouf eng 22% Erhéijung vun der Leeschtung opgeholl wann Dir de Railsbench Test leeft, an eng 39% Erhéijung vum Liquid Render Test. YJIT ass de Moment limitéiert op Ënnerstëtzung fir Unix-ähnlech OSen op Systemer mat x86-64 Architektur an ass par défaut behënnert (fir ze aktivéieren, spezifizéiert de Fändel "--yjit" an der Kommandozeil).
  • Verbesserte Leeschtung vum ale MJIT JIT Compiler. Fir Projeten, déi Rails benotzen, ass d'Standard maximal Cache Gréisst (-jit-max-Cache) vun 100 op 10000 Instruktioune erhéicht ginn. Gestoppt mat JIT fir Methoden mat méi wéi 1000 Instruktiounen. Fir Zeitwerk of Rails z'ënnerstëtzen, gëtt de JIT Code net méi verworf wann TracePoint fir Klassenevenementer aktivéiert ass.
  • Et enthält e komplett iwwerschriwwenen Debug.gem Debugger, deen Remote Debugging ënnerstëtzt, d'Debugging Applikatioun net verlangsamt, ënnerstëtzt Integratioun mat fortgeschratt Debugging Interfaces (VSCode a Chrome), ka benotzt ginn fir Multi-threaded a Multi-Prozess Uwendungen ze Debuggen, bitt e REPL Code Ausféierung Interface, bitt fortgeschratt Tracing Fäegkeeten, kann Code Snippets ophuelen an erëm spillen. De virdru ugebueden Debugger lib/debug.rb gouf aus der Basisverdeelung geläscht.
    Verëffentlechung vun der Ruby Programméiersprooch 3.1
  • Implementéiert visuell Highlight vu Feeler am Call Back Trace Berichter. Feeler Flagging gëtt mat dem agebauten a Standard-aktivéierten Gem Package zur Verfügung gestallt error_highlight. Fir Feelermarkéierung auszeschalten, kënnt Dir d'Astellung "--disable-error_highlight" benotzen. $ ruby ​​test.rb test.rb:1:in " ": ondefinéiert Method "Zäit" fir 1: Integer (NoMethodError) 1.Zäit {} ^^^^^ Hutt Dir gemengt? mol
  • D'Schuel vun interaktiven Berechnungen IRB (REPL, Read-Eval-Print-Loop) implementéiert automatesch Fäerdegstellung vum aginnen Code (wéi Dir tippt, gëtt en Hiweis ugewisen mat Optiounen fir weider Input, tëscht deenen Dir mam Tab oder Shift+ réckelen kënnt Tab Schlëssel). Nodeems Dir d'Fortsetzungsoptioun gewielt hutt, gëtt eng Dialogbox an der Géigend ugewisen, déi d'Dokumentatioun weist, déi mam ausgewielten Element assoziéiert ass. D'Tastatur Ofkiirzung Alt + d kann benotzt ginn fir Zougang zu der voller Dokumentatioun ze kréien.
    Verëffentlechung vun der Ruby Programméiersprooch 3.1
  • D'Sproochsyntax erlaabt elo Wäerter an Hash-Literalen a Schlësselwuert Argumenter ze iwwersprangen wann Dir Funktiounen urufft. Zum Beispill, amplaz vum Ausdrock "{x: x, y: y}" kënnt Dir elo "{x:, y:}" spezifizéieren, an amplaz "foo(x: x, y: y)" - foo( x:,y:)".
  • Stabiliséiert Ënnerstëtzung fir Single-Line Muster Matcher (ary => [x, y, z]), déi net méi als experimentell markéiert sinn.
  • Den "^" Bedreiwer a Mustermatcher kann elo arbiträr Ausdréck enthalen, zum Beispill: Prime.each_cons(2).lazy.find_all{_1 an [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Bei Single-Line Muster Matcher kënnt Dir Klammeren ausgoen: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • D'RBS-Typ Annotatiounssprooch, déi Iech erlaabt d'Struktur vum Programm an d'Typen ze bestëmmen, huet Ënnerstëtzung bäigefüügt fir déi iewescht Limit vun den Typparameter ze spezifizéieren mat dem Symbol "<", bäigefüügt Ënnerstëtzung fir Aliasen vun generesche Typen, implementéiert Ënnerstëtzung fir Sammlungen fir d'Gestioun vun Bijouen, verbessert Leeschtung an ëmgesat vill nei Ënnerschrëfte fir gebaut-an Standard Bibliothéiken.
  • Experimentell Ënnerstëtzung fir integréiert Entwécklungsëmfeld gouf zum TypePro statesche Typ Analysator bäigefüügt, deen RBS Annotatiounen generéiert baséiert op Code Analyse ouni explizit Typinformatioun (zum Beispill ass en Add-on virbereet ginn fir TypePro mam VSCode Editor z'integréieren).
  • D'Uerdnung vun der Veraarbechtung vu multiple Uerderen ass geännert ginn. Zum Beispill, virdru goufen d'Komponente vum Ausdrock "foo[0], bar[0] = baz, qux" an der Uerdnung baz, qux, foo, bar veraarbecht, awer elo foo, bar, baz, qux.
  • Experimentell Ënnerstëtzung bäigefüügt fir Erënnerungsallokatioun fir Strings mam VWA (Variable Width Allocation) Mechanismus.
  • Aktualiséiert Versioune vun agebaute Bijou Moduler an déi an der Standardbibliothéik abegraff. D'net-ftp, net-imap, net-pop, net-smtp, Matrix, Prime an Debug Packagen sinn agebaut.

Source: opennet.ru

Setzt e Commentaire