xqffi -- PyO3 FFI bindings for the XQuad Rust runtime
The Python extension that exposes the Rust xqvm interpreter and xqasm assembler. Ships as abi3 manylinux wheels (x86_64 + aarch64, CPython >= 3.13) plus a universal sdist for other platforms, all built by maturin.
xqffi is a pure FFI shim -- it only re-exposes the Rust types and entry points. User-facing conveniences (Program / Session / RunResult, keyword calldata, trace inspection) live in the xquad umbrella package.
Install
pip install xqffi
Surface
xqffi.vm -- low-level one-shot
What the conformance harness drives. Small wrapper over xqvm::Vm:
from xqffi.vm import Vm
from xqffi.asm import assemble_source
vm = Vm()
vm.set_calldata([40, 2])
vm.set_output_slots(1)
vm.run(assemble_source(src))
assert vm.outputs() == [42]
XqmxModel and XqmxSample are thin getter/setter wrappers around the Rust types for direct model/sample manipulation. They refuse what bytecode could not build: a size over MAX_ALLOCATION_SIZE or a grid that does not fit (ValueError), a sample value outside its domain (ValueError), and a coefficient index outside 0..size, negative included (IndexError).
xqffi.asm -- assembly
parse_xqasm(str) -> wire dict; assemble_source(str) -> raw bytes; disassemble(bytes) -> human-readable listing; instruction_count(bytes) -> instruction count.
xqffi.verifier -- static verification
verify(bytes) and verify_source(str) run the pre-execution verifier: every jump lands on a TARGET, every register is read after it is written, and stack depth balances. Both return None on success and raise ValueError on a rejected program. See Verifier.
Interactive / multi-run API
Use xquad.program for the REPL / notebook / script workflow:
from xquad.program import Program
program = Program.from_source(src)
session = program.session(output_slots=1)
session.set_calldata([40, 2])
result = session.run()
assert dict(result.outputs) == {0: 42}
Program.load(bytes) takes wire-format bytecode; Session.run() returns a RunResult with dict-keyed outputs (unset slots present as None), residual stack, and step count.
Also see
xqvm_py-- pure-Python reference VM (conformance oracle).xqcp-- constraint programming DSL that compiles to.xqasm.xqsa-- solver adapters: CPU/GPU annealers, D-Wave QPU, Quip network.xquad-- umbrella meta-package with the interactive API.- Running Programs -- full tour.
License
AGPL-3.0-or-later.
Metadata
Release files for xqffi 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 | |
|---|---|---|---|
| xqffi-0.4.3.tar.gz | 231.3 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xqffi-0.4.3-cp313-abi3-manylinux_2_34_x86_64.whl | CPython 3.13 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| xqffi-0.4.3-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.13 | abi3 | Linux glibc 2.17+ ARM64 | Details |
Total release size: 1.1 MB
Release files / xqffi-0.4.3.tar.gz
| Download URL | xqffi-0.4.3.tar.gz |
|---|---|
| Size | 231.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c4f87617a066e9ec035df5e164e90ba298b721e5cc302069fa538623c5938f2
|
|
BLAKE2b-256 checksum How to use checksums |
0e42c66e52f2a1f668de8d56782d27581458636cc32d27bb6e5a3a4d6620b2a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / xqffi-0.4.3-cp313-abi3-manylinux_2_34_x86_64.whl
| Download URL | xqffi-0.4.3-cp313-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 447.9 kB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ac33b0f016eaa1fb932a320aa9cbfcad962e825d652eba61f6ddb9c51a5578d3
|
|
BLAKE2b-256 checksum How to use checksums |
6ca06d3417e682b42da5b1522dd2793fb40c50096298f75c22ff7974270552f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / xqffi-0.4.3-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xqffi-0.4.3-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 438.3 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
a55d91cdd4373435077be55ab82a85636de22f2cac8060b94e0edb422692069c
|
|
BLAKE2b-256 checksum How to use checksums |
9d4aea1306ebf239e3161c24ef81d8d820350be973efddc2315c2fc62d3f15dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|