xqvm_py
Status -- transitional.
xqvm_pyis the executable conformance oracle for the XQuad toolchain: every vector underconformance/must produce identical observable state on both this Python reference and the Rustxqvmproduction runtime. The arrangement is explicitly transitional. Once the Rust runtime is fully battle-tested,xqvm_pymay 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 onxqvm_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
xqasmcrate is the only implementation, exposed to Python viaxqffi.asm(pyo3). Tests and the CLI shim callxqvm_py.program_from_xqasmto turn.xqasmtext into an executableProgram.
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.
Release files for xqvm-py 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xqvm_py-0.4.0.tar.gz | 94.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xqvm_py-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 153.1 kB
Release files / xqvm_py-0.4.0.tar.gz
| Download URL | xqvm_py-0.4.0.tar.gz |
|---|---|
| Size | 94.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58dba9bb525b1fa8f954540f6d6f5027daec3839966eccf668df097459c7f6f3
|
|
BLAKE2b-256 checksum How to use checksums |
80eb8a59f7191839539cd60a065f2dc8e03cd1c0fded1273eced0072d5e4e8b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / xqvm_py-0.4.0-py3-none-any.whl
| Download URL | xqvm_py-0.4.0-py3-none-any.whl |
|---|---|
| Size | 58.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f9b829f0d37897ff827677c87a4910883afb79be7f75426a72fe98b16942e070
|
|
BLAKE2b-256 checksum How to use checksums |
70287042540adbfac20fed266575e4e997576231a373cfb7a59d835129fd2bf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|