Auch mehr Compiler-Power an Bord

Scala 2.13 erschienen: Redesign der Collections und neue Sprach-Features

Dominik Mohilo

© Shutterstock / Shmelkova Nataliya

Zweieinhalb Jahre haben sich die Community und das Team von Scala Zeit gelassen, den Schritt von Scala 2.12 auf Scala 2.13 zu vollführen. Das Warten hat sich gelohnt: Die neue Sprachversion erscheint mit einer komplett überarbeiteten Collections-Bibliothek und einigen neuen Sprach-Features.

Wenn man davon spricht, eine Programmiersprache von Version 2.12 auf 2.13 zu updaten, klingt das erst einmal nicht besonders aufwendig oder umfangreich. Bei Scala allerdings stimmt dies überhaupt nicht mit der Realität überein. Scala 2.12 wurde vor mehr als zweieinhalb Jahren veröffentlicht. Das Update, Scala 2.13, erblickte nun das Licht der Welt.

Wer denkt, es wäre nicht viel passiert, der mag insofern recht haben, als dass die Sprache keine signifikanten Neuerungen erfahren hat. Scala 2.13 ist allem voran ein Library-Update, auch wenn es natürlich auch einige kleinere Neuerungen an der Sprache selbst gab. Getan wurde also sehr viel, das belegen unter anderem auch die rund 7000 Commits, die seit November 2016 am Branch 2.13.x gemacht wurden.

Scala 2.13 – das ist neu

Collections Redesign

Das Kernstück von Scala 2.13 ist ohne Frage die neue Collections Library, die komplett ünerarbeitet wurde. Sie soll nun einfacher zu nutzen sein und eine bessere Performance haben, auch die Sicherheit soll im vorerst finalen Stadium der Bibliothek deutlich größer geschrieben werden. Unter anderem wurde die die Typ-Hierarchie angepasst. Traversable und TraversableOnce existieren, so geben die Release Notes es her, gar nicht mehr, es gibt nur noch Iterable bzw. IterableOnce. Auch die Nutzung von Views wurde vereinfacht: Sie erweitern den korrespondierenden Collection-Typ nicht mehr.

Neu ist auch, dass Transformationsmethoden keinen impliziten CanBuildFrom-Parameter haben, wodurch sich die Nutzung der Bibliothek weniger kompliziert gestaltet. Diese Änderung steht auch im Zusammenhang mit dem Compiler, der dadurch Quelltext von Nutzern effizienter kompilieren kann.

Es gibt aber auch Erweiterungen der Bibliothek in Form von Collection Types: immutable.ArraySeq fasst ein Array zusammen, immutable.LazyList ist eine „lazy“ verbundene Liste. Entfernt wurden hingegen unter anderem die Collections MutableList und immutable.Stack.

Wer Scala in Verbindung mit Java nutzt, findet die Erweiterungsmethoden für Scala ab sofort unter scala.jdk, die expliziten Converter für Java hingegen finden sich unter scala.jdk.javaapi. Diese Neuorganisation zentralisiert alle Converter in einem einzigen Package.

W-JAX 2019 Java-Dossier für Software-Architekten

Kostenlos: 30+ Seiten Java-Wissen von Experten

Sie finden Artikel zu EnterpriseTales, Microservices, Req4Arcs, Java Core und Angular-Abenteuer von Experten wie Uwe Friedrichsen (codecentric AG), Arne Limburg (Open Knowledge), Manfred Steyer (SOFTWAREarchitekt.at) und vielen weiteren.

API Summit 2019
Thilo Frotscher

API-Design – Tipps und Tricks aus der Praxis

mit Thilo Frotscher (Freiberufler)

Golo Roden

Skalierbare Web-APIs mit Node.js entwickeln

mit Golo Roden (the native web)

Sprachfeatures

Das wohl auffälligste neue Feature dürften die Literal-Typen sein. Literale für Strings, Integer usw. haben nun entsprechende Literal-Typen. In diesem Zusammenhang stellt der Compiler in der aktuellen Scala-Version Instanzen von scala.ValueOf[T] als neue Typenklasse für alle alleinstehenden Typen T bereit. Interessant dürfte auch sein, dass in numerischen Literalen Unterstriche jetzt als Spacer genutzt werden können (1_000_000).

Als neues experimentelles Feature finden Makro-Annotationen den Weg in die Programmiersprache Scala. Diese werden direkt vom Compiler verwertet, ein Macro Paradise Compiler-Plug-in gibt es nicht mehr in Scala 2.13. Aktiviert werden die Makro-Annotationen mit der Flag -Ymacro-annotations.

In der Standard-Bibliothek wurde Future überarbeitet und die Geschwindigkeit erhöht. Außerdem soll der Compiler generell auch – wie bereits in vorherigen Versionen – mit bis zu fünf Prozent Performance-Gewinn aufwarten.

Alle Informationen und sämtliche Details zu den Änderungen gibt es in den Release Notes auf GitHub.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: