This release is a pre-release and may not be stable for production use.
quip-solver-core
This repository is the shared Quip solver contract. A solver binary accepts Ising problems and returns spin configurations with their energies.
The contract has two bindings. One is a Rust crate workspace. The other is a
Python wheel named quip-solver-core. The wheel carries the consensus primitives
and the generated gRPC stubs, not the session loop, so a Python solver
written today writes its own state machine. A Rust solver conforms today by
supplying a Sampler and calling run.
The full contract is in SPEC.md.
CHANGELOG.md lists the 0.0.0-rc5 changes.
MIGRATING.md covers the move from quip-miner-core.
Crates
| Crate | What it holds |
|---|---|
quip-solver-core |
The Sampler trait, Ising and CSR types, beta ladder, adaptive budget, session loop |
quip-proto |
Generated tonic and prost stubs for proto/quip/v1/miner.proto |
quip-protocol |
Wire codec, energy and diversity scoring, handshake, ChaCha8 draw, nonce derivation |
quip-solver-conformance |
Golden vectors and the scripted session driver |
quip-protocol-py |
PyO3 bindings exposing quip-protocol scoring and wire primitives to Python |
quip-protocol-wasm |
WebAssembly bindings behind the npm package |
quip-solver-c |
C ABI over the session loop, shipped as a release artifact |
Install
Every binding ships from its own registry. The C library ships as a release artifact, because a C consumer wants the compiled object and the header.
Rust
[dependencies]
quip-solver-core = "0.0.0-rc5"
[dev-dependencies]
quip-solver-conformance = "0.0.0-rc5"
One dependency is enough. quip-solver-core re-exports quip_proto and
quip_protocol, so the consensus scorer is at
quip_solver_core::quip_protocol::scoring::energy_milli.
Python
pip install quip-solver-core
JavaScript and TypeScript
npm install @quip.network/quip-solver-core@rc
C and C++
Download quip-solver-clib-<tag>-linux-amd64.tar.gz from the release page. It
holds libquip_solver_c.so, libquip_solver_c.a, and include/quip_solver.h.
Samples
examples/ holds a conformant mock solver in four languages. Rust, C++,
Python, and TypeScript each consume the published artifact and pass
quip-solver-drive. Start there rather than from this README.
Conformance
A solver is conformant when quip-solver-drive reports a conformant session.
cargo build -p quip-solver-conformance --bin quip-solver-drive --release
./target/release/quip-solver-drive <solver-binary> unix:///tmp/quip-check.sock
Exit code 0 means conformant. The driver spawns any executable, so this works for a solver in any language.
Licence
Release files for quip-solver-core 0.0.0rc5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quip_solver_core-0.0.0rc5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
Release files / quip_solver_core-0.0.0rc5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | quip_solver_core-0.0.0rc5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 274.7 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
158bb68f7e42a6ca39ed8ef8b421ef3334bf595f25c2d09962ef956f7e000e07
|
|
BLAKE2b-256 checksum How to use checksums |
e3b32f2551042c25fbf239f8c25a80ec1324ee0051dc3f7a03221dafe932f518
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|