Die Sprache Dart 2.14 und das Framework Flutter 2.5 sind verfügbar

Google hat die Version 2.14 der Programmiersprache Dart veröffentlicht, die die Entwicklung des grundlegend überarbeiteten Zweigs Dart 2 fortsetzt. Dieser unterscheidet sich von der ursprünglichen Version der Sprache Dart durch die Verwendung einer starken statischen Typisierung (Typen können automatisch abgeleitet werden, daher ist die Angabe von Typen nicht obligatorisch, während die dynamische Typisierung nicht mehr verwendet wird, und der ursprünglich abgeleitete Typ wird an der Variablen festgelegt, wobei in der Folge eine strenge Typprüfung angewendet wird).

Eigenschaften der Sprache Dart:

  • Bekannte und leicht zu erlernende Syntax, die für Programmierer von JavaScript, C und Java natürlich ist.
  • Schnellstart und hohe Leistung für alle modernen Webbrowser und verschiedene Umgebungen, von tragbaren Geräten bis hin zu leistungsstarken. Server.
  • Die Möglichkeit, Klassen und Schnittstellen zu definieren, die Kapselung ermöglichen und die Wiederverwendung vorhandener Methoden und Daten fördern.
  • Die Angabe von Typen vereinfacht das Debugging und die Fehlersuche, macht den Code klarer und lesbarer und erleichtert die Überarbeitung und Analyse durch Drittentwickler.
  • Unterstützte Typen umfassen verschiedene Arten von Hashes, Arrays und Listen, Warteschlangen, numerische und Zeichenfolgenarten, Typen zur Definition von Datum und Uhrzeit sowie reguläre Ausdrücke (RegExp). Es besteht die Möglichkeit, eigene Typen zu erstellen.
  • Zur Organisation der parallelen Ausführung wird empfohlen, Klassen mit dem Attribut isolate zu verwenden, deren Code vollständig in einem isolierten Raum in einem separaten Speicherbereich ausgeführt wird, wobei die Interaktion mit dem Hauptprozess über Nachrichten erfolgt.
  • Unterstützung für die Verwendung von Bibliotheken, die die Wartung und das Debugging großer Webprojekte vereinfachen. Externe Implementierungen von Funktionen können als gemeinsame Bibliotheken eingebunden werden. Anwendungen können in Teile zerlegt werden, wobei die Entwicklung jedes Teils einem separaten Team von Programmierern übertragen wird.
  • Ein Satz von bereitgestellten Werkzeugen zur Unterstützung der Entwicklung mit der Sprache Dart, einschließlich der Implementierung von Werkzeugen für die dynamische Entwicklung und das Debugging mit On-the-Fly-Codeänderungen ("edit-and-continue").
  • Um die Entwicklung in der Programmiersprache Dart zu erleichtern, wird das SDK, der Paketmanager pub, der statische Code-Analyzer dart_analyzer, eine Sammlung von Bibliotheken, die integrierte Entwicklungsumgebung DartPad sowie Plugins mit Dart-Unterstützung für IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 und Vim bereitgestellt.
  • Zusätzliche Pakete mit Bibliotheken und Utilities werden über das Repository pub verteilt, das mehr als 20.000 Pakete umfasst.

