Marvin Gülker Student

Ruby 2.6 wird durch die Einbindung des neuen JIT-Compilers eine drastische Performanzverbesserung erfahren.

Am 25. Dezember 2017 wurde planmäßig die neue Ruby-Version 2.5.0 freigegeben. Wie jede Minor-Version bringt auch Ruby 2.5 einige Neuerungen mit sich, die dieser Artikel vorstellen möchte. Darüber hinaus werden die im Rahmen von 2.6 für dieses Jahr anstehenden Veränderungen nebst einem vorsichtigen Ausblick auf die langfristigen Ziele von Ruby im Hinblick auf Ruby 3 vorgestellt.

Seitdem im Februar 2013, am 20. Geburtstag von Ruby, die Version 2.0 der Programmiersprache veröffentlicht wurde, wird jedes Jahr zu Weihnachten eine neue Minor-Version fällig (Tabelle 1). Da Ruby nur einem modifizierten semantischen Versionsschema folgt, können auch in Minor-Versionen neben neuen Features kleinere Inkompatibilitäten auftreten (Furore machte etwa mit 2.4 die Streichung von Fixnum und Bignum). In Ruby 2.5 überwiegen jedoch klar die neuen Features. Lediglich eine nennenswerte Inkompatibilität ist zu verzeichnen, nämlich die Entfernung der Auflösung von Konstanten der obersten Ebene über Klassen. So war bis 2.5 Folgendes möglich:

class Foo
end

puts Foo::RUBY_VERSION
# => warning: toplevel constant RUBY_VERSION referenced by Foo::RUBY_VERSION
# => 2.2.9

Das war zwar schon immer schlechter Stil, jetzt ist damit aber Schluss, denn Ruby generiert in diesen Fällen eine ordentliche Exception der Klasse NameError.

Version Veröffentlicht Fehlerkorrekturen bis Sicherheitsfixes bis
2.0.0 24.02.2013 24.02.2015 24.02.2016
2.1.0 25.12.2013 30.03.2016 31.03.2017
2.2.0 25.12.2014 28.03.2017 31.03.2018
2.3.0 25.12.2015 voraussichtlich Ende März 2018 voraussichtlich Ende März 2019
2.4.0 25.12.2016 voraussichtlich Ende März 2019 voraussichtlich Ende März 2020
2.5.0 25.12.2017 voraussichtlich Ende März 2020 voraussichtlich Ende März 2021
2.6.0 voraussichtlich 25.12.2018 voraussichtlich Ende März 2021 voraussichtlich Ende März 2022

Tabelle 1: Derzeit unterstützte Ruby-Versionen

Interessanter als diese marginale Inkompatibilität sind die neu in Ruby 2.5 eingeführten Features. Eine wichtige, aber nicht auf Anhieb verständliche Änderung betrifft das Modul Enumerable. Zunächst muss man sich dafür kurz vor Augen führen, dass es in Ruby neben der gewöhnlichen, mit dem Operator „==“ durchgeführten Gleichheitsprüfung noch die sogenannte case-Gleichheit mit dem Operator „===“ gibt. Die case-Gleichheit wird – daher der Name – insbesondere vom case-Konstrukt geprüft und stellt eher einen Musterabgleich als eine Inhaltsprüfung dar. Die Änderung in Enumerable generalisiert den zuvor schon in der Methode Enumerable#grep vorhandenen Ansatz, die case-Gleichheit als Abkürzung anstelle eines Blocks zu benutzen, indem ein optionales Argument ausgewertet wird. Dies ermöglicht Code, in dem anstatt eines aufwendigen Blocks einfach nur ein case-Gleicheit unterstützendes Objekt als Argument übergeben wird.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin 3.18 - "Automatization Now!"

Alle Infos zum Heft
579835512Was ist neu in Ruby?
X
- Gib Deinen Standort ein -
- or -