Ruby 3.4: Die neueste Version in allen Tarifen
Nachdem Ruby 3.4.0 bereits Ende Dezember das Licht der Welt erblickte, ist die derzeit neueste Version der beliebten Programmiersprache Ruby 3.4.4 seit eiigen Tagen Juni nun auch in allen unseren Tarifen verfügbar. Neben den früheren Versionen wie 3.2 / 3.1 etc.
Ruby 3.4 bringt eine Reihe spannender Verbesserungen und Neuerungen mit sich, die die Entwicklung in Ruby noch effizienter, sicherer und angenehmer gestalten. Werfen wir einen Blick auf einige der wichtigsten Highlights.
Neuerungen in Ruby 3.4
Der neue Blockparameter it:
Ruby 3.4 führt eine sehr praktische Syntax-Erweiterung ein: den impliziten Blockparameter it. Ähnlich wie die nummerierten Parameter (_1, _2 etc.) aus Ruby 2.7 vereinfacht it das Schreiben von kurzen Blöcken, die nur einen Parameter verwenden. Anstatt array.map { |item| item.upcase } kann nun einfach array.map { it.upcase } geschrieben werden. Dies erhöht die Lesbarkeit und Prägnanz des Codes erheblich, insbesondere bei Ketten von Operationen.
Verbesserungen im Just-In-Time (JIT)-Compiler YJIT:
– Einheitliches Speicherlimit: Es gibt nun ein einheitliches Speicherlimit (–yjit-mem-size), das den gesamten Speicherverbrauch von YJIT verfolgt und die frühere Option –yjit-exec-mem-size ersetzt. Dies ermöglicht eine präzisere Kontrolle über den Ressourcenverbrauch.
– Kompilierungsprotokoll: Mit –yjit-log kann ein Kompilierungsprotokoll aktiviert werden, das auch zur Laufzeit über RubyVM::YJIT.log zugänglich ist. Dies ist ein wertvolles Tool für Performance-Analysen.
– Zu weiteren Optimierungen gehören komprimierte Metadaten zur Reduzierung des Speicherbedarfs, Registerzuweisung für lokale Variablen und Methodenargumente sowie Inlining kleiner/trivialer Methoden, was die Ausführungsgeschwindigkeit weiter steigert.
Modulare Garbage Collection (GC) und GC.config:
Ruby 3.4 führt eine modulare Garbage Collection ein. Dies ermöglicht es, alternative GC-Strategien zu verwenden, die auf die spezifischen Anforderungen ihrer Anwendung zugeschnitten sind. Die neue Methode GC.config erlaubt es zudem, Konfigurationsvariablen direkt für den Garbage Collector zu setzen, was eine feinere Steuerung des Speicherverhaltens und eine Reduzierung von Speicherlecks ermöglichen soll.
Prism als Standard-Parser:
Bereits in Ruby 3.3 als Standard-Gem eingeführt, wird der Prism-Parser in Ruby 3.4 nun vollständig als Standard-Parser von Ruby verwendet. Prism ist ein vielseitiger und fehlertoleranter Parser, der sich durch seine Wartbarkeit und die rekursiv absteigende Parsing-Methode auszeichnet.
“Chilled Strings” und standardmäßig eingefrorene String-Literale (Warnungen):
In Dateien ohne ‘# frozen_string_literal: true’ Kommentar verhalten sich String-Literale nun wie sog. “chilled strings”. Das bedeutet, sie können noch mutiert werden, aber es wird eine Deprecation-Warnung ausgegeben. Zukünftige Ruby-Versionen werden diese Strings standardmäßig einfrieren und eine Fehlermeldung ausgeben, wenn versucht wird, sie zu mutieren. Diese Übergangsphase soll Entwicklern Zeit geben, ihre Anwendungen anzupassen und die Verwendung unveränderlicher Strings zu fördern. Die Warnungen sind standardmäßig nicht aktiviert, können aber über Warning[:deprecated] = true oder das Kommandozeilenargument -W:deprecated aktiviert werden.
Die Lesbarkeit von Fehlermeldungen und Backtraces wurde in Ruby 3.4 verbessert, was das Debugging weiter erleichtern soll:
– Einzelne Anführungszeichen (‘) statt Backticks (`) als öffnendes Anführungszeichen.
– Anzeige des Klassennamens vor dem Methodennamen (z.B. ‘Object#foo’ statt nur ‘foo’), sofern die Klasse einen permanenten Namen hat.
– Entfernung von unnötigen Frames aus rescue / ensure-Blöcken in Backtraces, was diese kürzer und übersichtlicher macht.
Optimierte Hash#inspect Darstellung
Die Darstellung von Hashes bei der inspect-Methode wurde angepasst. Symbol-Keys werden nun in der modernen Kurzschreibweise ({user: 1}) angezeigt, und andere Keys erhalten Leerzeichen um => ({“user” => 1}) mit dem Ziel einer konsistenteren und moderneren Darstellung.

Ruby 3.4 enthält auch zahlreiche Erweiterungen und Verbesserungen in den mitgelieferten Standardbibliotheken, darunter:
– RubyGems: Eine neue –attestation-Option für gem push, die das Speichern von Signaturen bei sigstore.dev ermöglicht.
– Bundler: Einführung der lockfile_checksums-Konfiguration, um Prüfsummen in neue Lockfiles aufzunehmen, sowie der Befehl bundle lock –add-checksums zum Hinzufügen von Prüfsummen zu bestehenden Lockfiles.
– JSON: Performance-Verbesserungen beim Parsen von JSON; in Tests bis zu 1,5-mal schneller als frühere Versionen.
– Tempfile: Das neue Keyword-Argument anonymous: true für Tempfile.create, das die sofortige Entfernung der temporären Datei nach der Erstellung ermöglicht, sodass Anwendungen die Datei nicht explizit entfernen müssen.
Verfügbarkeit
Diese spezifisch gennnten Neuerungen machen Ruby 3.4 zu einer Veröffentlichung die die kontinuierliche Weiterentwicklung von Ruby unterstreicht v.a. in Richtung Leistung, Entwicklerfreundlichkeit und Stabilität. Die offiziellen Release-Notes natürlich auf der Seite von Ruby-lang: https://www.ruby-lang.org/de/news/2023/12/25/ruby-3-3-0-released/
Ruby 3.4.4 steht ab sofort in allen unseren Tarifen mit Ruby-Unterstützung zur Verfügung. Der Pfad dafür lautet: /opt/plesk/ruby/3.4.4
Weiterhin sind die Vorgänger-Versionen 3.3.x sowie 3.2.x nutzbar. Für Bestandskunden stehen auch weiterhin noch ältere Versionen zur Verfügung. Weitere Informationen auch auf unserer Produktseite zum Thema: Ruby und Ruby on Rails – Hosting