In einem Compiler vor unserer Zeit...

Dart 2.2: Performance & Set-Literale

Dominik Mohilo

© Shutterstock / Cienpies Design

Die jüngste Version von Googles C-Alternative, Go 1.12, ist gerade erschienen, da zieht das JavaScript-Derivativ des Softwareriesen nach: Dart 2.2 ist da! Gearbeitet wurde unter anderem an der Optimierung der Ahead-of-Time-Performanz und der Unterstützung für Set-Literale.

Während die Programmiersprache Go sich anhaltender Beliebtheit erfreut, ist Dart nach wie vor eher ein Nischenprodukt. Im TIOBE-Index steht die Sprache auf Rang 25, auf Stack Overflow gibt es knapp 14.000 mit dart getaggte Fragen (zum Vergleich: Für Go sind es über 36.000, für Java 1.518.612) und im PYPY-Index kommt die Sprache auf den ersten 20 Plätzen gar nicht vor.

Dennoch erlebt Dart möglicherweise bald eine kleine Renaissance, denn das Framework Flutter (gerade in Version 1.2 erschienen) wird in Sachen App-Entwicklung immer beliebter. Davon könnte Dart vielleicht bald profitieren. Bis dahin wird im Hause Google vermutlich vor allem daran gearbeitet, das SDK der Sprache möglichst performanter zu machen.

Dart 2.2: Das ist neu

Wie bereits erwähnt war man bei der Entwicklung von Dart 2.2 einmal mehr im Bereich Ahead-of-Time-Kompilierung (AOT) unterwegs. Nachdem man bereits mit Dart 2.1 durch die Reduktion des Overheads bei Type Checks einige Performance-Verbesserungen für Ahead-of-Time und Just-in-Time kompilierten Code erzielen konnte, war diesmal ausschließlich AOT im Blick.

Diesmal ging es dem Overhead von statischen Aufrufen (Static Calls) an den Kragen. Durch die Optimierung ist der AOT Code nun fähig, ein Ziel direkt via eines relativen Calls durch den Befehlszählers (Program Counter) aufzurufen. Zuvor musste die Destination noch mühsam aus einem Objekt-Pool ausgesucht werden.

Neu ist auch die Erweiterung der Literale, die nun Sets unterstützen. Musste man bislang mühsame Syntax-Verbrechen wie

Set<String> currencies = Set.of(['EUR', 'USD', 'JPY']);

ertragen, so wird durch die Set-Unterstützung der Literale zukünftig der obige String wie folgt aussehen:

const Set<String> currencies = {'EUR', 'USD', 'JPY'};

So können Sets ganz einfach initialisiert und const gemacht werden.

Neben diesen technischen Änderungen wurde die Sprachspezifikation endlich weitergeschrieben, sie ist nun wieder auf dem neuesten Stand. Außerdem wurde Dart 2.2 ins neue Repository geschoben. Wer mehr über Dart erfahren möchte, der wird im Blog-Post auf Medium fündig.

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: