Skip to content
EN

Cópia estática

Copiado de docs/decisions/adp-001.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob 804467a8a0ebf1f1c6f59ac0bad7395c2357a7b0. 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-001 — Tipos Core e Bytes como Valores ​

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

Contexto ​

A linguagem Aipo necessitava de uma estratégia clara para tratamento de streams de dados binários brutos, fatiamento de coleções (slicing) e operações com limites delimitados (clamp).


Decisões Tomadas ​

  1. Bytes como Tipo de Primeira Classe:

    • Bytes é representado como um vetor contíguo de bytes de 8 bits sem sinal na VM, com semântica de valor e contagem de referências.
    • Fornece operações de leitura e escrita tipadas com endianness explícito (read_u16_le, write_u32_be).
  2. Fatiamento Tolerante (Tolerant Slicing):

    • O operador de fatiamento (colecao[inicio..fim]) ajusta silenciosamente limites que ultrapassam o tamanho da coleção para o limite máximo real, evitando pânicos desnecessários em operações seguras de leitura.
  3. Inversão de Limites no clamp:

    • Chamadas de clamp(val, min, max) onde min > max disparam uma falha explícita de domínio em vez de produzir valores corrompidos.