Google a renforcé la sécurité null (null safety) du langage Dart qui permet aux développeurs d’éviter certains de bogues qui peuvent être difficiles à repérer. « Sound null safety signifie que Dart garantit à 100% que les variables non nulles ne peuvent pas être nulles ».

Désormais en preview, « la sécurité nulle de Dart améliore également les performances », comme l’ont déclaré les membres de l'équipe Dart. Cette fonctionnalité représente l’ajout le plus important au langage depuis le lancement de Dart 2, en août 2018. La sécurité nulle est disponible à l'essai dans une version de DartPad, et devrait être disponible en version de production d'ici la fin de l’année.

Dart est un langage à sécurité de type, ce qui signifie que le compilateur peut garantir le type d'une variable. Mais la sécurité de type ne garantit pas en soi qu'une variable n’est pas nulle. Les erreurs nulles sont courantes. Elles sont à l’origine de nombreux problèmes dans le code de Dart et à de nombreuses tentatives de correction de ces problèmes. La sécurité de type null permet aux développeurs de raisonner sur le code avec plus de confiance, sans avoir à se soucier des erreurs de déréférencement de type null en cours d'exécution. Au contraire, les développeurs reçoivent des erreurs statiques au moment du codage.

La force de la sécurité null permet aux programmes Dart d'être plus rapides et plus légers. Dart analyse le code, détermine qu'une variable est non nulle et s'assure qu'elle est toujours non nulle. Le compilateur JiT (Just-in-Time) peut produire un code plus léger et plus rapide parce qu'il n'a pas besoin d'ajouter des contrôles de nullité quand il sait qu'une variable n'est pas nulle.

L'équipe Dart s'efforce de rendre la sécurité « null » aussi facile à utiliser que possible. De plus, la sécurité « null » est rétrocompatible et n’introduit pas de rupture. La fonctionnalité restera optionnelle, si bien que les développeurs pourront l'adopter dès qu'ils seront prêts. Les bibliothèques principales de Dart ont été déplacées pour utiliser la sécurité « null ».

La « sound null safety » de Dart répond aux principes suivants :

- Non-nullable par défaut : les développeurs doivent explicitement noter qu'une variable peut être nulle, ou elle sera considérée comme non nulle. La non-nullité est courante dans les API.

- Adoptable de façon progressive : des outils seront fournis pour faciliter la migration.

- Entièrement solide : les projets profiteront de cette sécurité null renforcée après migration.