Propuesta: Efectos Esenciales para C
Esta propuesta sugiere mejorar el sistema de tipos principal de C con un sistema de tipo y efecto, requiriendo que las funciones y bloques declaren los efectos de su evaluación. Esto mejora la composición de metaprogramación y simplifica la definición de restricciones al estilo MISRA. El sistema rastrea y verifica efectos, pero no maneja el tratamiento de efectos dinámicos. Se proponen tres grupos principales de efectos: Locales (por ejemplo, escritura local), Persistentes (por ejemplo, escritura no local) y Control (por ejemplo, transferencia de control no local). La verificación estática de efectos se logra asignando tipo y efecto a cada instrucción, expresión y cuerpo de función, descartando los efectos locales para garantizar el orden correcto. Se sugieren buenas prácticas, como limitar la magnitud de los efectos `mut` y `vol` y especificar verificaciones de efectos para operadores y estructuras de control. El objetivo es mejorar la seguridad, legibilidad y composición de C, especialmente para metaprogramación y gestión de recursos.