Skip to main content

Python reference implementation of the X-Quadratic Virtual Machine (conformance oracle).

Project description

xqvm_py

Status — transitional. xqvm_py is the executable conformance oracle for the XQuad toolchain: every vector under ../conformance/ must produce identical observable state on both this Python reference and the Rust xqvm production runtime. The arrangement is explicitly transitional. Once the Rust runtime is fully battle-tested, xqvm_py may be dropped entirely (with conformance vectors graduating to "Rust must produce exactly these outputs" reference data) or demoted to a prototyping sandbox for trying out new opcodes / VM features in Python before they earn a spec slot. Do not build infrastructure that hard-depends on xqvm_py's existence.

Python reference implementation of the X-Quadratic Virtual Machine. See ../spec/xqvm/SPEC.md for the authoritative technical specification.

Scope

  • Pure-Python executor, state model, opcodes, xqmx (sparse quadratic matrix), vector, and tracer.
  • No assembler or disassembler: the Rust xqasm crate is the only implementation, exposed to Python via xqffi.asm (pyo3). Tests and the CLI shim call xqvm_py.program_from_xqasm to turn .xqasm text into an executable Program.

Layout

xqvm_py/                  <-- this directory IS the package (flat layout)
  __init__.py             re-exports the public surface (Executor, Program, …)
  __main__.py             entry point for `python -m xqvm_py`
  executor.py             fetch-decode-execute loop
  state.py                stack, registers, loop control, jump table
  opcodes.py              Opcode enum + operand metadata
  program.py              Program dataclass + program_from_xqasm()
  xqmx.py                 sparse quadratic matrix (model + sample modes)
  vector.py               typed vec<int> / vec<xqmx>
  errors.py               typed runtime errors
  tracer.py               step-by-step execution tracer
  cli/                    python -m xqvm_py run ...
  tests/                  pytest suite (wheel-excluded)

Quick start

From the xquad workspace root:

uv sync                                       # installs xqvm_py editable + xqffi via maturin
uv run pytest xqvm_py/tests                   # run the full test suite
echo "PUSH 5
PUSH 3
ADD
HALT" > /tmp/prog.xqasm
uv run python -m xqvm_py run /tmp/prog.xqasm  # CLI shim

Programmatic use:

from xqvm_py import Executor, program_from_xqasm

prog = program_from_xqasm("PUSH 10\nPUSH 5\nADD\nSTOW r0\nHALT\n")
executor = Executor()
executor.execute(prog)
print(executor.state.get_register(0))  # 15

Conformance

Behavioural parity with the Rust xqvm crate is enforced by the xquad-conformance Rust test harness at ../conformance/. New VM semantics require a new vector. Divergence between implementations fails CI with no "drift tracking" middle ground.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xqvm_py-0.2.0.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xqvm_py-0.2.0-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file xqvm_py-0.2.0.tar.gz.

File metadata

  • Download URL: xqvm_py-0.2.0.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for xqvm_py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 db12ce9aa269fede1ab5c67683d33ae99ca096e5b1d225a6600ca67a32f52352
MD5 d765ed626747874692bc313083bcff7e
BLAKE2b-256 7781bba6b55bd2065fe79549f7196b403544b7f23f3ffcdd0286b588ee3b6671

See more details on using hashes here.

File details

Details for the file xqvm_py-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: xqvm_py-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for xqvm_py-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2cf04a932709de84a0eeb3fb4e95a1b5a7600a3f823c55e14578c28b372e24ac
MD5 80c441515192f466f3d5640819bf4e23
BLAKE2b-256 cda4f2d8199c1f0feb478cd98abfb378aaddd5a3b60d1681eb357fb0c201a9d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page