Die wichtigsten Änderungen in der Version Dart 2.14:

  • Ein neuer Dreifachschiebeoperator (>>>) wurde hinzugefügt, der im Gegensatz zum Operator " >> " eine logische Verschiebung durchführt, die ohne Berücksichtigung des Vorzeichenbits funktioniert (die Verschiebung erfolgt ohne Unterscheidung zwischen positiven und negativen Zahlen).
  • Die Einschränkung für Typ-Argumente, die die Verwendung von allgemeinen Funktions-Typen als Argument mit Typen nicht zuließ, wurde aufgehoben. Beispielsweise kann jetzt angegeben werden: late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
  • Es ist nun erlaubt, Typ-Argumente in Annotations wie @Deprecated anzugeben. Zum Beispiel kann jetzt angegeben werden: @TypeHelper(42, "Die Bedeutung")
  • In die Standardbibliothek (core) in die Klasse Object wurden die statischen Methoden hash, hashAll und hashAllUnordered hinzugefügt. In der Klasse DateTime wurde die Verarbeitung der lokalen Zeit verbessert, wenn die Zeit zwischen Sommer- und Winterzeit, die nicht einem vollen Stundenwechsel entspricht, umgerechnet wird (beispielsweise hat Australien eine Verschiebung von 30 Minuten). Im Paket ffi wurde die Unterstützung für das Arenaspeichermanagement hinzugefügt, das Ressourcen automatisch freigibt. Im Paket ffigen wurde die Möglichkeit hinzugefügt, typedef-Definitionen von Dart-Typen aus C zu generieren.
  • 250 der beliebtesten Pakete aus dem Repository pub.dev und 94% der top-1000 wurden auf die Verwendung des Null-Wert-Sicherheitsmodus (null safety) umgestellt, der Abstürze verhindert, die durch den Versuch verursacht werden, Variablen zu verwenden, deren Wert nicht definiert und auf "Null" gesetzt ist. Der Modus sieht vor, dass Variablen keine undefinierten Werte haben dürfen, es sei denn, sie werden explizit auf null gesetzt. Im Modus werden die Typen der Variablen strikt berücksichtigt, was dem Compiler zusätzliche Optimierungen ermöglicht. Die Typübereinstimmung wird zur Kompilierungszeit überprüft; zum Beispiel wird im Fall des Versuchs, den Wert "Null" einer Variable vom Typ, der keinen undefinierten Zustand erlaubt, wie "int", zuzuweisen, ein Fehler ausgegeben.
  • Es wurden vereinheitlichte Regelsets für den Code-Analyzer (Linter) vorgeschlagen, die eine gleichzeitige Unterstützung der Überprüfung der Einhaltung von Stilrichtlinien für Dart und das Flutter-Framework bieten. Aus historischen Gründen unterschieden sich die Formatierungsregeln für Flutter und Dart, zudem gab es zwei Regelsets für Dart — die pedantischen von Google und die Regeln der Dart-Entwicklergemeinschaft. In Dart 2.14 wurde ein neues gemeinsames Regelset für den Linter eingeführt, das standardmäßig in neuen Dart-Projekten und im Flutter SDK verwendet werden soll. Das Set umfasst grundlegende Regeln (Paket lints/core.yaml), empfohlene zusätzliche Regeln (lints/recommended.yaml) und spezifisch für Flutter vorgesehene Empfehlungen (flutter_lints/flutter.yaml). Den Nutzern der pedantischen Regeln wird geraten, den neuen Codestil zu übernehmen, der auf den Empfehlungen aus der Dart-Dokumentation basiert.
  • Im Formatter wurden Optimierungen für das Formatieren von Kaskadierungsblöcken vorgenommen, die eine deutliche Verbesserung der Formatierungsleistung ermöglichen und mehrdeutige Interpretationen der Zugehörigkeit von Elemente des Ausdrucks vermeiden. Zum Beispiel betrifft der Aufruf „..doIt“ im Ausdruck „var result = errorState ? foo : bad..doIt()“ nicht den bedingten Teil des Blocks „bad“, sondern den gesamten Ausdruck. Daher wird beim Formatieren jetzt getrennt: var result = errorState ? foo : bad ..doIt();
  • Im SDK wurde die Unterstützung für Apple M1-Prozessoren (Silicon) hinzugefügt, die sowohl die Möglichkeit umfasst, die Dart VM, Dienstprogramme und SDK-Komponenten auf Systemen mit Apple Silicon-Prozessoren auszuführen, als auch die Unterstützung für die Kompilierung von ausführbaren Dateien für die genannten Chips.
  • Das Team „dart pub“ unterstützt jetzt die neue Dienstdatei „.pubignore“, die es ermöglicht, eine Liste von Dateien festzulegen, die bei der Veröffentlichung eines Pakets im Repository pub.dev ignoriert werden. Die angegebenen Einstellungen überschneiden sich nicht mit der Ignorierliste „.gitignore“ (in einigen Fällen erfordert pub.dev, dass Dateien, die für Git benötigt werden, wie interne Skripte für die Entwicklung, nicht übergeben werden).
  • Es wurde daran gearbeitet, die Leistung des Befehls „dart test“ zu verbessern, der jetzt keine erneute Kompilierung der Tests erfordert, nachdem pubspec geändert wurde, sofern die Versionsnummer unverändert bleibt.
  • Die Unterstützung für die Kompilierung im Modus Kompatibilität mit ECMAScript 5 wurde eingestellt (diese Änderung führt zu einem Verlust der Kompatibilität mit dem Browser IE11).
  • Die einzelnen Dienstprogramme stagehand, dartfmt und dart2native wurden als veraltet erklärt, ihre Funktionen werden jetzt durch integrierte Befehle ersetzt, die über das Dienstprogramm dart aufgerufen werden.
  • Der Mechanismus der VM Native Extensions wurde ebenfalls als veraltet eingestuft. Es wird empfohlen, für den Aufruf von nativem Code aus Dart-Code das neue Dart FFI (Foreign Function Interface) zu verwenden.

