Dart 2.14-Sprache und Flutter 2.5-Framework verfügbar

Google hat die Veröffentlichung der Programmiersprache Dart 2.14 veröffentlicht, die die Entwicklung eines radikal neu gestalteten Dart 2-Zweigs fortsetzt, der sich von der Originalversion der Dart-Sprache durch die Verwendung starker statischer Typisierung unterscheidet (Typen können automatisch abgeleitet werden, also spezifizieren). (Typen sind nicht erforderlich, aber die dynamische Typisierung wird nicht mehr verwendet und bei der anfänglichen Berechnung wird der Typ der Variablen zugewiesen und anschließend wird eine strenge Typprüfung angewendet.)

Merkmale der Dart-Sprache:

  • Vertraute und leicht zu erlernende Syntax, selbstverständlich für JavaScript-, C- und Java-Programmierer.
  • Gewährleistung eines schnellen Starts und hoher Leistung für alle modernen Webbrowser und verschiedene Arten von Umgebungen, von tragbaren Geräten bis hin zu leistungsstarken Servern.
  • Die Möglichkeit, Klassen und Schnittstellen zu definieren, die die Kapselung und Wiederverwendung vorhandener Methoden und Daten ermöglichen.
  • Die Angabe von Typen erleichtert das Debuggen und Identifizieren von Fehlern, macht den Code klarer und lesbarer und vereinfacht seine Änderung und Analyse durch Drittentwickler.
  • Zu den unterstützten Typen gehören: verschiedene Arten von Hashes, Arrays und Listen, Warteschlangen, numerische und String-Typen, Typen zur Bestimmung von Datum und Uhrzeit, reguläre Ausdrücke (RegExp). Es ist möglich, eigene Typen zu erstellen.
  • Um die parallele Ausführung zu organisieren, wird vorgeschlagen, Klassen mit dem Attribut „isolate“ zu verwenden, deren Code vollständig in einem isolierten Raum in einem separaten Speicherbereich ausgeführt wird und mit dem Hauptprozess durch das Senden von Nachrichten interagiert.
  • Unterstützung für die Verwendung von Bibliotheken, die die Unterstützung und das Debuggen großer Webprojekte vereinfachen. Implementierungen von Funktionen von Drittanbietern können in Form von gemeinsam genutzten Bibliotheken eingebunden werden. Anwendungen können in Teile unterteilt werden und die Entwicklung jedes Teils einem separaten Programmiererteam anvertrauen.
  • Eine Reihe vorgefertigter Tools zur Unterstützung der Entwicklung in der Dart-Sprache, einschließlich der Implementierung dynamischer Entwicklungs- und Debugging-Tools mit Codekorrektur im laufenden Betrieb („Bearbeiten und Fortfahren“).
  • Um die Entwicklung in der Dart-Sprache zu vereinfachen, werden ein SDK, ein Paketmanager-Pub, ein statischer Code-Analysator dart_analyzer, eine Reihe von Bibliotheken, eine integrierte Entwicklungsumgebung DartPad und Dart-fähige Plugins für IntelliJ IDEA, WebStorm, Emacs und Sublime Text mitgeliefert 2 und Vim.
  • Zusätzliche Pakete mit Bibliotheken und Dienstprogrammen werden über das Pub-Repository verteilt, das mehr als 20 Pakete enthält.

