Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🔌 WASI-PAEBIRU ABI

A ABI (Application Binary Interface) define o contrato de baixo nível entre o host (nó PAEBIRU) e o guest (módulo WASM/Plasmídeo). Ela estende o padrão WASI para suportar as necessidades específicas de sistemas distribuídos soberanos.


1. Convenções de Memória

  • Linear Memory: O guest e o host compartilham um buffer de memória linear.
  • Opaque Handles: Referências a recursos complexos (canais de rede, instâncias de banco) são passadas como handles inteiros de 32 bits.
  • Zero-Copy: Estruturas grandes são passadas via ponteiro e tamanho, evitando serialização pesada (Dogma 4).

2. Importações de Host (Host Imports)

Funções que o módulo WASM pode invocar:

#![allow(unused)]
fn main() {
// Exemplo de assinatura na Camada 9
extern "C" {
    fn paebiru_send_message(target_ptr: *const u8, msg_ptr: *const u8, msg_len: usize) -> i32;
    fn paebiru_get_causal_tick() -> u64;
    fn paebiru_log_event(level: i32, msg_ptr: *const u8, msg_len: usize);
}
}

3. Exportações de Guest (Guest Exports)

Funções que o nó host invoca no plasmídeo:

  • paebiru_init(): Chamada ao carregar o plasmídeo.
  • paebiru_process_message(sender_id, msg_id): Chamada para reagir a estímulos da malha.
  • paebiru_shutdown(): Chamada antes de descarregar o módulo.

4. Tratamento de Erros

A ABI utiliza códigos de retorno inteiros:

  • 0: Sucesso.
  • < 0: Erros de sistema (ex: -1 = Out of Memory, -2 = Permission Denied).
  • > 0: Erros específicos do domínio do plasmídeo.

5. Veja também