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.1 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.1"
[dev-dependencies]
quip-solver-conformance = "0.0.1"
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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quip_solver_core-0.0.1.tar.gz | 86.2 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.34+ ARM64 | Details |
| quip_solver_core-0.0.1-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 885.6 kB
Release files / quip_solver_core-0.0.1.tar.gz
| Download URL | quip_solver_core-0.0.1.tar.gz |
|---|---|
| Size | 86.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
858b385516db8fe304a9ba7e756c503e8df60c216b928a7d996b6dee14144cfe
|
|
BLAKE2b-256 checksum How to use checksums |
5d30edd9c64e506a4d8e92c6d265bb2377a5bdd8575ab32af602f8219c03b66b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_x86_64.whl
| Download URL | quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 276.0 kB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
11d15c47d56fc845106153c47b72f4c94249ab77798f22a2fd6ad35826692729
|
|
BLAKE2b-256 checksum How to use checksums |
0f76a83354438313eb9c9b48b8caab24a75f54c13e00b341dd8c04024556156a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_aarch64.whl
| Download URL | quip_solver_core-0.0.1-cp311-abi3-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 273.3 kB |
| Tags | CPython 3.11 Linux glibc 2.34+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ea22a1b47fad812c39c375eb802c25ae638ab255ee037f1e79e0e052a1cddef0
|
|
BLAKE2b-256 checksum How to use checksums |
94697622d172c5ce172aac2662f808b0ad20e95c7288ae9362d74160d4b1e901
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / quip_solver_core-0.0.1-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | quip_solver_core-0.0.1-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 250.1 kB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8f5818c9a9f653d47caa1bcf4102ef6b72b8edf1718dedcc123dc1ae4a37cbf6
|
|
BLAKE2b-256 checksum How to use checksums |
420baebd7ff7e426ea19028afbbec613d351dff7ab93a578b576a7c437de037c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|