Cópia estática
Copiado de docs/adp/ADP-010-interoperability-thin-proofs.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob 2f13de9a9dfd3addc2a17c36c983340b3fdb8fa0. 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/adp/ADP-009-synchronous-c-abi.mdAuthority: subordinate ao canon; define o critério de interoperabilidade da primeira release da linguagem.
A aipo v0.1.0 não promete portar bibliotecas completas. Ela entrega uma prova pequena, real e testável para cada fronteira:
A escolha da biblioteca considera API clara, licença compatível, manutenção, ownership e testabilidade. Popularidade e tamanho não são critérios suficientes.
Cada proof deve demonstrar:
A prova deve ser pequena o suficiente para revelar problemas de boundary e grande o suficiente para usar uma biblioteca real.
O proof Rust deve passar pelo caminho de host API, não por uma extensão específica da linguagem. Uma integração GUI pode usar egui como prova, mas a release não exige um wrapper completo nem um editor.
O proof C deve usar a ABI de docs/adp/ADP-009-synchronous-c-abi.md. A biblioteca deve ter create/use/release ou uma forma equivalente de ciclo de vida. Não basta chamar uma função sem erro ou ownership.
O proof JavaScript deve usar uma bridge nomeada e limitada. O runtime não deve implicitamente expor window, globalThis, módulos Node ou eval. A escolha entre browser e Node é uma decisão do perfil, não uma identidade da linguagem.
fetch, workers ou WebAssembly.eval.A release pode declarar a interoperabilidade concluída quando os três proofs possuem testes, docs, ownership, capabilities, erros e exemplos executáveis. A implementação de bibliotecas adicionais continua em goals separados.