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 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.

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 Distribution

xqffi-0.3.1.tar.gz (151.2 kB view details)

Uploaded Source

Built Distributions

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

xqffi-0.3.1-cp313-abi3-manylinux_2_34_x86_64.whl (440.2 kB view details)

Uploaded CPython 3.13+manylinux: glibc 2.34+ x86-64

xqffi-0.3.1-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (429.7 kB view details)

Uploaded CPython 3.13+manylinux: glibc 2.17+ ARM64

File details

Details for the file xqffi-0.3.1.tar.gz.

File metadata

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

File hashes

Hashes for xqffi-0.3.1.tar.gz
Algorithm Hash digest
SHA256 55b348be84585cc2fe1876c7bf9d2473d6508f537807e9de0158e601ef2e88ad
MD5 2a56c9d3f2e98981193c47bd4a64196f
BLAKE2b-256 fa2bc692aa3327ff55fe514860cd2c622b15d3e5be6cbe5eeddab10eb5f26c8c

See more details on using hashes here.

File details

Details for the file xqffi-0.3.1-cp313-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for xqffi-0.3.1-cp313-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e5ca6ff59dda3c7926ce6095d189d95def4e6fdfc8539924bc2d7757701cc8a3
MD5 92500a3d4b482b85f3833612b3bc3ebd
BLAKE2b-256 616d66373ca3a68dd6f3ff3ec15482e0a8311cb197f661358dbd5356497b26e3

See more details on using hashes here.

File details

Details for the file xqffi-0.3.1-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xqffi-0.3.1-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24472be4b16f8e8c5f400b89699ef0c73868444d99b4e46a3f5b7ab5804c3c55
MD5 a2e313f5994c922b1a44c14179505f75
BLAKE2b-256 c5e5ac398d24f7f1c0c1358e094004c42c7b251133fac4c11dedc332efe1a72c

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