Skip to content

Releases: nzy1997/rust-qec

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 18 Sep 06:28

What's Changed

  • Fix release verification marker label length by @nzy1997 in #731
  • release: prepare rustqec-cli 0.3.2 by @nzy1997 in #729
  • Reconcile Envelope support publication in v0.3.3 by @nzy1997 in #732

Full Changelog: v0.3.2...v0.3.3

v0.3.2 (historical; verification inconsistent)

Choose a tag to compare

@github-actions github-actions released this 18 Sep 02:53

What's Changed

  • docs: streamline homepage and documentation navigation by @nzy1997 in #726
  • fix: harden v0.3.1 publication evidence by @nzy1997 in #728
  • Define and enforce the scoped Envelope MLE candidate domain by @nzy1997 in #727
  • Publish scoped Envelope MLE support in v0.3.2 by @nzy1997 in #730

Full Changelog: v0.3.1...v0.3.2

v0.3.1 — staged, verification pending

Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Sep 04:54

Publication status — verification pending

This GitHub release was staged before the publication hardening merged in
PR #728. Its retained archives
and evidence remain available for audit, but they do not include the final
verification marker required by the current publication contract and therefore
must not be treated as proof of a Supported envelope-matching release.

The documentation site intentionally keeps envelope matching at Beta until
the release assets pass the hardened verifier and a digest-bound verification
marker is uploaded last. rustqec-cli 0.3.1 has not been published to
crates.io. Follow the remaining publication work in
#720.

