Programmiersprache: Ruby 3.0 verspricht deutlichen Performancegewinn
Erneut haben die Herausgeber der Sprache ein großes Weihnachts-Release ausgeliefert, das zudem einen besseren Umgang mit Typen und mehr Leistung verspricht.
- Alexander Neumann
- Silke Hahn
Vor 25 Jahren kam kurz vor Weihnachten die erste Hauptversion von Ruby heraus, seither hat sich bei den Herausgebern der Programmiersprache eine weihnachtliche Release-Tradition etabliert: Auch Ruby 3.0 stimmt in diesen Chor ein und ist nun planmäßig erschienen, ziemlich genau ein Jahr nach dem letzten Release der 2.x-Serie – Ruby 2.7. Die Entwicklung von Ruby 3.0 begann offenbar schon vor fünf Jahren und Ruby-Erfinder Yukihiro Matsumoto verspricht eine dreimal schnellere Ausführung von mit Ruby 3.0 geschriebenen Programmen als welchen, die mit Ruby 2 programmiert wurden.
Release-Sprung mit Neuerungen
Matsumoto (in der Community schlicht "Matz" genannt) hatte Anfang September auf GitHub bestätigt, dass Ruby-Entwickler um Weihnachten herum ein großer Release-Sprung erwartet. Sieben Jahre lang war Ruby auf den Schienen der 2er-Serie gefahren. Ruby-Entwickler haben im Vorfeld teils kundgetan, dass von Ruby 3.x vor allem höhere Performance gegenüber 2.x zu erwarten sei – wenn auch wohl weiterhin mit Luft nach oben. Zu der besseren Performance haben vermutlich viele Arbeiten am Method-based JIT-Compiler MJIT ihren Teil beigetragen. Alte Abhängigkeiten mit dem Paketsystem Ruby-Gems entfallen offenbar, Ruby 3.0 führt neue Konzepte ein.
Eine wichtige Neuerung ist die Unterstützung für RBS, eine Sprache zum Beschreiben der Typen von Ruby-Programmen. Mit TypeProf kommt außerdem ein Analysewerkzeug hinzu, das einfachen, also nicht typannotierten Ruby-Code lesen und dessen Methoden erkennen kann. Ein noch experimentelles Feature ist mit Ractor eine vom Actor-Modell inspirierte Abstraktion für nebenläufige Programme, die entwickelt wurde, um eine parallele Ausführungsfunktion ohne Bedenken hinsichtlich der Thread-Safety zu bieten. Der Fiber#scheduler
wurde zum Abfangen blockierender Operationen eingeführt. Es ermöglicht eine einfache Nebenläufigkeit, ohne dass Code geändert werden muss. Der Thread#scheduler
hat außerdem das experimentelle Stadium verlassen: Mit ihm lassen sich blockierende Prozesse abfangen.
Ruby 3.0 unterstützt RBS
Bei Ruby lassen sich mittels RBS nun Methoden in Klassen und Instanzvariablen in ihren Typen definieren. Darüber hinaus sind Vererbungs- oder Mischbeziehungen möglich. Das Ziel von RBS ist es, allgemein bekannte Patterns in Ruby-Programmen zu unterstützen. Es ermöglicht das Schreiben komplexer Typen, einschließlich Union-Types, Methodenüberladung und Generics.
Außerdem soll RBS das Duck-Typing mit Schnittstellentypen unterstützen. Duck-Typing ist ein Konzept der objektorientierten Programmierung. Dabei beschreibt nicht die Klasse den Typ eines Objekts, sondern das Vorhandensein bestimmter Methoden oder Attribute ist ausschlaggebend. Die dritte Major-Version von Ruby enthält rbs gem
, was das Parsen und Verarbeiten von in RBS geschriebenen Typ-Definitionen ermöglichen soll. Type-Checker, inklusive Type-Profiler und andere Tools, die RBS unterstützen, sollen Ruby-Programme mit RBS-Definitionen besser verstehen.
Ruby, the Rednosed Reindeer?
Die Programmiersprache gibt es seit 1993, erfunden hatte sie der japanische Entwickler Yukihiro "Matz" Matsumoto. Ruby ist Open Source und speziell für die Webentwicklung im 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.
Ruby 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. Das soll schon manche von komplexeren Sprachen frustrierte Entwickler ins Boot geholt haben.
Weiterführende Hinweise
Ein Großteil der Features war bereits aus der Preview bekannt, und der Fahrplan stand seit September fest. Weitere Informationen lassen sich der Release-Meldung entnehmen.
(sih)