Skip to content

Pawn (Rust)

A Rust rewrite of the Pawn compiler (CompuPhase) — memory-safe and reentrant (no unsafe, all state in Context/Parser) — producing .amx bytecode that is byte-identical to the reference C compiler.

Status

  • Feature-complete: every bytecode-affecting feature is ported (overlays -V, KeeLoq encryption -k, #pragma align/opcodeset/tabsize/unused/warning/ amxlimit/amxram, #file/#line, loose-indentation warning 217, constant resolution in #if, and the -A/-t/-C/-O/-d flags).
  • Validation: 72 sources × 7 flag profiles = 504/504 byte-identical to the reference C compiler, plus normalized diagnostics.

Pawn language documentation

The Pawn language specification and guides belong to CompuPhase — this site documents the Rust rewrite, not the language manuals. See Reference (Pawn/CompuPhase) for the official links.

Differences from the reference

Differences from the reference compiler records both directions: the defects found in the upstream compiler (a heap corruption when a size limit is exceeded, a hang on a directory given as a source file, diagnostics attributed to the wrong file), saying which ones this port reproduces on purpose to stay byte-identical; and the places where this port diverges on its own, because Rust lacks the construct the C code relies on or because a subsystem is not ported yet.