Proposition : Effets essentiels pour C
Cette proposition suggère d’améliorer le système de types principal de C avec un système de type et d’effet, exigeant que les fonctions et les blocs déclarent les effets de leur évaluation. Cela améliore la composition de la métaprogrammation et simplifie la définition des restrictions de type MISRA. Le système suit et vérifie les effets, mais ne gère pas le traitement des effets dynamiques. Trois groupes principaux d’effets sont proposés : locaux (par exemple, écriture locale), persistants (par exemple, écriture non locale) et contrôle (par exemple, transfert de contrôle non local). La vérification statique des effets est obtenue en attribuant un type et un effet à chaque instruction, expression et corps de fonction, en rejetant les effets locaux pour garantir un ordre correct. De bonnes pratiques sont suggérées, telles que la limitation de l’ampleur des effets `mut` et `vol` et la spécification de vérifications d’effets pour les opérateurs et les structures de contrôle. L’objectif est d’améliorer la sécurité, la lisibilité et la composition de C, en particulier pour la métaprogrammation et la gestion des ressources.