Proposta: Efeitos Essenciais para C

2025-01-20

Esta proposta sugere aprimorar o sistema de tipos principal da linguagem C com um sistema de tipo e efeito, exigindo que funções e blocos declarem os efeitos de sua avaliação. Isso melhora a composição de metaprogramação e simplifica a definição de restrições no estilo MISRA. O sistema rastreia e verifica efeitos, mas não lida com o tratamento de efeitos dinâmicos. Três grupos principais de efeitos são propostos: Locais (por exemplo, gravação local), Persistentes (por exemplo, gravação não local) e Controle (por exemplo, transferência de controle não local). A verificação estática de efeitos é alcançada atribuindo tipo e efeito a cada instrução, expressão e corpo de função, descartando efeitos locais para garantir a ordenação correta. Boas práticas são sugeridas, como limitar a magnitude dos efeitos `mut` e `vol` e especificar verificações de efeitos para operadores e estruturas de controle. O objetivo é melhorar a segurança, legibilidade e composição da linguagem C, especialmente para metaprogramação e gerenciamento de recursos.

Desenvolvimento sistema de tipos