README.md

September 20, 2026 · View on GitHub

Important

Este repositório foi arquivado. O motor de análise passou a fazer parte do PawnPro-Core, onde o desenvolvimento continua — é de lá que saem o código, as releases e a documentação, e é lá que vão issues e pull requests.

O histórico e as releases publicadas aqui ficam de pé, para referência.

PawnPro Engine

CI Release Rust LSP Clippy Security Audit OpenSSF Scorecard Stars License

Windows x64 Linux x64 · arm64 macOS x64 · arm64

Motor de análise para a linguagem Pawn (SA-MP / open.mp) — um servidor LSP escrito em Rust, que dá à extensão PawnPro o IntelliSense e os diagnósticos.

O que é

pawnpro-engine é o núcleo de análise do PawnPro. Roda como processo separado e conversa com o editor pelo Language Server Protocol sobre stdin/stdout — o mesmo protocolo do rust-analyzer e do clangd.

Estar fora do processo do editor é o que permite analisar um gamemode inteiro, com todos os seus includes transitivos, sem travar a digitação. Não é realce por expressão regular: o código é tokenizado e analisado de verdade, e é daí que vêm a resolução de símbolos entre arquivos, a contagem de referências e os diagnósticos com posição exata.

A extensão inicia o motor automaticamente quando encontra o binário; ele acompanha a instalação e não exige Rust nem nada instalado à parte.

Capacidades

  • Diagnósticos — 19 códigos PP#### cobrindo erros de estrutura, código morto, símbolos não declarados, depreciação, indentação, nomenclatura e #pragma malformado; 13 deles com correção automática (ver docs/diagnostics.md).
  • Completions — símbolos de todos os includes transitivos com snippets de parâmetros; itens depreciados marcados.
  • Hover — assinatura e comentário de documentação formatado (Javadoc @param e XMLdoc <summary>, o formato do omp-stdlib); em #include mostra o caminho resolvido.
  • Signature Help — parâmetro ativo destacado ao digitar ( e ,.
  • CodeLens — contagem de referências para todas as funções; clicável.
  • ReferencestextDocument/references (Shift+F12).
  • Semantic Tokens — coloração semântica com suporte a chamadas multiline.
  • Formatação — documento inteiro e seleção de intervalo.
  • Assistente de nomenclatura — convenções de caixa por categoria, com padrão próprio por expressão regular para o que os estilos prontos não descrevem.
  • Code actions — correção automática para 13 dos diagnósticos.
  • Invalidação granular — ao salvar um include, o motor republica automaticamente os diagnósticos de todos os arquivos abertos que dependem dele, transitivamente.

Para detalhes do protocolo e das opções de configuração, consulte docs/lsp.md.

Plataformas

PlataformaArtefato
Linux x64pawnpro-engine-linux-x64
Linux arm64pawnpro-engine-linux-arm64
Windows x64pawnpro-engine-win32-x64.exe
macOS x64pawnpro-engine-darwin-x64
macOS arm64pawnpro-engine-darwin-arm64

Os binários são compilados com LTO, strip e panic = abort — sem dependências externas em runtime.

Desenvolvimento

Pré-requisitos: Rust stable (rustup install stable)

git clone https://github.com/NullSablex/PawnPro-Engine
cd pawnpro-engine
cargo build          # debug
cargo build --release
cargo test
cargo fmt --all --check
# Exatamente o que o CI roda — sem as flags, um lint pedantic ou um aviso
# num teste passa aqui e reprova lá.
cargo clippy --all-targets -- -W clippy::pedantic -D warnings

O binário de debug é detectado automaticamente pela extensão PawnPro se estiver em ../pawnpro-engine/target/debug/ ou ../pawnpro-engine/target/release/.

Licença

PawnPro Engine License v1.0 — Source-Available (não Open Source).
Uso pessoal e comercial permitido ✅ · Redistribuição e venda proibidas ❌ · Detalhes: LICENSE.md