Ruby 3 zeigt eine Vorschau der parallelen Ausführung an

Ruby 3.0.0, ein geplantes Upgrade auf die seit langem etablierte dynamische Open Source-Sprache, ist jetzt als Vorschau verfügbar. Zu den Highlights der neuen Version gehören Funktionen für die parallele Ausführung und die Typbeschreibung.

Die parallele Ausführung erfolgt in Form einer experimentellen Funktion namens "Ractor", bei der es sich um eine aktormodellähnliche Parallelitätsabstraktion handelt, die eine parallele Ausführung ohne Bedenken hinsichtlich der Thread-Sicherheit ermöglichen soll. Entwickler können mehrere Ractors erstellen und parallel ausführen. Diese parallelen Programme können threadsicher gemacht werden, da Ractors keine normalen Objekte gemeinsam nutzen können. Die Kommunikation zwischen Ractors wird durch Nachrichtenübermittlung unterstützt.

Ruby 3.0.0 führt auch RBS ein, das als Sprache zur Beschreibung der Arten von Ruby-Programmen in Rechnung gestellt wird. Ruby 3.0.0 wird mit dem Edelstein rbs geliefert, mit dem in RBS geschriebene Typdefinitionen analysiert und verarbeitet werden können. Typprüfungen, einschließlich Typprofiler und anderer Tools, die RBS unterstützen, verstehen Ruby-Programme mit RBS-Definitionen besser.

RBS soll häufig vorkommende Muster in Ruby-Programmen unterstützen. Erweiterte Typen können geschrieben werden, einschließlich Unionstypen, Methodenüberladung und Generika. Die Eingabe von Enten mit Schnittstellentypen wird ebenfalls unterstützt. 

Abgesehen von Ractor und RBS soll die Version Ruby 3.0.0 eine Reihe weiterer Funktionen bieten:

  • Ein Scheduler, ebenfalls in der experimentellen Phase, zum Abfangen von Blockierungsoperationen. Identifiziert als Thread#scheduler, ermöglicht die Funktion eine leichte Parallelität, ohne vorhandenen Code zu ändern.
  • Die Speicheransicht, ein weiteres experimentelles Merkmal, ist ein C-API-Satz zum Austauschen eines Rohspeicherbereichs, z. B. eines numerischen Arrays oder eines Bitmap-Bilds, zwischen Erweiterungsbibliotheken. Diese Bibliotheken können auch die Metadaten des Speicherbereichs gemeinsam nutzen, der aus der Form, der Elementform usw. besteht.
  • Verbesserte Leistung im Ruby MJIT-Compiler (method-based Just In Time).
  • Trennung von Schlüsselwortargumenten von anderen Argumenten.
  • Hash#except eingebaut.
  • Eine Anweisung zur Zuordnung nach rechts.
  • Eine endlose Methodendefinition.
  • Das Hinzufügen eines Suchmusters.

Die am 25. September vorgestellte Ruby 3.0.0-Vorschau kann von ruby-lang.org heruntergeladen werden. Für die zweite Vorschau planen die Builder von Ruby, einen Typprofiler einzuschließen, der als statische Analysefunktion dient. Die aktuellen stabilen Versionen von Ruby sind die Versionen 2.7.1 und 2.6.6.