Programmiersprache: Ruby 3.1 führt neuen Debugger und JIT-Compiler ein

Das Weihnachts-Release der Sprache liefert den komplett neu geschriebenen Debugger debug.gem und testet den von Shopify entwickelten YJIT-Compiler.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 2 Beiträge
Von
  • Matthias Parbel

Die Herausgeber der Programmiersprache Ruby halten auch 2021 an ihrer mehr als 25-jährigen Tradition fest, stets zu Weihnachten ein neues Release vorzulegen. Ruby 3.1 hat laut Ankündigung im Ruby-Blog eine Reihe neuer Funktionen im Gepäck, ohne jedoch die Kompatibilität mit der vor 12 Monaten freigegebenen Hauptversion 3.0 zu brechen. Neben dem vollständig überarbeiteten Debugger debug.gem erhalten Entwicklerinnen und Entwickler unter anderen auch den neuen Just-in-Time-Compiler YJIT.

Höhere Leistung ist eines der Versprechen des neu geschriebenen Debugger debug.gem, der den bisher im Bundle mitgelieferten lib/debug.rb ersetzt. Unter den neuen Funktionen finden sich zudem Multi-Process- und Multi-Thread-Debugging, ein Tracing- sowie ein Record/Replay-Feature. Ruby-Entwicklerinnen und -Entwickler können debug.gem darüber hinaus in Visual Studio Code sowie Google Chrome nutzen – auch Remote-Debugging ist damit möglich.

Die zweite große Neuerung ist, wie bereits zur Preview von Ruby 3.1 angekündigt, der Just-in-Time-Compiler YJIT, der den 2018 in Version 2.6 eingeführten MJIT ersetzen soll. Der bisherige methodenbasierte JIT-Compiler konnte trotz Zugriff auf einen externen C-Compiler sowie einiger zwischenzeitlicher Performanceverbesserungen in der Praxis offenbar nicht so recht überzeugen. Das Ruby-Team hat sich daher entschlossen, auf den ursprünglich von Shopify entwickelten In-Process-JIT-Compiler YJIT zu wechseln, der auf Basic Block Versioning sowie einen integrierten JIT-Compiler baut. Beim Lazy Basic Block Versioning (LBBV) kompiliert YJIT zunächst den Anfang einer Methode – der Rest folgt schrittweise, sobald der Typ der Argumente und Variablen dynamisch bestimmt ist. Als noch experimentelle Funktion bleibt YJIT in Ruby 3.1 allerdings standardmäßig deaktiviert. Wer den neuen Compiler bereits nutzen möchte, kann ihn mit dem Befehl --yjit aktivieren – vorläufig aber nur auf x86-64-Plattformen.

Eine weitere, standardmäßig aktivierte Neuerung ist error_highlight. Das Gem soll unter anderem eine detailliertere Fehlersuche im Backtrace bieten, wie das folgende Beispiel zeigt.

$ ruby test.rb
test.rb:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)

1.time {}
 ^^^^^
Did you mean?  times

In der IRB (Interactive Ruby Shell) findet sich nun eine Autovervollständigungsfunktion. Sobald Entwicklerinnen und -Entwickler Code eingeben, erscheint ein Dialogfeld mit einer Vervollständigungsauswahl, in der sie mit Tab und Umschalt+Tab navigieren können. Sind zu einer Auswahl Dokumente installiert, lässt sich deren Inhalt mit Alt+d lesen.

Eine komplette Übersicht aller Neuerungen in Ruby 3.1 lässt sich der Release-Meldung entnehmen.

Die 1993 vom japanischen Entwickler Yukihiro "Matz" Matsumoto erfundene Programmiersprache ist im Kern objektorientiert, unterstützt allerdings auch andere Paradigmen und Konzepte wie das dynamische Typisieren, Reflections und die automatische Speicherbereinigung. In Ruby geschriebene Programme werden zur Laufzeit interpretiert, und als Vorteil gilt, dass der Code nicht sonderlich komplex ist.

Ruby ist als Open Source verfügbar und kommt speziell für die Webentwicklung zum Einsatz. Plattformen wie GitHub, Shopify, Stripe und AirBnB nutzen Ruby aktiv. Durch das in Ruby geschriebene Webframework "Ruby on Rails" erfuhr die Sprache vor 15 Jahren Auftrieb, geriet 2021 aber auch in die Schlagzeilen: Zunächst erzeugte eine durch Lizenzprobleme entfallene Library einen Dominoeffekt, dann löste noch ein Missgeschick der Gründer von Basecamp und Ruby on Rails beim Verkünden neuer Governance-Richtlinien einen Mitarbeiter-Exodus aus.

(map)