Ruby 3.4: Prism wird neuer Standardparser zur Performance-Optimierung
Für die Programmiersprache Ruby bringt das Update auf Version 3.4 mit "it" ein neues Keyword für Blockparameter sowie Prism als neuen Standardparser.
Das Entwicklerteam hinter der dynamischen und objektorientierten Programmiersprache Ruby hat Version 3.4 veröffentlicht. Das Update hält einige Neuerungen bereit, darunter ein neues it
-Keyword, Prism als Standardparser sowie neue Funktionsweisen für YJIT.
it-Schlüsselwort und Prism
Ruby 3.4 hat das Keyword it
im Gepäck, was das Referenzieren von Blockparametern erleichtern soll. Es verhält sich ähnlich wie _1
, bietet jedoch eine Möglichkeit, den ersten Blockparameter in Einzeilern zu verwenden, ohne zusätzliche numerische Parameter wie _2
in Betracht ziehen zu müssen. Die Neuerung soll die kognitive Last beim Lesen von Code verringern, der nur den ersten Parameter verwendet.
In Ruby 3.4 wurde der Standardparser auf Prism umgestellt. Laut Ankündigungsbeitrag handelt es sich dabei eher um eine interne Anpassung, die für die meisten Nutzerinnen und Nutzer kaum sichtbare Änderungen mit sich bringen soll – Ziel ist, die Parserleistung und -stabilität zu optimieren.
Unterstützung für Happy Eyeballs 2
Die Socket-Bibliothek in Ruby 3.4.0 unterstützt Happy Eyeballs Version 2 (RFC 8305), was die Netzwerkverbindungen verbessert. Happy Eyeballs ist ein Algorithmus, der die Verzögerung bei Netzwerkverbindungen minimiert, indem er gleichzeitig IPv6- und IPv4-Verbindungen aufbaut und probiert, und die schnellste erfolgreiche Verbindung verwendet.
Neues für YJIT
Ruby 3.4 bringt einige Neuerungen für YJIT (Yet Another Just-in-Time Compiler), einen Just-in-Time-Compiler für Ruby, der darauf ausgelegt ist, die Ausführungsleistung von Ruby-Programmen zu verbessern, indem er häufig ausgeführte Ruby-Methoden während der Laufzeit in effizienteren Maschinencode übersetzt. Dies führt zu einer schnelleren Ausführung von Ruby-Programmen, insbesondere bei rechenintensiven Aufgaben.
Das Update überarbeitet die Leistung auf x86-64- und ARM64-Plattformen, hat einen reduzierten Speicherverbrauch durch komprimierte Metadaten und ein einheitliches Speicherlimit. Das Entwicklerteam führt neue Kommandozeilenoptionen ein, wie --yjit-mem-size
für eine intuitivere Speicherverwaltung und --yjit-log
für das Erstellen eines Kompilierungsprotokolls.
Außerdem hält das Update unter anderem neue Optimierungen bereit, wie das Inlining von kleinen Methoden. Inlining ist eine Optimierungstechnik, bei der der Code einer Methode direkt in den aufrufenden Codeblock eingefügt wird, um den Overhead von Funktionsaufrufen zu reduzieren und die Ausführungsgeschwindigkeit zu erhöhen.
Änderungen an der Sprache
In Ruby 3.4 wurden mehrere Änderungen an der Sprache vorgenommen. Ruby gibt ab sofort eine Deprecation-Warnung aus, wenn String-Literale in Dateien ohne einen frozen_string_literal
-Kommentar verändert werden. Zudem wird **nil
beim Keyword Splatting so behandelt, als ob keine Schlüsselwörter übergeben werden, ähnlich wie **{}
. Keyword Splatting in Ruby erlaubt es, einen Hash oder nil
mittels **
als Keyword-Argumente an eine Methode zu übergeben, wobei **nil
so behandelt wird, als ob keine Keyword-Argumente übergeben werden.
Die Übergabe von Blöcken und die Nutzung von Keyword-Argumenten in Indexmethoden ist in Ruby 3.4 nicht mehr erlaubt. Des Weiteren ist der Toplevel-Name ::Ruby
nun reserviert, und seine Definition löst eine Warnung aus, wenn Warning[:deprecated]
aktiviert ist.
Nähere Informationen zu Ruby 3.4 bietet der Ankündigungsbeitrag auf der offiziellen Website zur Programmiersprache.
(mdo)