RFC 025 - Interoperabilidade da Camada 9 (Opaque Handles & Zero-Copy)
Status: Rascunho Aprovado (Visão v2+) Pilar: S5 (Interoperabilidade Multilinguagem)
1. Resumo
A visão para a v2+ do PAEBIRU estabelece uma fronteira de interoperabilidade ultra-eficiente via FFI (Foreign Function Interface). Para suportar as 13 linguagens do ecossistema sem sacrificar a performance termodinâmica, o protocolo adota Opaque Handles e Zero-Copy, mantendo o estado cognitivo da Camada 9 (LSTP/CSTP) sob gestão exclusiva do Kernel Rust.
2. Motivação
Serialização pesada (JSON, Protobuf) entre o Core e o SDK em transações de alta frequência gera latência e desperdício de energia. Além disso, expor estruturas de memória complexas do Rust diretamente a linguagens com Garbage Collection (como Python ou Java) aumenta o risco de vazamentos e corrupção de estado. O uso de Opaque Handles isola a complexidade e maximiza a vazão cognitiva.
3. Especificação Técnica
3.1. Zero-Copy Cognitivo
A deliberação do agente (BDI) reside na memória do Kernel. O SDK não copia strings ou grafos inteiros para o heap da linguagem hospedeira.
3.2. Opaque Handles (Ponteiros Cegos)
As funções exportadas via C-ABI retornam apenas handles (ponteiros de memória não tipados):
#![allow(unused)]
fn main() {
// Exemplo conceitual em Rust (FFI)
#[no_mangle]
pub extern "C" fn paebiru_l9_get_consciousness_handle() -> *mut Layer9State;
}
3.3. Consultas Cirúrgicas
A interpretação do estado ocorre via chamadas de função específicas que operam sobre o handle:
// Exemplo conceitual no SDK (C-compatible)
bool is_aligned = paebiru_l9_check_alignment(handle);
double temperature = paebiru_l9_get_temperature(handle);
4. Impacto Arquitetural Futuro (v2)
- Bindings: Mapeamento de todas as funções da Camada 9 para a interface C-ABI no diretório
crates/bindings/. - SDK: Implementação do wrapper orientado a objetos que gerencia o ciclo de vida (instanciação e drop) dos handles.
- Python: Atualização do
PYTHON_ASYNC_PATTERNS.mdpara lidar com a concorrência entre o loop do Ator Rust e oasyncioutilizando zero-copy.