Langage Dart 2.14 et framework Flutter 2.5 disponibles

Google a publié la sortie du langage de programmation Dart 2.14, qui poursuit le développement d'une branche radicalement repensée de Dart 2, qui diffère de la version originale du langage Dart par l'utilisation d'un typage statique fort (les types peuvent être déduits automatiquement, donc la spécification des types n'est pas nécessaire, mais le typage dynamique n'est plus utilisé et le type initialement calculé est attribué à la variable et une vérification de type stricte est ensuite appliquée).

Caractéristiques du langage Dart :

  • Syntaxe familière et facile à apprendre, naturelle pour les programmeurs JavaScript, C et Java.
  • Garantir un lancement rapide et des performances élevées pour tous les navigateurs Web modernes et divers types d'environnements, des appareils portables aux serveurs puissants.
  • La possibilité de définir des classes et des interfaces qui permettent l'encapsulation et la réutilisation de méthodes et de données existantes.
  • La spécification de types facilite le débogage et l'identification des erreurs, rend le code plus clair et plus lisible et simplifie sa modification et son analyse par les développeurs tiers.
  • Les types pris en charge incluent : différents types de hachages, tableaux et listes, files d'attente, types numériques et chaînes, types permettant de déterminer la date et l'heure, expressions régulières (RegExp). Il est possible de créer vos propres types.
  • Pour organiser l'exécution parallèle, il est proposé d'utiliser des classes avec l'attribut isolate, dont le code est exécuté entièrement dans un espace isolé dans une zone mémoire distincte, interagissant avec le processus principal en envoyant des messages.
  • Prise en charge de l'utilisation de bibliothèques qui simplifient la prise en charge et le débogage de grands projets Web. Des implémentations tierces de fonctions peuvent être incluses sous la forme de bibliothèques partagées. Les applications peuvent être divisées en parties et confier le développement de chaque partie à une équipe distincte de programmeurs.
  • Un ensemble d'outils prêts à l'emploi pour prendre en charge le développement dans le langage Dart, y compris la mise en œuvre d'outils de développement et de débogage dynamiques avec correction de code à la volée (« modifier et continuer »).
  • Pour simplifier le développement dans le langage Dart, il est livré avec un SDK, un gestionnaire de packages pub, un analyseur de code statique dart_analyzer, un ensemble de bibliothèques, un environnement de développement intégré DartPad et des plugins compatibles Dart pour IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 et Vim.
  • Des packages supplémentaires contenant des bibliothèques et des utilitaires sont distribués via le référentiel pub, qui contient plus de 20 XNUMX packages.

Changements majeurs dans la version Dart 2.14 :

  • Un nouvel opérateur triple décalage (>>>) a été ajouté qui, contrairement à l'opérateur « >> », effectue non pas un décalage arithmétique, mais un décalage logique qui fonctionne sans tenir compte du bit de signe (le décalage s'effectue sans division en nombres positifs et négatifs).
  • Suppression de la restriction sur les arguments de type qui empêchait l'utilisation des types de fonctions génériques comme argument de type. Par exemple, vous pouvez désormais spécifier : liste tardive (T)>idFonctions ; var rappel = [ (valeur T) => valeur] ; fin S Fonction (T)>(S) f;
  • Autoriser la spécification d'arguments avec des types dans des annotations telles que @Deprecated. Par exemple, vous pouvez désormais spécifier : @TypeHelper (42, "Le sens")
  • Les méthodes statiques hash, hashAll et hashAllUnordered ont été ajoutées à la bibliothèque standard (core) dans la classe Object. La classe DateTime a amélioré la gestion de l'heure locale lors de la conversion d'horloges entre l'heure d'été et l'heure d'hiver qui ne sont pas divisibles par une heure (par exemple, en Australie, un décalage de 30 minutes est utilisé). Le package ffi a ajouté la prise en charge du mécanisme d'allocation de mémoire Arena, qui libère automatiquement les ressources. Le package ffigen a ajouté la possibilité de générer des définitions typedef des types Dart à partir du langage C.
  • Les 250 packages les plus populaires du référentiel pub.dev et 94 % des 1000 XNUMX premiers ont été basculés vers le mode « sécurité nulle », ce qui évitera les plantages causés par les tentatives d'utilisation de variables dont la valeur n'est pas définie et définies sur « Null ». "" Le mode implique que les variables ne peuvent pas avoir de valeurs nulles à moins qu'elles ne reçoivent explicitement la valeur nulle. Le mode respecte strictement les types de variables, ce qui permet au compilateur d'appliquer des optimisations supplémentaires. La conformité du type est vérifiée au moment de la compilation, par exemple, si vous essayez d'attribuer la valeur « Null » à une variable dont le type n'implique pas un état indéfini, tel que « int », une erreur s'affichera.
  • Des ensembles de règles unifiés pour l'analyseur de code (linter) sont proposés, fournissant une prise en charge simultanée pour vérifier la conformité aux directives de style de code pour Dart et le framework Flutter. Pour des raisons historiques, les règles de codage pour Flutter et Dart étaient différentes. De plus, pour Dart, deux ensembles de règles étaient utilisés : les règles pédantes de Google et les règles de la communauté des développeurs Dart. Dart 2.14 introduit un nouvel ensemble commun de règles pour le linter, qui sera utilisé par défaut dans les nouveaux projets Dart et dans le SDK Flutter. L'ensemble comprend des règles de base (paquet Lints/core.yaml), des règles supplémentaires recommandées (lints/recommended.yaml) et des recommandations spécifiques à Flutter (flutter_lints/flutter.yaml). Il est conseillé aux utilisateurs de règles pédantes de passer à l'utilisation d'un nouveau style de codage basé sur les recommandations de la documentation Dart.
  • Dans le formateur, des optimisations ont été apportées au formatage des blocs de code en cascade, ce qui peut améliorer considérablement les performances de formatage et éviter une interprétation ambiguë de la propriété des éléments d'expression. Par exemple, appeler "..doIt" dans l'expression "var result = errorState ? foo : bad..doIt()” ne concerne pas la partie conditionnelle du bloc “bad”, mais l’expression entière, donc au formatage elle est désormais séparée : var result = errorState ? foo : mauvais ..doIt();
  • La prise en charge des processeurs Apple M1 (Silicon) a été ajoutée au SDK, ce qui implique à la fois la possibilité d'exécuter Dart VM, des utilitaires et des composants du SDK sur des systèmes dotés d'un processeur Apple Silicon, ainsi que la prise en charge de la compilation de fichiers exécutables pour ces puces.
  • La commande "dart pub" a ajouté la prise en charge d'un nouveau fichier de service ".pubignore", qui vous permet de définir une liste de fichiers qui seront ignorés lors de la publication d'un package dans le référentiel pub.dev. Ces paramètres n'interfèrent pas avec la liste d'ignorés « .gitignore » (dans certaines situations, pub.dev peut vouloir éviter de transférer les fichiers nécessaires dans Git, par exemple les scripts internes utilisés pendant le développement).
  • Des travaux ont été effectués pour améliorer les performances de la commande « dart test », qui ne nécessite désormais plus de recompiler les tests après avoir modifié pubspec si le numéro de version n'a pas changé.
  • La prise en charge de la compilation en mode de compatibilité ECMAScript 5 a été interrompue (le changement entraînera une perte de compatibilité avec le navigateur IE11).
  • Les utilitaires individuels stagehand, dartfmt et dart2native ont été déclarés obsolètes, remplacés par des commandes intégrées appelées via l'utilitaire dart.
  • Le mécanisme VM Native Extensions est obsolète. Pour appeler du code natif à partir du code Dart, il est recommandé d'utiliser le nouveau Dart FFI (Foreign Function Interface).

