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.
Metadata
Release files for xqvm-py 0.4.3
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.3.tar.gz | 94.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xqvm_py-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 153.1 kB
Release files / xqvm_py-0.4.3.tar.gz
| Download URL | xqvm_py-0.4.3.tar.gz |
|---|---|
| Size | 94.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
837eb40d5f30ad2fa498da0a35806f10cd689a0dc555b5d420d1b699a1176706
|
|
BLAKE2b-256 checksum How to use checksums |
5e19df14cafeebf2d99b18de6b6cd086fe071b264d2016901c28e281ab34d605
|
| 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.3-py3-none-any.whl
| Download URL | xqvm_py-0.4.3-py3-none-any.whl |
|---|---|
| Size | 58.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e9d7797d81c56f3c0c1c4204a0d05e63a77686a112b5b2ec683cf889233a1c98
|
|
BLAKE2b-256 checksum How to use checksums |
094367ae6c23ee5f78a840dca310d500fb109f9ece5026d599e721b230847d20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|