Cópia estática
Copiado de docs/architecture/host-abi.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob ffcf3fb6eab4bdb27e2bcd7db462e35b4643a9cd. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.
A Host ABI (aipo-host) define a interface de isolamento e segurança entre os scripts em Aipo e o ambiente que hospeda o runtime (seja um jogo, uma aplicação de backend ou um agente inteligente).
Por padrão, um script em Aipo roda em um ambiente completamente isolado:
env).fs).clock).Para que um recurso seja acessível, a aplicação anfitriã em Rust deve registrar uma permissão explícita na árvore de capacidades (CapabilitySet):
// Exemplo no anfitrião em Rust: concedendo apenas relógio e leitura em diretório restrito
let mut caps = CapabilitySet::new();
caps.grant("clock");
caps.grant("fs.read");Se o script tentar acessar uma função sem a permissão correspondente, o runtime dispara a falha determinística AIPO_RT_CAPABILITY_DENIED.
Para objetos complexos do host (como janelas de UI, entidades de jogo ou conexões com banco de dados), o Aipo utiliza a tabela de handles geracionais (HandleTable):
AIPO_RT_STALE_HANDLE, eliminando ponteiros soltos e corrupção de memória.