Skip to content
EN

Cópia estática

Copiado de docs/decisions/adp-002.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob 1597313bf6c28e436d01634b1e2ea81163292a2e. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.

ADP-002 — Hooks de Construção e Contratos em Runtime ​

  • Status: Aprovado & Implementado
  • Decisores: Poppy Team
  • Fase: Wave 1 (P00-G13 / P00-G14)

Contexto ​

A linguagem precisava de um mecanismo unificado e de baixo custo cognitivo para validar os estados internos das estruturas de dados sem obrigar os desenvolvedores a criar construtores prolixos e getters/setters artificiais.


Decisões Tomadas ​

  1. Hook init():

    • Executado imediatamente após a atribuição dos campos na construção da estrutura.
    • Usado para validações iniciais, normalizações e rejeição de estados malformados com fail.
  2. Invariantes invariant():

    • Declaradas no corpo da struct.
    • Avaliadas na criação e em todas as mutações estáveis de campos.
    • Falhas no predicado disparam rejeição imediata da alteração.
  3. Rollback Transacional em attempt:

    • Quando mutações ocorrem dentro de um bloco attempt, a VM mantém um journal de reversão.
    • Qualquer falha restaura o estado pré-bloco, garantindo consistência atômica.