Gleichzeitig wurde ein bedeutendes Update des Benutzeroberflächen-Frameworks Flutter 2.5 vorgestellt, das als Alternative zu React Native betrachtet wird und ermöglicht, Anwendungen auf der Grundlage einer einzigen Codebasis für die Plattformen iOS, Android, Windows, macOS und Linux zu veröffentlichen sowie Anwendungen für den Betrieb in Browsern zu erstellen. Flutter bildet die Grundlage für die Benutzeroberfläche des Microkernel-Betriebssystems Fuchsia, das bei Google entwickelt wird.

Der Großteil des Flutter-Codes ist in der Programmiersprache Dart implementiert, während die Laufzeit-Engine für die Ausführung von Anwendungen in C++ geschrieben ist. Neben der primären Sprache Dart kann beim Entwickeln von Anwendungen auch das Dart Foreign Function Interface verwendet werden, um Code in C/C++ aufzurufen. Die hohe Ausführungsleistung wird durch die Kompilierung der Anwendungen in Maschinencode für die Zielplattformen erreicht. Das Programm muss dabei nach jeder Änderung nicht neu kompiliert werden – Dart bietet einen Hot Reload-Modus, der es ermöglicht, Änderungen am laufenden Programm vorzunehmen und sofort zu sehen, wie sich das Ergebnis auswirkt.

Die wichtigsten Änderungen in Flutter 2.5:

  • Es wurden erhebliche Leistungsoptimierungen vorgenommen. Auf den Plattformen iOS und macOS wurde eine Vorabkompilierung der Shader für die grafische API Metal implementiert. Die Effizienz der Verarbeitung asynchroner Ereignisse wurde gesteigert. Ein Problem mit Verzögerungen beim Freigeben von Speicher durch den Garbage Collector für nicht genutzte Bilder wurde gelöst (zum Beispiel wurde die Anzahl der Garbage Collection-Vorgänge während der Wiedergabe eines 20-sekündigen animierten GIFs von 400 auf 4 reduziert). Die Verzögerungen bei der Nachrichtenübertragung zwischen Dart und Objective-C/Swift (iOS) oder Java/Kotlin (Android) wurden um bis zu 50 % reduziert. Die Unterstützung für die native Kompilierung auf Apple Silicon-basierten Systemen wurde hinzugefügt.
    Die Sprache Dart 2.14 und das Framework Flutter 2.5 sind verfügbar
  • Für die Android-Plattform wurde die Unterstützung für den Vollbildmodus von Anwendungen eingerichtet. Die Umsetzung des Designkonzepts "Material You", das als Variante des Material Design der nächsten Generation präsentiert wird, wurde fortgesetzt. Ein neuer Zustand MaterialState.scrolledUnder wurde hinzugefügt, die dynamische Anzeige von Bildlaufleisten bei Größenänderungen wurde implementiert und eine neue Schnittstelle zur Anzeige von Benachrichtigungsbannern wurde vorgeschlagen.
  • Die Funktionen des Kameraplugins wurden erheblich erweitert, das nun Funktionen zur Steuerung des Autofokus, der Belichtung, des Blitzes, der Zoomfunktion, der Rauschunterdrückung und der Auflösung bietet.
  • Die Entwicklerwerkzeuge (DevTools) wurden verbessert, in denen ein aktualisierter Widget-Inspektionsmodus hinzugefügt wurde sowie Werkzeuge zur Erkennung von Verzögerungen während des Renderns und zur Überwachung der Shader-Kompilierung bereitgestellt wurden.
    Die Sprache Dart 2.14 und das Framework Flutter 2.5 sind verfügbar
  • Die Plugins für Visual Studio Code und IntelliJ/Android Studio wurden verbessert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4