Skip to main content

PyO3 FFI bindings exposing the XQuad Rust runtime (xqvm + xqasm) to Python

Project description

xqffi — PyO3 FFI bindings for the XQuad Rust runtime

The Python extension that exposes the Rust xqvm interpreter and xqasm assembler. Ships as a manylinux wheel 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.

xqffi.asm — assembly

parse_xqasm(str) → wire dict; assemble_source(str) → raw bytes; disassemble(bytes) → human-readable listing; instruction_count(bytes) → instruction count.

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 (dwave-samplers).
  • xquad — umbrella meta-package with the interactive API.
  • docs/python-api-walkthrough.md — full tour.

License

AGPL-3.0-or-later.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

xqffi-0.3.0rc1-cp313-cp313-manylinux_2_34_x86_64.whl (445.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

File details

Details for the file xqffi-0.3.0rc1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for xqffi-0.3.0rc1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0f514e7d5458cae532d6ad9dc96186b03361ce394d9dd51ccdaa27853dc74397
MD5 668d3b625a5df2adab67e29b13b6f156
BLAKE2b-256 cc02f804ca7e219e314a2ab66b993cd36251c7675a2a16ca50fbd73b3d8fde61

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