Gleam.br Wiki

GBR: ADR-0003 Analisador Léxico (Parser) Recursivo de Multiaddr sem Expressões Regulares | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-0003 Analisador Léxico (Parser) Recursivo de Multiaddr sem Expressões Regulares

  • *Status:* Aceito
  • *Data:* [Data Atual]

*Contexto:*

O endereçamento de recursos na malha é baseado na especificação Multiaddr (ex: /ip4/127.0.0.1/tcp/4001/p2p/QmPeer...). Analisar (parsear) estas strings usando Expressões Regulares (Regex) gera picos agressivos no Coletor de Lixo (Garbage Collection) da Erlang VM e custa ciclos computacionais elevados, o que afeta drasticamente instâncias que suportam milhares de conexões em alta frequência (1M req/s).

*Decisão:*

  1. *Recursive Descent Lexer:* Aboliu-se integralmente a engine de Regex. Implementou-se um parser O(N) construído com Tipos de Dados Algébricos (ADT) puros no arquivo multiaddr.gleam.
  2. *Tail-Call Optimization (TCO):* O parser divide o endereço na raiz via função C subjacente (string.split(addr, "/")) e consome os tokens na lista de forma recursiva avançando com Pattern Matching explícito de tuplas. Essa abordagem nativa impede o aumento do quadro de pilhas (Stack Overflow) operando funcionalmente como um GOTO no Assembly.
  3. *Abordagem Fail-Fast:* A qualquer detecção de lixo topológico no endereço (um bloco não mapeado como ip4, tcp, p2p), o Analisador finaliza instantaneamente todo o fluxo de matching devolvendo um objeto Error (Fast Return).

*Consequências:*

  • *Positivas:* Redução monumental do custo algorítmico da decodificação de rotas e mitigação de vulnerabilidades a ReDOS (Regular Expression Denial of Service) - fundamental em topologias Zero-Trust expostas à internet pública.
  • *Negativas/Riscos:* Expansão futura de suporte a novos transportes da especificação Multiaddr (ex: quic, ws, dns4) exigirá atualizações manuais estritas e novos ramos de teste no motor de padrão do código.