Google annonce Dart 3

Par:
fredericmazue

jeu, 11/05/2023 - 13:53

Dans le contexte de Google I/O 2023, Google a annoncé la sortie de Dart 3. Cette nouvelle mouture du langage contient trois avancées majeures. Le langage devient 100% null safety, il est doté de nouvelles fonctionnalités : les enregistrements, les correspondances de motifs (patterns matching) et les modificateurs de classe, et il amène un élargissement de la prise en charge des plates-formes avec du code natif pour le web via la compilation Wasm.

Null Safety

La sécurité null, ou null safety, ou encore void security, évite les problèmes de déréférencement de pointeurs nuls. Google assure : Avec une sécurité nulle à 100% dans Dart, nous avons un système de type sûr. Vous pouvez avoir confiance que si un type indique qu'une valeur n'est pas null, alors elle ne pourra jamais l'être null. Cela évite certaines classes d'erreurs de codage, comme les exceptions de pointeur null. Cela permet également à nos compilateurs et runtimes d'optimiser le code d'une manière qu'il ne pourrait pas sans la sécurité nulle.

Enregistrements, correspondances de motifs et modificateurs de classe

Traditionnellement, une fonction Dart ne pouvait renvoyer qu'une seule valeur. Par conséquent, les fonctions qui devaient renvoyer plusieurs valeurs devaient soit les regrouper dans d'autres types de données tels que des maps ou des listes, soit définir de nouvelles classes pouvant contenir les valeurs. L'utilisation de structures de données non typées affaiblissait la sécurité des types. Avec les enregistrements, vous pouvez créer des données structurées avec une syntaxe agréable et nette, selon les termes de Google. Les enregistrements sont des types valeur et n'ont pas d'identité. 

Les enregistrements simplifient la création de données structurées. Cela ne remplace pas l'utilisation de classes pour construire des hiérarchies de types plus formelles. Cela offre juste une autre option. Dans les deux cas, vous souhaiterez peut-être décomposer ces données structurées en éléments individuels pour les utiliser. C'est là que la correspondance de motifs entre en jeu.

Les motifs brillent lorsqu'ils sont utilisés dans une instruction switch. Dart a eu un support limité pour switch depuis le début. Dans Dart 3, Google a élargi la puissance et l'expressivité de switch en prenant en charge la correspondance de motifs. Voici un exemple de code :

String describeDate(DateTime dt) =>
  switch (dt.weekday) {
      1 => 'Feeling the Monday blues?',
      6 || 7 => 'Enjoy the weekend!',
      _ => 'Hang in there.'
  };

Les instructions if peuvent elles aussi utiliser les correspondances de motifs.

La troisième nouvelle fonctionnalité du langage Dart 3 est les modificateurs de classe. Contrairement aux enregistrements et aux modèles, il s'agit davantage d'une fonctionnalité d'utilisateur expérimenté, précise Google. Cette nouvelle fonctionanlité répond aux besoins des développeurs Dart qui créent de grandes surfaces d'API ou créent des applications de classe entreprise. Les modificateurs de classe permettent aux auteurs d'API de prendre en charge uniquement un ensemble spécifique de fonctionnalités.