Vor 25 Jahren kam kurz vor Weihnachten 1995 die erste Version 0.95 von Ruby heraus, und seitdem hat sich bei den Herausgebern der Programmiersprache eine Art weihnachtliche Release-Tradition eingebürgert: Auch Ruby 3.0 ist jetzt planmäßig kurz vor Weihnachten erschienen.

Allerdings hat die Entwicklung von Ruby 3.0 schon vor fünf Jahren begonnen, und der Ruby-Erfinder Yukihiro Matsumoto verspricht jetzt eine dreimal schnellere Ausführung von mit Ruby 3.0 geschriebenen Programmen als solchen, die noch mit Ruby 2 programmiert wurden.

Ruby 3.0 bringt reichlich Neuerungen

Matsumoto hatte Anfang September auf GitHub bestätigt, dass Ruby-Entwickler um Weihnachten herum ein großer Release-Sprung erleben werden. Die Ruby-Entwickler haben zum Teil schon verlauten lassen, dass es mit Ruby 3.x vor allem höhere Performance gegenüber 2.x gibt.

Die bessere Performance ist vermutlich den Arbeiten am methodenbasierten JIT-Compiler MJIT zu verdanken. Dabei entfallen alte Abhängigkeiten zum Paketsystem Ruby-Gems offenbar ganz, und Ruby 3.0 führt neue Konzepte ein.

Zu den wichtigen Neuerungen zählt die Unterstützung für RBS, eine Sprache zum Beschreiben der Typen von Ruby-Programmen. Außerdem kommt mit TypeProf ein Analysetool hinzu, das einfachen, nicht typannotierten Ruby-Code lesen und dessen Methoden dabei erkennen kann.

Als noch experimentell gilt das Feature „Ractor“, eine vom Actor-Modell inspirierte Abstraktion für die nebenläufige Programmierung, die entwickelt wurde, um parallele Ausführungsfunktionen ohne Bedenken wegen der Thread-Safety zu bieten.

Der  zum Abfangen blockierender Operationen eingeführte Fiber#scheduler ermöglicht eine einfache Nebenläufigkeit, ohne dass man den Code ändern muss. Auch der Thread#scheduler hat das experimentelle Stadium verlassen- Mit ihm kann man blockierende Prozesse abfangen.

Neue Version kommt mit RBS-Unterstützung

Mit Ruby 3.0 lassen sich über RBS jetzt Methoden in Klassen und Instanzvariablen in ihren Typen definieren. Außerdem sind damit Vererbungs- oder Mischbeziehungen möglich. Ziel von RBS ist es, allgemein bekannte Patterns in Ruby-Programmen zu unterstützen. Es erlaubt das Schreiben komplexer Typen einschließlich Union-Types, Methodenüberladung und Generics.

Darüber hinaus soll RBS auch das Duck-Typing mit Schnittstellentypen unterstützen. Dabei wird der Typ eines Objekts nicht durch die Klasse, sondern durch das Vorhandensein bestimmter Methoden oder Attribute definiert. Ruby 3.0 enthält rbs gem, womit das Parsen und Verarbeiten von in RBS geschriebenen Typ-Definitionen ermöglicht wird. Type-Checker, Type-Profiler und andere Tools, die RBS unterstützen, sollen Ruby-Programme mit RBS-Definitionen besser verstehen.

Weiterführende Informationen

Viele der neuen Features waren schon aus der Preview bekannt, und der Fahrplan stand auch schon seit September fest. Weitere Hinweise und Informationen zu Ruby 3.0 finden Sie in der Release-Meldung.