Dart 2.12 est sorti, avec sécurité nulle et interopérabilité C

Google a publié Dart 2.12, une nouvelle version du langage utilisé pour créer des applications dans Flutter. La version accompagne Flutter 2.0.

Avec le sortie de Flutter 2.0, Google rend également Dart 2.12 stable. Au cas où vous ne le sauriez pas, Dart est le langage utilisé par Flutter. Il s'agit d'un langage basé sur TypeScript, mais il comporte quelques ajouts de fonctionnalités, y compris ceux que je suis sur le point de passer en revue.

Sécurité nulle

La sécurité nulle est une fonctionnalité linguistique très intéressante. Cela vous oblige à déterminer si une variable sera un jour nulle et à traiter explicitement les situations nulles potentielles, tout en vous permettant également de garantir que des variables spécifiques ne seront jamais nulles.

Dans Dart 2.12, la sécurité nulle est désormais entièrement prise en charge, avec une syntaxe similaire à Swift et Kotlin. Il existe même un casting intelligent, où si Dart sait avec certitude qu'une variable normalement nullable ne peut pas être nulle, il la convertira implicitement sous une forme non nullable.

Étant donné que la sécurité nulle est un changement (très) radical, cette fonctionnalité est facultative. Si vous mettez à jour vers Dart 2.12, votre compilation ne sera pas interrompue et vous n'aurez pas à passer des heures à ajouter des indices de nullité à tout. Vous pouvez même utiliser des dépendances NULL-Safe si votre projet n'est pas encore NULL-Safe.

Une fois que vous décidez de migrer, vous pouvez utiliser l'outil de migration intégré (fléchette migrer) et/ou le guide de migration pour que tout soit mis en place.

De plus, bien que la sécurité nulle soit incluse dans Dart 2.12, si vous créez un nouveau projet Flutter, la sécurité nulle ne sera pas activée par défaut. Vous devrez l'activer manuellement. Les nouveaux projets Dart auront la sécurité nulle activée.

Interface de fonction étrangère

Même si Dart (et Flutter) se concentrent sur la compatibilité multiplateforme totale, certaines choses doivent encore être faites de manière native. Pour faciliter les opérations natives, Dart dispose d'une interface de fonctions étrangères, ou FFI. Le FFI vous permet d'interagir avec le code C de Dart sans avoir à recourir à d'étranges appels d'API basés sur des chaînes ou à d'autres méthodes d'interopérabilité maladroites.

Et avec Dart 2.12, le FFI est désormais stable, ce qui signifie qu'il est prêt à être utilisé dans des projets de production et qu'il est pour l'essentiel complet.

Dans cet esprit, il y a quelques changements dans le FFI, y compris quelques changements majeurs.

Cette version s'est principalement concentrée sur la façon dont les structures peuvent être utilisées avec Dart et C. D'une part, vous pouvez désormais transmettre des structures dans votre code C par référence et valeur, là où auparavant seules les références étaient prises en charge. Une autre fonctionnalité importante est la prise en charge des structures imbriquées, qui n'étaient pas présentes avant cette version.

Passons maintenant aux changements radicaux. Si vous utilisiez le FFI, vous devrez peut-être mettre à jour votre code pour fonctionner avec la version 2.12. Avec cette version de FFI, vous ne pouvez plus créer de structures vides. Si vous en avez besoin pour une raison quelconque, vous pouvez utiliser le nouveau type "Opaque". Il y a également quelques changements dans le fonctionnement de certaines fonctions intégrées de FFI, que vous pouvez lire ici.

Enfin, il existe un nouveau package pour FFI qui vous permet de générer des wrappers FFI à partir de fichiers d'en-tête C existants, appelé ffigen. Si vous devez utiliser beaucoup de code C, avec de nombreuses méthodes API, cela sera très utile. Même si la quantité de code C dont vous disposez est petite, il s’agit d’une fonctionnalité pratique et intéressante.


Et c'est à peu près tout pour Dart 2.12. Avec l'ajout d'une sécurité nulle et d'une bibliothèque d'interopérabilité C stable, Dart se transforme en un langage très riche en fonctionnalités. Faites-nous savoir ce que vous pensez de Dart 2.12 dans les commentaires !