Dans le même temps, une version importante du framework d'interface utilisateur Flutter 2.5 a été présentée, qui est considérée comme une alternative à React Native et permet, sur la base d'une seule base de code, de publier des applications pour iOS, Android, Windows, macOS et Linux. plates-formes, ainsi que de créer des applications à exécuter dans les navigateurs. Un shell personnalisé pour le système d'exploitation du micro-noyau Fuchsia développé par Google est construit sur la base de Flutter.

La partie principale du code Flutter est implémentée dans le langage Dart et le moteur d'exécution pour l'exécution des applications est écrit en C++. Lors du développement d'applications, en plus du langage Dart natif de Flutter, vous pouvez utiliser l'interface Dart Foreign Function pour appeler du code C/C++. Des performances d'exécution élevées sont obtenues en compilant les applications en code natif pour les plates-formes cibles. Dans ce cas, le programme n'a pas besoin d'être recompilé après chaque modification - Dart propose un mode de rechargement à chaud qui vous permet d'apporter des modifications à une application en cours d'exécution et d'évaluer immédiatement le résultat.

Changements majeurs dans Flutter 2.5 :

  • Optimisations significatives des performances. Sur les plateformes iOS et macOS, une précompilation de shaders pour l'API graphique Metal a été implémentée. Amélioration de l'efficacité du traitement des événements asynchrones. Résolution d'un problème de retard lorsque le garbage collector récupère la mémoire des images inutilisées (par exemple, lors de la lecture d'un GIF animé de 20 secondes, le nombre d'opérations de garbage collection a été réduit de 400 à 4. Retards lors de la transmission des messages entre Dart et Objective- C/Swift ont été réduits à 50 % (iOS) ou Java/Kotlin (Android). Ajout de la prise en charge native de la construction pour les systèmes basés sur la puce Apple Silicon.
    Langage Dart 2.14 et framework Flutter 2.5 disponibles
  • Pour la plateforme Android, la prise en charge de l'exécution d'applications en mode plein écran a été établie. La mise en œuvre du concept de design « Material You », présenté comme une option de Material Design de nouvelle génération, s'est poursuivie. Ajout d'un nouvel état MaterialState.scrolledUnder, implémentation de l'affichage dynamique des barres de défilement lors du redimensionnement et proposition d'une nouvelle interface pour l'affichage des bannières de notification.
  • Les capacités du plug-in de l'appareil photo ont été considérablement étendues, ajoutant des outils pour contrôler la mise au point automatique, l'exposition, le flash, le zoom, la réduction du bruit et la résolution.
  • Les outils de développement (DevTools) ont été améliorés pour inclure un mode d'inspection des widgets mis à jour, ainsi que des outils permettant d'identifier les retards de rendu et de suivre la compilation des shaders.
    Langage Dart 2.14 et framework Flutter 2.5 disponibles
  • Plugins améliorés pour Visual Studio Code et IntelliJ/Android Studio.

Source: opennet.ru

Ajouter un commentaire