Wichtige Änderungen in der Dart-Version 2.14:

  • Es wurde ein neuer dreifacher Verschiebungsoperator (>>>) hinzugefügt, der im Gegensatz zum „>>“-Operator keine arithmetische, sondern eine logische Verschiebung durchführt, die ohne Berücksichtigung des Vorzeichenbits funktioniert (die Verschiebung erfolgt ohne Division). positive und negative Zahlen).
  • Die Einschränkung für Typargumente, die verhinderte, dass generische Funktionstypen als Typargument verwendet werden konnten, wurde entfernt. Jetzt können Sie beispielsweise Folgendes angeben: späte Liste (T)>idFunctions; var Rückruf = [ (T-Wert) => Wert]; späte S-Funktion (T)>(S) f;
  • Erlauben Sie die Angabe von Argumenten mit Typen in Annotationen wie @Deprecated. Sie können jetzt beispielsweise Folgendes angeben: @TypeHelper (42, „Die Bedeutung“)
  • Die statischen Methoden hash, hashAll und hashAllUnordered wurden zur Standardbibliothek (Core) in der Object-Klasse hinzugefügt. Die DateTime-Klasse hat die Handhabung der Ortszeit beim Umrechnen von Uhren zwischen Sommer- und Winterzeit verbessert, die nicht durch eine Stunde teilbar sind (in Australien wird beispielsweise ein Offset von 30 Minuten verwendet). Das FFI-Paket bietet Unterstützung für den Arena-Speicherzuweisungsmechanismus, der automatisch Ressourcen freigibt. Das ffigen-Paket hat die Möglichkeit hinzugefügt, Typedef-Definitionen von Dart-Typen aus der C-Sprache zu generieren.
  • Die 250 beliebtesten Pakete aus dem pub.dev-Repository und 94 % der Top-1000 wurden auf die Verwendung des „Null-Sicherheits“-Modus umgestellt, wodurch Abstürze vermieden werden, die durch Versuche verursacht werden, Variablen zu verwenden, deren Wert undefiniert und auf „Null“ gesetzt ist ” „ Der Modus impliziert, dass Variablen keine Nullwerte haben können, es sei denn, ihnen wird explizit der Wert Null zugewiesen. Der Modus respektiert strikt Variablentypen, wodurch der Compiler zusätzliche Optimierungen anwenden kann. Die Typkonformität wird zur Kompilierzeit überprüft. Wenn Sie beispielsweise versuchen, den Wert „Null“ einer Variablen mit einem Typ zuzuweisen, der keinen undefinierten Zustand impliziert, wie z. B. „int“, wird ein Fehler angezeigt.
  • Es werden einheitliche Regelsätze für den Codeanalysator (Linter) vorgeschlagen, die gleichzeitig die Überprüfung der Einhaltung von Codestilrichtlinien für Dart und das Flutter-Framework unterstützen. Aus historischen Gründen waren die Codierungsregeln für Flutter und Dart unterschiedlich, außerdem waren für Dart zwei Regelsätze im Einsatz – pedantische von Google und Regeln der Dart-Entwickler-Community. Dart 2.14 führt einen neuen gemeinsamen Regelsatz für Linter ein, der standardmäßig in neuen Dart-Projekten und im Flutter SDK verwendet werden soll. Der Satz umfasst Kernregeln (Paket lints/core.yaml), empfohlene zusätzliche Regeln (lints/recommended.yaml) und Flutter-spezifische Empfehlungen (flutter_lints/flutter.yaml). Benutzern pedantischer Regeln wird empfohlen, basierend auf den Empfehlungen aus der Dart-Dokumentation auf einen neuen Codierungsstil umzusteigen.
  • Im Formatter wurden Optimierungen an der Formatierung kaskadierender Codeblöcke vorgenommen, wodurch die Formatierungsleistung erheblich verbessert und eine mehrdeutige Interpretation des Besitzes von Ausdruckselementen vermieden werden kann. Wenn Sie beispielsweise „..doIt“ im Ausdruck „var result = errorState?“ aufrufen. foo : bad..doIt()“ betrifft nicht den bedingten Teil des „bad“-Blocks, sondern den gesamten Ausdruck, daher wird er bei der Formatierung jetzt getrennt: var result = errorState ? foo : bad ..doIt();
  • Dem SDK wurde Unterstützung für Apple M1 (Silicon)-Prozessoren hinzugefügt. Dies bedeutet sowohl die Möglichkeit, Dart VM, Dienstprogramme und SDK-Komponenten auf Systemen mit einem Apple Silicon-Prozessor auszuführen, als auch Unterstützung für das Kompilieren ausführbarer Dateien für diese Chips.
  • Der Befehl „dart pub“ hat Unterstützung für eine neue Dienstdatei „.pubignore“ hinzugefügt, mit der Sie eine Liste von Dateien definieren können, die beim Veröffentlichen eines Pakets im pub.dev-Repository übersprungen werden. Diese Einstellungen wirken sich nicht auf die Ignorierliste „.gitignore“ aus (in manchen Situationen möchte pub.dev möglicherweise die Übertragung von Dateien vermeiden, die in Git benötigt werden, beispielsweise interne Skripte, die während der Entwicklung verwendet werden).
  • Es wurde daran gearbeitet, die Leistung des Befehls „dart test“ zu verbessern, der jetzt keine Neukompilierung von Tests nach einer Änderung der Pubspec erfordert, wenn sich die Versionsnummer nicht geändert hat.
  • Die Unterstützung für die Kompilierung im ECMAScript 5-Kompatibilitätsmodus wurde eingestellt (die Änderung führt zum Verlust der Kompatibilität mit dem IE11-Browser).
  • Die einzelnen Dienstprogramme stagehand, dartfmt und dart2native wurden für veraltet erklärt und durch integrierte Befehle ersetzt, die über das dart-Dienstprogramm aufgerufen werden.
  • Der VM Native Extensions-Mechanismus ist veraltet. Um nativen Code aus Dart-Code aufzurufen, wird empfohlen, das neue Dart FFI (Foreign Function Interface) zu verwenden.

Gleichzeitig wurde ein bedeutendes Release des User-Interface-Frameworks Flutter 2.5 vorgestellt, das als Alternative zu React Native gilt und es auf Basis einer Codebasis ermöglicht, Anwendungen für iOS, Android, Windows, macOS und Linux zu veröffentlichen Plattformen sowie die Erstellung von Anwendungen zur Ausführung in Browsern. Eine benutzerdefinierte Shell für das von Google entwickelte Mikrokernel-Betriebssystem Fuchsia basiert auf Flutter.

Der Hauptteil des Flutter-Codes ist in der Dart-Sprache implementiert und die Laufzeit-Engine zum Ausführen von Anwendungen ist in C++ geschrieben. Bei der Entwicklung von Anwendungen können Sie zusätzlich zur nativen Dart-Sprache von Flutter die Dart-Fremdfunktionsschnittstelle verwenden, um C/C++-Code aufzurufen. Durch die Kompilierung von Anwendungen in nativen Code für Zielplattformen wird eine hohe Ausführungsleistung erreicht. In diesem Fall muss das Programm nicht nach jeder Änderung neu kompiliert werden – Dart bietet einen Hot-Reload-Modus, der es Ihnen ermöglicht, Änderungen an einer laufenden Anwendung vorzunehmen und das Ergebnis sofort auszuwerten.

Wichtige Änderungen in Flutter 2.5:

  • Erhebliche Leistungsoptimierungen vorgenommen. Auf den iOS- und macOS-Plattformen wurde eine Vorkompilierung von Shadern für die Metal-Grafik-API implementiert. Verbesserte Effizienz bei der Verarbeitung asynchroner Ereignisse. Es wurde ein Problem mit Verzögerungen behoben, wenn der Garbage Collector Speicher von ungenutzten Bildern zurückfordert (während der Wiedergabe eines 20 Sekunden langen animierten GIF wurde beispielsweise die Anzahl der Garbage Collection-Vorgänge von 400 auf 4 reduziert). Verzögerungen beim Übertragen von Nachrichten zwischen Dart und Objective- C/Swift wurde auf 50 % (iOS) bzw. Java/Kotlin (Android) reduziert. Native Build-Unterstützung für Systeme hinzugefügt, die auf dem Apple Silicon-Chip basieren.
    Dart 2.14-Sprache und Flutter 2.5-Framework verfügbar
  • Für die Android-Plattform wurde die Unterstützung für die Ausführung von Anwendungen im Vollbildmodus eingeführt. Die Umsetzung des Designkonzepts „Material You“, das als Materialdesign-Option der nächsten Generation vorgestellt wird, wurde fortgesetzt. Ein neuer Status „MaterialState.scrolledUnder“ wurde hinzugefügt, die dynamische Anzeige von Bildlaufleisten bei der Größenänderung implementiert und eine neue Schnittstelle für die Anzeige von Benachrichtigungsbannern vorgeschlagen.
  • Die Funktionen des Kamera-Plug-Ins wurden erheblich erweitert und um Tools zur Steuerung von Autofokus, Belichtung, Blitz, Zoom, Rauschunterdrückung und Auflösung erweitert.
  • Die Entwicklertools (DevTools) wurden verbessert und umfassen einen aktualisierten Widget-Inspektionsmodus sowie Tools zum Identifizieren von Rendering-Verzögerungen und zum Verfolgen der Shader-Kompilierung.
    Dart 2.14-Sprache und Flutter 2.5-Framework verfügbar
  • Verbesserte Plugins für Visual Studio Code und IntelliJ/Android Studio.

Source: opennet.ru

Kommentar hinzufügen