What's Changed

  • docs: publish v0.3.0 install paths by @nzy1997 in #705
  • docs: make Cargo the default install path by @nzy1997 in #706
  • docs: complete onboarding, search, and reading usability by @nzy1997 in #707
  • docs: unify site layout, onboarding, and section search by @nzy1997 in #708
  • Add the approved 01C RustQEC logo by @nzy1997 in #709
  • docs: unify copper branding and refine the homepage workflow by @nzy1997 in #710
  • docs: add atom-loss evidence and version-aware navigation by @nzy1997 in #712
  • docs: streamline atom-loss guidance by @nzy1997 in #717
  • Envelope decoder release readiness: support matrix, correctness, resources, installed-artifact gate (#713-#716) by @nzy1997 in #718
  • Publish version-bound envelope support evidence with native releases by @nzy1997 in #724
  • Stage the v0.3.1 source-side release candidate by @nzy1997 in #725
  • Harden publication evidence and fail the site closed until verification by @nzy1997 in #728

Full Changelog: v0.3.0...v0.3.1

RustQEC v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 15:34

RustQEC v0.3.0

The first crates.io release publishes eight packages at 0.3.0 from commit
c5b23bf02a10724b0b377214c76c26605f23b390. Historical v0.2.1 tags and releases
remain available; the historical 0.2.1 crates are not being uploaded.

Package versions

Package Version crates.io batch
qec-ilp-core 0.3.0 First
qec-code 0.3.0 First
rstim 0.3.0 First
rmatching 0.3.0 First
rustqec-cli 0.3.0 First
rsinter 0.3.0 First
rbposd 0.3.0 First
rilpqec 0.3.0 First

rustqec-cli installs the rustqec executable, whose own version is 0.3.0.
These eight packages share the 0.3 series, with independent patch releases
allowed after the initial 0.3.0 publication. The four private workspace packages
retain their own versions and remain unpublished. See the
package guide for the publication graph and verification steps.

Migrating from the v0.2.1 source APIs

The 0.3.0 library line makes optional capabilities explicit. Default simulator
and matching consumers can use:

[dependencies]
rand = "0.8"
rstim = "0.3.0"
rmatching = "0.3.0"

Enable only the features used by your application:

Previous use 0.3.0 configuration
Import rstim::cli or build the rstim binary rstim feature cli
Generate CSS circuits through rstim rstim feature codegen-css
Use the browser shot viewer rstim feature shot-viewer
Import qec_code::cli or build the qec-code binary qec-code feature cli
Compute exact code distance with HiGHS qec-code feature distance-ilp-highs
Compute exact code distance with Gurobi qec-code feature distance-ilp-gurobi
Call a qec-ilp-core solver adapter highs or gurobi feature

Reusable simulator operations are available through rstim::operations, with
compatibility reexports under rstim::cli when that feature is enabled. Solver
model types and validation need no solver feature. Requests without a usable
enabled backend return an explicit backend-unavailable error. HiGHS needs native
C/C++ build tools, CMake, and Clang/libclang; Gurobi requires its installation and
runtime/license configuration. On qec-ilp-core and qec-code, choosing Gurobi does not enable HiGHS.
rilpqec always includes HiGHS; its Gurobi feature is additive. Actual Gurobi
runtime and license validation were not performed for this release.

The viewer is disabled by default and does not require CLI parsing. Its files
remain in the downloaded crate archive so users can opt in later; they are only
embedded in the compiled library when shot-viewer is enabled. The bundled WASM
is rebuilt with 0.3.0 so exported shot provenance reports the matching simulator
version.

Installing the commands

Install the primary application from crates.io:

cargo install --locked rustqec-cli --version 0.3.0

It includes envelope matching and CSS generation, with no browser viewer or
HiGHS dependency. Add --features ilp for exact envelope MLE.

For the complete Stim-style compatibility command:

cargo install --locked rstim --version 0.3.0 --bin rstim --features cli,codegen-css,shot-viewer

A smaller compatibility CLI can enable only cli. Installing a dependency library does
not install its executables. Official native archives include ILP in rustqec and CLI, CSS generation,
and the full shot viewer in rstim; use rustqec capabilities --format json to inspect the actual binary.

Repository benchmark and research users

rmatching no longer has a bench feature or bundled benchmark executables.
Build them from a repository checkout using the private tools package:

cargo build --release -p rmatching-bench-tools --bin rmatching_microbench

rstim benchmark workers use its separate benchmark-tools feature. rsinter
defaults to its core harness; select rbposd-runner, rmatching-runner,
ilp-runner, or plotting, or use full for the complete research environment.
make test enables the standard workspace test feature set explicitly.

Support scope

Rust 1.88 remains the MSRV. Tested native environments are Ubuntu 24.04 x86_64
and macOS 15 Apple silicon. This is a pre-1.0 release: registry publication
does not expand the numerical acceptance evidence or imply universal decoder
support. Envelope decoding remains beta. Matching requires graphlike DEM
components, error probabilities 0 <= p < 1, and at most 64 observables.
See the support contract for the
supported inputs and limitations; numerical acceptance work continues separately.

Added decoder packages

rbposd, rilpqec, and rsinter now join the first batch. Their archives ship
self-contained tests and examples. Repository benchmark catalog checks run
separately in CI. rbposd documents probability bounds, LSD orders 0/1, OSD
search variants, and low-level matrix preconditions.

rilpqec rejects impossible deterministic syndromes instead of returning a
success-looking prediction. Batch-size overflow and output allocation failures
return explicit errors through both direct and compiled APIs. Its README shows
reusing the compiled decoder, packed-byte layout, and solver prerequisites.

Install the recommended replay CLI with
cargo install --locked rsinter --version 0.3.0 --features rbposd-runner,rmatching-runner.
Add plotting or ilp-runner as needed; the slim defaults remain unchanged.

Native downloads

Release verification

All eight published archives were downloaded and checked against registry checksums and the frozen source commit. Their docs.rs builds succeeded. Isolated crates.io consumers passed the deterministic 128/128 example, default CLI quickstart, BP/MWPM/HiGHS replay, plotting, CSS generation, and embedded viewer checks. These are fixture-based acceptance checks within the support scope above.

The release gate and native archive workflow passed, including both platforms' clean-runtime checks.

RustQEC v0.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 05:48

RustQEC v0.2.1 freezes the current workspace for reproducible use and ongoing numerical acceptance. This is a GitHub source release; prebuilt native packages are tracked in #682.

Changes since v0.2.0

  • Add the unified rustqec CLI with capability discovery, structured errors, circuit/dataset pipelines, and batched decoding.
  • Add native Mid-SWAP atom-loss circuit generation, loss-visible/blinded datasets, per-shot traces, and reference/conditioned Envelope-Matching and Envelope-MLE decoders.
  • Correct Envelope-MLE to use the full canonical detector constraints while retaining active-envelope-only models, bounded work/caches, and discriminating regression fixtures (#677, #680).
  • Add interactive Shot Lab workflows, including local-file WebAssembly processing, plus replay and expanded benchmark provenance tooling.
  • Fix simulator/DEM and dataset correctness issues, including tableau Pauli phase handling, independent parallel DEM edges, and multi-observable export.

Version identity and compatibility

The repository release is v0.2.1. Following the existing release convention, rstim, rsinter, rbposd, and rmatching are versioned 0.2.1; other workspace packages retain their independent manifest versions. Use the Git tag or full commit to pin the complete workspace.

Although this repository release uses a patch tag, changes accumulated since v0.2.0 include Rust API changes. Direct users of MidSwapConfig must replace pauli_probability with the four explicit Pauli-noise fields and set before_round_data_loss_probability (normally 0.0); see #674. Consult the current capability output and input contracts when upgrading CLI automation.

Validation and current limits

All six CI jobs passed on the tagged commit cfc935fc13e73469f413a08e08d0c19ecad0e42a, including locked workspace tests, coverage, performance and evidence checks: CI run.

The release includes the canonical-detector MLE regression fix; large-scale numerical acceptance is still in progress. This tag does not certify new LER or universal performance claims. Native atom-loss decoding supports the documented circuit subset and rejects unsupported circuits/resource growth explicitly.

The publication evidence bundle remains partial. Its CI consistency check passing is distinct from publication_ready=true; the remaining campaign is tracked in #601. Installation, platform support, compatibility guidance, and release enforcement follow-ups are tracked separately in #681–#688.

Use the frozen source

git clone --branch v0.2.1 --depth 1 https://github.com/nzy1997/rust-qec.git
cd rust-qec
cargo build --locked --workspace
cargo run --locked -p rustqec-cli --bin rustqec -- capabilities --format json

The workspace's native dependencies still apply; see the repository setup and module documentation.

Full changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 08:12

What's Changed

  • Add mixed-noise QP101 showcase generation by @nzy1997 in #32
  • docs: publish qp101 schema site by @nzy1997 in #34
  • Build performance parity foundation by @nzy1997 in #35
  • Harden perf evidence gate by @nzy1997 in #36
  • feat: add ILP DEM decoder backends and rsinter integration by @nzy1997 in #37
  • Refine surface decoder benchmark defaults by @nzy1997 in #39
  • Fix rbposd OSD residual application and parity harness semantics by @nzy1997 in #40
  • Speed up rbposd core decode path by @nzy1997 in #41
  • Speed up rmatching bit-packed rsinter decode path by @nzy1997 in #42
  • rmatching: phase 2 ordered negative-weight preprocessing by @nzy1997 in #43
  • Add qec-code Steane v1 crate by @nzy1997 in #44
  • Add rsinter surface benchmark framework by @nzy1997 in #45
  • [codex] add qec-code core logical basis APIs by @nzy1997 in #50
  • [codex] add general CSS memory codegen by @nzy1997 in #51
  • [codex] Expose rsinter decoder params by @nzy1997 in #52
  • [codex] Add rsinter wall-clock budget stopping rule by @nzy1997 in #53
  • Add built-in CSS registry with raw Hx/Hz access by @nzy1997 in #63
  • [codex] Complete rsinter failure taxonomy by @nzy1997 in #62
  • qec-code: export built-in CSS checks as sparse_rows JSON by @nzy1997 in #64
  • [codex] add qec-code CSS matrix export CLI by @nzy1997 in #67
  • [codex] Fix rsinter memory-z parity path by @nzy1997 in #74
  • Add shared ILP core and ILP-backed qec-code distance solving by @nzy1997 in #66
  • [codex] add built-in CSS code spec parser by @nzy1997 in #75
  • [codex] Overlay issue 65 memory-Z comparison by @nzy1997 in #77
  • [codex] add built-in CSS repetition families by @nzy1997 in #78
  • [codex] Add built-in bb72 CSS checks by @nzy1997 in #81
  • [codex] Add randomized CSS distance upper bounds by @nzy1997 in #79
  • Add rotated surface built-in CSS family by @nzy1997 in #83
  • [codex] Add built-in CSS fixture manifest by @nzy1997 in #84
  • [codex] Add qec-code CSS list command by @nzy1997 in #85
  • [codex] Add built-in toric CSS family by @nzy1997 in #87
  • [codex] Export rotated-surface CSS fixtures through CLI by @nzy1997 in #86
  • [codex] add exact css distance backend by @nzy1997 in #104
  • [codex] Support explicit CSS logical observables by @nzy1997 in #105
  • [codex] Add rbposd BpLsdDecoder public API by @nzy1997 in #106
  • Add BB72 BP+OSD rsinter benchmark path by @nzy1997 in #107
  • [codex] Implement rbposd LSD order-one solve path by @nzy1997 in #108
  • [codex] Complete issue 90 BpLsd fixture coverage by @nzy1997 in #109
  • [codex] Add typed rbposd LSD runner params by @nzy1997 in #111
  • [codex] Pin toric CSS CLI fixtures by @nzy1997 in #112
  • [codex] Add rbposd LSD DEM adapter for rsinter by @nzy1997 in #113
  • Record rbposd LSD benchmark params and deterministic tests by @nzy1997 in #114
  • [codex] Extend rbposd BP config selectors by @nzy1997 in #116
  • [codex] Implement rbposd product_sum serial BP execution by @nzy1997 in #117
  • [codex] Parse rbposd BP method and schedule params in rsinter by @nzy1997 in #118
  • [codex] Add rbposd BP teeth and harness coverage by @nzy1997 in #119
  • Add rbposd LSD and BP benchmark spec coverage by @nzy1997 in #120
  • Create shared rbposd fixture catalog by @nzy1997 in #121
  • Reconcile rbposd benchmark evidence docs by @nzy1997 in #122
  • Reproduce BB144 circuit-level BP-OSD memory simulation by @nzy1997 in #115
  • Record BB144 circuit-level BP-OSD reproduction evidence by @nzy1997 in #125
  • Add typed bivariate-bicycle CSS constructor by @nzy1997 in #131
  • Parse bivariate-bicycle built-in CSS specs by @nzy1997 in #144
  • Route fixed bb72 through the generic bivariate-bicycle constructor by @nzy1997 in #147
  • Add APM Table A1 reference fixture manifest by @nzy1997 in #148
  • Document the APM-CSS construction contract by @nzy1997 in #150
  • Wire bivariate-bicycle CSS specs through export by @nzy1997 in #149
  • Add BB144 qec-code CLI regression coverage by @nzy1997 in #152
  • Generate P=96 APM sparse fixtures by @nzy1997 in #151
  • Implement affine permutation arithmetic over Z_P by @nzy1997 in #153
  • Implement APM commutation checks by @nzy1997 in #154
  • Implement Delta and Gamma active-row sets for APM-CSS by @nzy1997 in #155
  • Build APM-CSS sparse supports from affine blocks by @nzy1997 in #156
  • Add APM sparse matrix verifier by @nzy1997 in #157
  • [codex] Register APM Kasai P=96 built-in CSS spec by @nzy1997 in #158
  • Add APM P=96 rsinter CSS fixtures by @nzy1997 in #159
  • Add APM Kasai P=192 CSS registry coverage by @nzy1997 in #160
  • Track APM searcher integration roadmap by @nzy1997 in #162
  • Switch coverage CI to cargo llvm-cov by @nzy1997 in #163
  • Run APM P=96 rbposd BP smoke by @nzy1997 in #161
  • Gate perf CI behind master push or run-perf label by @nzy1997 in #164
  • Track APM decoder hierarchy roadmap by @nzy1997 in #176
  • Add QP101 SVG renderer fixture catalog by @nzy1997 in #187
  • Implement minimal QP101 SVG renderer by @nzy1997 in #190
  • Add rstim render_svg CLI command by @nzy1997 in #191
  • Document the quantum Tanner construction contract by @nzy1997 in #192
  • Render QP101 SVG measurement anchors by @nzy1997 in #193
  • Create shared quantum Tanner fixture catalog by @nzy1997 in #194
  • Resolve QP101 SVG detector source labels by @nzy1997 in #195
  • Add QuantumTannerSpec JSON parser by @nzy1997 in #196
  • Add quantum Tanner local code helpers by @nzy1997 in #197
  • Render QP101 SVG repeat groups by @nzy1997 in #199
  • Validate quantum Tanner finite-group tables by @nzy1997 in #198
  • Enumerate quantum Tanner Cayley faces by @nzy1997 in #201
  • Render QP101 SVG noise boxes by @nzy1997 in #200
  • Render seeded sample-shot annotations through render_svg by @nzy1997 in #203
  • Render DEM highlights through SVG renderer by @nzy1997 in #202
  • Generate quantum Tanner CSS sparse matrices by @nzy1997 in #204
  • Document built-in render_svg workflow by @nzy1997 in #205
  • Export quantum Tanner Hx and Hz through qec-code CLI by @nzy1997 in #207
  • Switch QP101 gallery build to rstim SVG renderer by @nzy1997 in #208
  • Add quantum Tanner rsinter CSS smoke test by @nzy1997 in #222
  • Route quantum Tanner specs through qec-code CSS distance by @nzy1997 in #223
  • Document quantum Tanner qec-code CLI workflow by @nzy1997 in #224
  • Create showcase documentation index and validation...
Read more

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 14 May 04:48

What's Changed

  • Add Clifford simulator + noise by @nzy1997 in #1
  • Add stim sample distribution tests by @nzy1997 in #2
  • Phase 1: Complete Clifford gate set, resets, and measure-reset by @nzy1997 in #3
  • Phase 2: MPP, pair measurements, SPP, and Pauli product targets by @nzy1997 in #4
  • Phase 3: Remaining noise channels by @nzy1997 in #5
  • Phase 4: Frame simulator with batch sampling API by @nzy1997 in #6
  • Phase 5: Detector Error Model (DEM) by @nzy1997 in #7
  • Phase 6: CLI and Output Formats by @nzy1997 in #8
  • Phase 7: Polish and Extended Features by @nzy1997 in #9
  • feat: phases 8-11 (sweep[], ptb64, surface/color code gen, convert, m2d, explain_errors) by @nzy1997 in #10
  • feat: add rsinter crate (sinter-compatible sampling & statistics) by @nzy1997 in #11
  • fix: tighten DEM analyze_errors semantics to match Stim defaults by @nzy1997 in #14
  • feat: add analyze_errors option parity modes by @nzy1997 in #15
  • feat: add analyze_errors decompose_errors flag by @nzy1997 in #16
  • Add CLI data-path parity for sample, detect, and m2d by @nzy1997 in #17
  • test: enable Stim DEM cross-checks in CI by @nzy1997 in #18
  • Fix analyze_errors DEM parity mismatches by @nzy1997 in #19
  • Add Stim parity showcase checks and report by @nzy1997 in #20
  • Add qstd101 Typst visualization prototype by @nzy1997 in #21
  • Restore Stim parity showcase follow-up changes by @nzy1997 in #23
  • feat: add rstim stats CLI and rename qstd101 to qp101 by @nzy1997 in #22
  • feat: add plot_error_rate to rsinter (logical vs physical error rate) by @nzy1997 in #13
  • Add tracked DEM provenance and QP101 highlight export by @nzy1997 in #25
  • Add rbposd decoder crate and rsinter adapter by @nzy1997 in #26
  • rbposd: add ldpc parity evaluation harness by @nzy1997 in #27
  • Vendor rmatching into monorepo by @nzy1997 in #28
  • test: cover atom loss boundaries by @nzy1997 in #29
  • Add sample-trace visualization overlays and loss gate support by @nzy1997 in #30

New Contributors

Full Changelog: https://github.com/nzy1997/rstim/commits/v0.1.1