Les versions 2.14 du langage Dart et 2.5 du framework Flutter sont disponibles.

La société Google a publié la version 2.14 du langage de programmation Dart, poursuivant le développement d'une branche profondément remaniée de Dart 2, qui se distingue de la version d'origine du langage Dart par l'utilisation d'une forte typage statique (les types peuvent être inférés automatiquement, donc la déclaration explicite des types n'est pas obligatoire, mais le typage dynamique n'est plus utilisé et le type initialement calculé est fixé à la variable, appliquant ensuite une vérification de type stricte).

Caractéristiques du langage Dart :

  • Une syntaxe familière et facile à apprendre, naturelle pour les programmeurs en JavaScript, C et Java.
  • Assurance d'un démarrage rapide et d'une haute performance pour tous les navigateurs web modernes et différents types d'environnements, allant des appareils portables aux puissants. serveurs.
  • Possibilité de définir des classes et des interfaces, permettant l'encapsulation et la réutilisation des méthodes et données existantes.
  • La spécification des types facilite le débogage et l'identification des erreurs, rend le code plus clair et lisible, simplifiant sa révision et son analyse par des développeurs tiers.
  • Parmi les types pris en charge : différentes sortes de hachages, tableaux et listes, files d'attente, types numériques et de chaînes, types pour définir des dates et heures, expressions régulières (RegExp). Il est possible de créer ses propres types.
  • Pour organiser l'exécution parallèle, il est conseillé d'utiliser des classes avec l'attribut isolate, dont le code s'exécute entièrement dans un espace isolé en mémoire séparée, interagissant avec le processus principal par l'envoi de messages.
  • Prise en charge de l'utilisation de bibliothèques qui facilitent la maintenance et le débogage de grands projets web. Les implémentations tierces des fonctions peuvent être intégrées sous forme de bibliothèques partagées. Les applications peuvent être découpées en morceaux et le développement de chaque partie peut être confié à une équipe distincte de programmeurs.
  • Un ensemble d'outils prêts à l'emploi pour soutenir le développement en langage Dart, incluant la mise en œuvre d'outils de développement dynamique et de débogage avec correction de code à la volée (« edit-and-continue »).
  • Pour simplifier le développement en langage Dart, un SDK est fourni, avec un gestionnaire de paquets pub, un analyseur statique de code dart_analyzer, un ensemble de bibliothèques, un environnement de développement intégré DartPad et des plugins avec support 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 dépôt pub, qui compte plus de 20 000 paquets.

Les principales modifications de la version Dart 2.14 :

  • Un nouvel opérateur de décalage triple (>>>) a été ajouté, qui, contrairement à l'opérateur « >> », effectue un décalage logique et non arithmétique, fonctionnant sans considérer le bit de signe (le décalage s'effectue sans distinction entre les nombres positifs et négatifs).
  • La restriction sur les arguments de type, qui empêchait l'utilisation de types génériques de fonctions comme arguments de type, a été levée. Par exemple, il est maintenant possible d'indiquer : late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
  • Il est désormais permis d'indiquer des arguments avec des types dans des annotations telles que @Deprecated. Par exemple, il est désormais possible d'indiquer : @TypeHelper(42, "Le sens")
  • La bibliothèque standard (core) a été enrichie de méthodes statiques hash, hashAll et hashAllUnordered dans la classe Object. Dans la classe DateTime, la gestion de l'heure locale a été améliorée lors de la conversion entre heure d'été et heure d'hiver qui n'est pas un multiple d'une heure (par exemple, en Australie, un décalage de 30 minutes est utilisé). Le package ffi a ajouté le support du mécanisme d'allocation de mémoire arena, libérant automatiquement les ressources. Le package ffigen a ajouté la possibilité de générer des définitions typedef des types Dart depuis le langage C.
  • 250 des paquets les plus populaires du dépôt pub.dev et 94 % des top-1000 ont été traduits pour utiliser le mode de sécurité des valeurs « Null » (sécurité des null), qui permet d'éviter les plantages causés par des tentatives d'utilisation de variables dont la valeur n'est pas définie et qui est définie sur « Null ». Ce mode stipule que les variables ne peuvent pas avoir de valeurs indéfinies, sauf si une valeur null leur est explicitement assignée. Ce mode prend strictement en compte les types de variables, permettant au compilateur d'appliquer des optimisations supplémentaires. La conformité des types est vérifiée au moment de la compilation, par exemple, en cas de tentative d'assignation d'une valeur « Null » à une variable de type qui ne permet pas d'état indéfini, comme « int », une erreur sera générée.
  • Des ensembles de règles unifiées ont été proposés pour l'analyseur de code (linter), assurant un support simultané pour le respect des recommandations de style de code pour Dart et le framework Flutter. Pour des raisons historiques, les règles de formatage de code pour Flutter et Dart différaient ; de plus, pour Dart, deux ensembles de règles étaient en usage – celui de Google, très strict, et celui de la communauté des développeurs Dart. Dans Dart 2.14, un nouvel ensemble commun de règles pour linter a été introduit, qui est désormais appliqué par défaut dans les nouveaux projets Dart et dans le SDK Flutter. L'ensemble comprend les règles de base (package lints/core.yaml), des règles supplémentaires recommandées (lints/recommended.yaml) et des recommandations spécifiques à Flutter (flutter_lints/flutter.yaml). Les utilisateurs des règles strictes sont invités à adopter le nouveau style de codage basé sur les recommandations de la documentation Dart.
  • Des optimisations ont été apportées au formatage des blocs de code en cascade dans le formatter, permettant d'améliorer considérablement la performance du formatage et d'éviter toute ambiguïté dans l'appartenance des éléments de l'expression. Par exemple, l'appel « ..doIt » dans l'expression « var result = errorState ? foo : bad..doIt() » concerne non pas la partie conditionnelle du bloc « bad », mais l'ensemble de l'expression, c'est pourquoi au formatage, cela se divise désormais : var result = errorState ? foo : bad ..doIt();
  • Le SDK a été mis à jour pour prendre en charge les processeurs Apple M1 (Silicon), permettant à la fois l'exécution de la Dart VM, des utilitaires et des composants du SDK sur des systèmes avec processeurs Apple Silicon, ainsi que la compilation de fichiers exécutables pour ces puces.
  • La commande « dart pub » prend désormais en charge un nouveau fichier de service appelé « .pubignore », permettant de définir une liste de fichiers à ignorer lors de la publication d'un paquet sur le dépôt pub.dev. Les paramètres spécifiés ne se chevauchent pas avec la liste d'ignorance « .gitignore » (dans certaines situations, il est nécessaire de ne pas transmettre des fichiers nécessaires à Git, comme des scripts internes utilisés lors du développement).
  • Des travaux ont été réalisés pour améliorer les performances de la commande « dart test », qui ne nécessite plus la recompilation des tests après la modification du pubspec, à condition que le numéro de version n'ait pas changé.
  • La prise en charge de la compilation en mode de compatibilité avec ECMAScript 5 a été arrêtée (ce changement entraînera une perte de compatibilité avec le navigateur IE11).
  • Les utilitaires 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 des extensions natives VM a été déclaré obsolète. Il est recommandé d'utiliser la nouvelle interface Dart FFI (Foreign Function Interface) pour appeler du code natif depuis du code Dart.

