Cópia estática
Copiado de docs/adp/ADP-009-synchronous-c-abi.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob 1d84c3933afc266604eb5c151567306871a92854. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.
Status: accepted Date: 2026-09-24 Related: docs/adp/ADP-008-v0.1.0-language-release.md, docs/crates/crate-contracts.md, crates/aipo-host/Authority: subordinate ao canon; define a primeira boundary de embedding, não uma engine.
A aipo v0.1.0 expõe uma ABI C síncrona, single-threaded e versionada. A ABI será implementada em um crate separado, sem expor structs, referências, lifetimes ou panics de Rust.
A API interna aipo-host continua sendo o contrato de dados. A ABI C é o adaptador para linguagens e engines externas.
A primeira versão não cria threads nem expõe Future, callbacks async ou um event loop próprio. A semântica async da linguagem continua interna ao runtime; step e run_until_idle poderão ser adicionados em uma versão futura.
eval entra no perfil sandboxed.Um host C headless deve:
Failure e fault;A prova deve ter fixtures, documentação e teste de ownership. Godot, engines e plugins são consumidores posteriores, não parte deste ADR.
Async será evolução aditiva da ABI, não uma mudança silenciosa da v0. A API futura deverá preservar a execução síncrona e adicionar apenas operações de pump/event loop necessárias ao host.
Send/Sync no VM.eval ou acesso a memória arbitrária.