Programmiersprache Scala 2.13 erweitert das Collection-Framework

Das derzeit als Release Candidate verfügbare Scala 2.13 vereinfacht den Umgang mit Collections unter anderem durch den Verzicht auf Traversable.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Programmiersprache: Scala 2.13 erweitert das Collection-Framework
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Etwa zweieinhalb Jahre nach der Veröffentlichung der Version 2.12 ist nun der erste Release Candidate von Scala 2.13 erschienen. Da es sich um einen sogenannten Library-Release handelt, der sich auf die Bibliotheken konzentriert, bringt es nur kleinere Neuerungen an der Syntax der Programmiersprache mit. Der Schwerpunkt des aktuellen Release liegt auf dem vereinfachten Umgang mit Collections. Die Programmiersprache hat zudem eine andere Lizenz und ist nun unter der Apache-2-Lizenz verfügbar.

Die Collections-API hielt in Scala 2.8 Einzug in die Programmiersprache und bietet einen weitgehend einheitlichen Umgang mit unterschiedlichen Collection-Typen wie Map, List und Seq. Mit Version 2.13 kommen einige Änderungen hinzu, die mehr Klarheit schaffen und den Einsatz vereinfachen sollen. Dabei ist das erklärte Ziel, die Collections so weit wie möglich kompatibel zu Scala 2.12 zu halten und nur unvermeidbare Breaking Changes zu akzeptieren.

Eine augenscheinliche Neuerung ist, dass Traversable entfällt, das bisher über Iterable in der Hierarchie stand, aber Iterable als einzigen Untertypen hatte. Die Aufteilung sei den Overhead nicht wert, wie ein Blogbeitrag vom Sommer 2018 erklärt. Traversable ist nun lediglich ein Alias für Iterable[A].

Aus der bisherigen Collection-Hierarchie der abstrakten Typen entfällt künftig Traversable als Obertyp.

(Bild: Scala-Lang.org)

Entwickler werden in ihrem Alltag vor allem bemerken, dass die Transformationsfunktionen auf CanBuildFrom verzichten. Mit Scala 2.13 haben die Macher die Architektur geändert, wie ein umfassender Blogartikel aus dem Jahr 2017 erläutert. Änderungen zu den Operationen für Collections sind zudem in einem weiteren Blogbeitrag aufgeführt.

Darüber hinaus erlaubt Scala neuerdings wie zahlreiche andere Programmiersprachen den Unterstrich als Trennzeichen für numerische Literale zu verwenden. Außerdem bleiben leere Klammern als Unit Value erhalten, sodass x op() nicht wie bisher zu x.op(), sondern zu x.op(()) wird. Dank Optimierungen für die nebenläufige Programmierung ist wohl Future deutlich performanter als bisher.

Eine Liste der Neuerungen lässt sich den Release Notes auf GitHub entnehmen, die allerdings nur die Änderungen seit dem vorigen Milestone-Release enthält. Die wesentlichen Änderungen zu den Collections kamen im M4-Build hinzu. Mit Blick auf die vergangenen Scala-Versionen dürfte es ein bis zwei Monate dauern, bis das endgültige Release erscheint. Anschließend steht noch ein weiteres Minor Release an, das vor allem den Weg zum Umstieg auf das für 2020 geplante Scala 3 ebnen soll.

Siehe dazu auf heise Developer:

(rme)