Un lancement majeur du framework de construction d'interfaces utilisateur Flutter 2.5 a également été présenté, considéré comme une alternative à React Native et permettant de publier des applications pour les plateformes iOS, Android, Windows, macOS et Linux à partir d'une seule base de code, ainsi que de créer des applications à exécuter dans des navigateurs. Flutter a servi de base à l'interface utilisateur du système d'exploitation micro-noyau Fuchsia en développement chez Google.

La majeure partie du code Flutter est écrite en Dart, tandis que le moteur d'exécution pour exécuter les applications est développé en C++. Lors du développement d'applications, en plus du langage Dart natif de Flutter, il est possible d'utiliser l'interface Dart Foreign Function pour appeler du code en C/C++. Une haute performance d'exécution est atteinte grâce à la compilation des applications en code machine pour les plateformes cibles. De plus, le programme n'a pas besoin d'être recompilé après chaque modification — Dart propose un mode de rechargement à chaud, permettant d'apporter des modifications à une application en cours d'exécution et d'évaluer immédiatement les résultats.

Les principales modifications dans Flutter 2.5 :

  • Des optimisations de performance significatives ont été apportées. Sur les plateformes iOS et macOS, une précompilation des shaders pour l'API graphique Metal a été réalisée. L'efficacité du traitement des événements asynchrones a été améliorée. Un problème de latences lors de la libération de mémoire par le ramasse-miettes de mémoire non utilisée a été résolu (par exemple, lors de la lecture d'un GIF animé de 20 secondes, le nombre d'opérations de ramasse-miettes a été réduit de 400 à 4). Les latences lors de l'envoi de messages entre Dart et Objective-C/Swift (iOS) ou Java/Kotlin (Android) ont été réduites de 50 %. La prise en charge des compilations natives pour les systèmes basés sur la puce Apple Silicon a été ajoutée.
    Les versions 2.14 du langage Dart et 2.5 du framework Flutter sont disponibles.
  • La plateforme Android prend en charge l'exécution des applications en mode plein écran. La mise en œuvre du concept de design « Material You », présenté comme une version de la conception Material Design de nouvelle génération, a été poursuivie. Un nouvel état MaterialState.scrolledUnder a été ajouté, offrant un affichage dynamique des barres de défilement lors du redimensionnement, et une nouvelle interface pour afficher les bannières de notifications a été proposée.
  • Les fonctionnalités du plugin pour les caméras ont été considérablement élargies, incluant des outils pour contrôler l'autofocus, l'exposition, le flash, le zoom, la réduction du bruit et la résolution.
  • Les outils pour développeurs (DevTools) ont été améliorés, introduisant un mode d'inspection des widgets mis à jour, ainsi que des outils pour détecter les retards de rendu et suivre la compilation des shaders.
    Les versions 2.14 du langage Dart et 2.5 du framework Flutter sont disponibles.
  • Les plugins pour Visual Studio Code et IntelliJ/Android Studio ont été améliorés.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster