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.3.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.3.0-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for xqvm_py-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1dad7be5aa0ec7beb47b5021b61a0863da5a03b1f9ad83f841526c25071f5e68
MD5 3afe37aa553ca8a3caa07b328f40c060
BLAKE2b-256 195ae4f2887b1ef9525d94216242ef3fa9041a28c6eb916192a30f09e0bdaece

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for xqvm_py-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e20b05422691657114075a5f6232db4ef2f3b744515d19ba6136b54057f46d0e
MD5 2de9e3b4747e20aca66c54ec9c302c20
BLAKE2b-256 56487bbdc93e956f6ac562af67ef8215eb022dd3a61acfb702240113bff0b5d3

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