Veröffentlichung der Programmiersprache Ruby 3.1

Die Version 3.1.0 von Ruby, einer dynamischen objektorientierten Programmiersprache, wurde veröffentlicht. Diese Sprache zeichnet sich durch ihre hohe Entwicklungseffizienz aus und vereint die besten Eigenschaften von Perl, Java, Python, Smalltalk, Eiffel, Ada und Lisp. Der Code des Projekts wird unter den Lizenzen BSD ("2-clause BSDL") und "Ruby" vertrieben, die auf die neueste Version der GPL verweist und vollstÀndig mit der GPLv3 kompatibel ist.

Wesentliche Verbesserungen:

  • Es wurde ein neuer experimenteller JIT-Compiler fĂŒr die interne Verarbeitung, YJIT, hinzugefĂŒgt, der von den Entwicklern der E-Commerce-Plattform Shopify im Rahmen einer Initiative zur Steigerung der Leistung von Ruby-Anwendungen, die das Rails-Framework verwenden und viele Methoden aufrufen, entwickelt wurde. Das Hauptunterscheidungsmerkmal zum zuvor verwendeten JIT-Compiler MJIT, der auf der vollstĂ€ndigen Verarbeitung von Methoden basiert und einen externen Compiler in C verwendet, besteht darin, dass YJIT die Versionierung von Basisblöcken (LBBV — Lazy Basic Block Versioning) anwendet und einen integrierten JIT-Compiler enthĂ€lt. Dank LBBV kompiliert der JIT zunĂ€chst nur den Anfang der Methode und den Rest erst spĂ€ter, nachdem wĂ€hrend der AusfĂŒhrung die Typen der verwendeten Variablen und Argumente bestimmt wurden. Bei der Verwendung von YJIT wurde eine Leistungssteigerung von 22 % bei dem Test railsbench und von 39 % bei dem Test liquid-render festgestellt. YJIT unterstĂŒtzt derzeit nur unix-Ă€hnliche Betriebssysteme auf x86-64-Architekturen und ist standardmĂ€ĂŸig deaktiviert (um es zu aktivieren, sollte der Flag „—yjit“ in der Befehlszeile angegeben werden).
  • Die Leistung des alten JIT-Compilers MJIT wurde verbessert. FĂŒr Projekte, die Rails verwenden, wurde die maximale Cache-GrĂ¶ĂŸe (—jit-max-cache) standardmĂ€ĂŸig von 100 auf 10.000 Anweisungen erhöht. Die Deaktivierung von JIT fĂŒr Methoden mit mehr als 1.000 Anweisungen wurde eingestellt. Um die UnterstĂŒtzung von Zeitwerk in Rails sicherzustellen, wird der im JIT erzeugte Code nicht mehr verworfen, wenn der TracePoint fĂŒr Klassenevents aktiviert ist.
  • Im Lieferumfang enthalten ist ein vollstĂ€ndig neu geschriebener Debugger debug.gem, der Remote-Debugging unterstĂŒtzt, die Leistung der zu debuggenden Anwendung nicht beeintrĂ€chtigt, die Integration mit fortschrittlichen Debugging-Schnittstellen (VSCode und Chrome) ermöglicht, fĂŒr das Debugging von Multi-Thread- und Multi-Prozess-Anwendungen verwendet werden kann, eine REPL-CodeausfĂŒhrungsoberflĂ€che bietet, erweiterte Trace-Funktionen ermöglicht und in der Lage ist, Code-Schnipsel aufzuzeichnen und wiederzugeben. Der zuvor angebotene Debugger lib/debug.rb wurde aus dem Basislieferumfang entfernt.
    Veröffentlichung der Programmiersprache Ruby 3.1
  • In den RĂŒckverfolgungsberichten wurde eine visuelle Hervorhebung von Fehlern implementiert. Die Kennzeichnung der Fehler erfolgt durch das integrierte und standardmĂ€ĂŸig aktivierte Gem-Paket error_highlight. Um die Kennzeichnung von Fehlern zu deaktivieren, kann die Einstellung „—disable-error_highlight“ verwendet werden. $ ruby test.rb test.rb:1:in „
    “: undefinierte Methode „time“ fĂŒr 1: Ganzzahl (NoMethodError) 1.time {} ^^^^^ Meinten Sie vielleicht? times
  • In der interaktiven Berechnungsumgebung IRB (REPL, Read-Eval-Print-Loop) wurde die automatische VervollstĂ€ndigung des eingegebenen Codes implementiert (beim Eingeben wird eine Eingabehilfe mit VorschlĂ€gen angezeigt, zwischen denen man mit der Tabulatortaste oder Shift+Tab wechseln kann). Nach der Auswahl einer Fortsetzung wird ein Dialog angezeigt, in dem die Dokumentation zum gewĂ€hlten Element dargestellt wird. Zum Wechseln zur vollstĂ€ndigen Dokumentation kann die Tastenkombination Alt+d verwendet werden.
    Veröffentlichung der Programmiersprache Ruby 3.1
  • Die Syntax der Sprache erlaubt jetzt das Weglassen von Werten in Hash-Literalen und SchlĂŒsselwort-Argumenten bei Funktionsaufrufen. Zum Beispiel kann anstelle des Ausdrucks „{x: x, y: y}“ jetzt „{x:, y:}“ angegeben werden, und anstelle von „foo(x: x, y: y)“ — foo(x:, y:).
  • Die UnterstĂŒtzung fĂŒr eindimensionale Pattern-Matches (ary => [x, y, z]) wurde stabilisiert, die nun nicht mehr als experimentell gelten.
  • Der Operator „^“ in Pattern-Matches kann nun beliebige AusdrĂŒcke enthalten, wie zum Beispiel: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #=>? [[3, 5], [5, 7], [11, 13]]
  • In eindimensionalen Pattern-Matches ist es nun erlaubt, Klammern wegzulassen: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • In die Typannotationssprache RBS, die es erlaubt, die Struktur eines Programms und die verwendeten Typen zu definieren, wurde die UnterstĂŒtzung fĂŒr die Angabe von Obergrenzen fĂŒr Typparameter mit dem Symbol „<“ hinzugefĂŒgt, die UnterstĂŒtzung fĂŒr Typsynonyme erweitert, und es wurden Sammlungen fĂŒr das Management von Gems implementiert. Zudem wurde die Performance verbessert und zahlreiche neue Signaturen fĂŒr eingebaute und Standardbibliotheken realisiert.
  • Im statischen Typanalysator TypePro, der RBS-Anmerkungen basierend auf einer Analyse des Codes ohne explizite Typinformationen generiert, wurde die experimentelle UnterstĂŒtzung fĂŒr integrierte Entwicklungsumgebungen (z.B. ein Plugin zur Integration von TypePro in den VSCode-Editor) hinzugefĂŒgt.
  • Die Reihenfolge der Verarbeitung mehrerer Zuweisungen wurde geĂ€ndert. Zuvor wurden die Komponenten des Ausdrucks „foo[0], bar[0] = baz, qux“ in der Reihenfolge baz, qux, foo, bar verarbeitet, jetzt jedoch in der Reihenfolge foo, bar, baz, qux.
  • Es wurde experimentelle UnterstĂŒtzung fĂŒr die Speicherzuweisung von Strings mit dem VWA (Variable Width Allocation)-Mechanismus hinzugefĂŒgt.
  • Die Versionen der integrierten und in der Standardbibliothek enthaltenen Gem-Module wurden aktualisiert. Die Pakete net-ftp, net-imap, net-pop, net-smtp, matrix, prime und debug sind integriert.

Quelle: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster