Releases: PECOS-packages/PECOS
Release list
py-0.9.0.dev0
PECOS 0.9.0.dev0 (pre-release)
Highlight: Rust classical interpreter is now the default
HybridEngine's default classical interpreter is now the Rust-backed RustPhirClassicalInterpreter (previously the pure-Python PhirClassicalInterpreter). For valid PHIR programs supplied as a dict, JSON string, or to_phir_dict()-convertible object it is behaviorally equivalent — differentially validated against the Python interpreter (~3,200 fuzzed programs, QASM-generated-PHIR differentials, exact exception-type parity).
Escape hatch: to restore the previous behavior, construct the engine with HybridEngine(cinterp="python").
Boundary behavior was brought to parity so the switch is not silent: phir_validate now schema-validates on the Rust path; division by zero raises ZeroDivisionError and undefined classical variables raise KeyError on both interpreters; undeclared assignment/ffcall/measurement targets fail fast (matching Python) instead of being auto-created; check_ffc fails fast on missing foreign functions; run_multisim works with to_dict-capable foreign objects. Known limitation: PyPHIR program objects are not accepted by the Rust interpreter (clear TypeError; use a dict/JSON or cinterp="python").
Also in this release
- PHIR engine fail-fast fixes (#345): invalid variable definitions and out-of-range measurement writes error instead of being silently swallowed; the no-return measurement index is absolute across batches.
- ~41 previously-dormant
pecos-phir-jsonintegration tests revived and running in CI. - Signed PHIR registers render as two's-complement binary strings (i(S+1) semantics); WASM fixtures corrected to
i32 size 31. - Supply-chain: cxx 1.0.195, Go 1.26.5, triaged cgmath advisories (#349).
pecos-rslib-llvmis published alongsidepecos-rslibandquantum-pecos(exact-version pins).
Rust API note: PecosError gains a RuntimeUndefinedVariable variant — source-breaking for downstream code that exhaustively matches the enum (0.x pre-release).
What's Changed
- Explore zx by @ciaranra in #272
- Some more RNG Error fixes by @Jonhas-qtm in #270
- exposing stabilizer seeding for the Python wrappers by @ciaranra in #275
- Structure by @ciaranra in #276
- Api polish by @ciaranra in #277
- Bump rustls-webpki from 0.103.9 to 0.103.10 by @dependabot[bot] in #274
- Bump black from 26.3.0 to 26.3.1 by @dependabot[bot] in #268
- Bump tornado from 6.5.4 to 6.5.5 by @dependabot[bot] in #265
- Clifford rz simulators by @ciaranra in #278
- QoL: installation and dev workflow polish by @ciaranra in #279
- Rslib direct deps by @ciaranra in #280
- Cleanup by @ciaranra in #281
- Clean by @ciaranra in #282
- Foreign plugins by @ciaranra in #283
- rust phir classical interp by @ciaranra in #284
- Bump wasmtime from 43.0.0 to 43.0.1 in /python/quantum-pecos/tests/docs/rust_crate by @dependabot[bot] in #286
- Bump wasmtime from 43.0.0 to 43.0.1 in the rust-security group across 1 directory by @dependabot[bot] in #285
- Update setuptools requirement from >=62.6 to >=82.0.1 by @dependabot[bot] in #289
- Update wasmtime requirement from >=13.0 to >=43.0.0 by @dependabot[bot] in #288
- Update maturin requirement from <2.0,>=1.2 to >=1.13.1,<2.0 by @dependabot[bot] in #287
- Simulator optimization branch: GPU density matrix, perf, audits, shar… by @ciaranra in #290
- Surf dems by @qciaran in #293
- Surf dems2 by @ciaranra in #294
- StabMps/StabVec: stabilizer+MPS simulator, Python bindings, Selene pl… by @ciaranra in #295
- Bump jupyterlab from 4.5.6 to 4.5.7 by @dependabot[bot] in #299
- Bump notebook from 7.5.5 to 7.5.6 by @dependabot[bot] in #298
- Update pymdown-extensions requirement from >=10.4 to >=10.21.2 by @dependabot[bot] in #297
- Bump rustls-webpki from 0.103.10 to 0.103.13 in /python/quantum-pecos/tests/docs/rust_crate by @dependabot[bot] in #296
- Bump rustls-webpki from 0.103.12 to 0.103.13 in the rust-security group across 1 directory by @dependabot[bot] in #300
- Bump wasmtime from 43.0.1 to 43.0.2 in the rust-security group across 1 directory by @dependabot[bot] in #304
- Bump mistune from 3.2.0 to 3.2.1 by @dependabot[bot] in #302
- Bump jupyter-server from 2.17.0 to 2.18.0 by @dependabot[bot] in #301
- Cleanup by @ciaranra in #306
- Polish pecos-neo tool builder execution by @ciaranra in #308
- Feat/optional mwpf cmake detection by @ciaranra in #309
- Profile plumbing and pyo3 fixes by @ciaranra in #310
- Polish by @ciaranra in #311
- Bump idna from 3.14 to 3.15 by @dependabot[bot] in #313
- Bump pymdown-extensions from 10.21.2 to 10.21.3 by @dependabot[bot] in #312
- Dem polish by @ciaranra in #314
- Cleanup by @ciaranra in #315
- CI/supply-chain security hardening by @ciaranra in #316
- Drain remaining code-scanning alerts: idna pin, OSV ignores, FFI SAFETY + null-checks by @ciaranra in #317
- Refactor 5 FFI test sites to NonNull / as_ref().expect() for clearer non-null contracts by @ciaranra in #318
- fix: add RNGadvance support to legacy Python CVM by @qartik in #330
- fix: restore custatevec import compatibility by @qartik in #334
- ci: shorten PR workflow critical path by @qartik in #331
- Dep bump by @ciaranra in #322
- Run generated documentation examples in docs CI by @qciaran in #340
- perf: remove coordinator result lock contention by @qartik in #335
- Render signed PHIR registers as two's-complement bits instead of a sign prefix by @ciaranra in #339
- Bump mistune from 3.2.1 to 3.3.0 by @dependabot[bot] in #346
- Default HybridEngine to the Rust classical interpreter, with parity fixes and #345 engine fail-fast by @ciaranra in #347
- Clear post-merge OSV advisories (cxx, Go stdlib, cgmath) by @ciaranra in #349
- Raise the python-core post-merge timeout to 75 minutes by @ciaranra in #350
- Bump Python packages to 0.9.0.dev0 by @ciaranra in #351
Full Changelog: py-0.8.0.dev8...py-0.9.0.dev0
Installing this pre-release
pip install quantum-pecos==0.9.0.dev0
# or with uv (transitive pre-release pins need the flag):
uv pip install --prerelease=allow quantum-pecos==0.9.0.dev0
py-0.8.0.dev8
What's Changed
- Changing error message for RNGIndex for more clarity by @Jonhas-qtm in #267
- Phir by @ciaranra in #269
- bump Python version to 0.8.0.dev8 by @ciaranra in #271
Full Changelog: py-0.8.0.dev7...py-0.8.0.dev8
py-0.8.0.dev7
py-0.8.0.dev6
py-0.8.0.dev5
py-0.8.0.dev4
What's Changed
- polishing wasm by @ciaranra in #252
- More py to rs by @ciaranra in #235
- More decoders2 by @ciaranra in #253
- Bump wasmtime from 41.0.3 to 41.0.4 by @dependabot[bot] in #254
- Stabilizer cleanup by @ciaranra in #255
- bump py version to 0.8.0.dev4 by @ciaranra in #256
Full Changelog: py-0.8.0.dev3...py-0.8.0.dev4
py-0.8.0.dev3
What's Changed
- fixing .reset() to give state, making .probabilities/probability() av… by @ciaranra in #250
- bumping from 0.8.0.dev2 to 0.8.0.dev3 by @ciaranra in #251
Full Changelog: py-0.8.0.dev2...py-0.8.0.dev3
py-0.8.0.dev2
py-0.8.0.dev1
What's Changed
- Feat/selene plugins by @ciaranra in #209
- Feat/pecos deps by @ciaranra in #212
- Cleanup by @ciaranra in #215
- adding various decoders back from previous branch by @ciaranra in #216
- Bug/issues 213 and 89 by @ciaranra in #214
- Cleanup/readme by @ciaranra in #217
- Feature/rng openqasm parser by @ciaranra in #218
- Feat/re adding density matrix by @ciaranra in #219
- Remove old, unused selene interface code by @ciaranra in #220
- Feat/more graph stuff by @ciaranra in #221
- Adding an engine that runs HUGR directly by @ciaranra in #222
- Fixing the Selene->PECOS integration to handle dynamic programs by @ciaranra in #223
- circuit->executor->sampler by @ciaranra in #224
- Feat/qec polish (#225) by @ciaranra in #226
- Feat/improved hugr engine by @ciaranra in #227
- polish docs by @ciaranra in #228
- Feat/tick polish by @ciaranra in #231
- Bump virtualenv from 20.35.4 to 20.36.1 by @dependabot[bot] in #232
- Bump filelock from 3.20.2 to 3.20.3 by @dependabot[bot] in #233
- Bump wasmtime from 40.0.0 to 40.0.3 by @dependabot[bot] in #234
- polish docs by @ciaranra in #230
- updated locks by @ciaranra in #247
New Contributors
- @dependabot[bot] made their first contribution in #232
Full Changelog: py-0.8.0.dev0...py-0.8.0.dev1
Python PECOS 0.8.0.dev0
What's Changed
- Feat/steane noactive by @ciaranra in #179
- Steane by @ciaranra in #180
- Feat/guppy gen v2 by @ciaranra in #181
- Moving the C++ implementation of stabilizer sims from being wrapped i… by @ciaranra in #183
- Feat/state vec usage by @ciaranra in #184
- Feat/rsqulacs by @ciaranra in #186
- Feat/rsquest by @ciaranra in #187
- Accumated updates by @ciaranra in #188
- Improve LLVM Support by @ciaranra in #190
- Make llvm not default for Rust by @ciaranra in #192
- Update to include Python 3.14 by @ciaranra in #194
- Bug/issue 81 by @ciaranra in #195
- Bug/issue 89 by @ciaranra in #196
- Feat/reduce julia v testing by @ciaranra in #197
- Use Rust wasmtime implementation by @ciaranra in #198
- Replace llvmlite with Rust/Inkwell by @ciaranra in #199
- Feat/make matplotlib optional by @ciaranra in #200
- Feat/pecos num by @ciaranra in #201
- Feat/polish wasm by @ciaranra in #202
- feat: Crosstalk Payload by @PabloAndresCQ in #191
- Feat/pecos num by @ciaranra in #204
- feat/autodetect by @ciaranra in #205
- Feat/meascorr by @ciaranra in #206
- Feat/meascorr by @ciaranra in #207
- Feat/go proof by @ciaranra in #208
- Bumping version number of Python from py-0.7.0.dev4 to py-0.8.0.dev0 … by @ciaranra in #210
- Bug/fix bump by @ciaranra in #211
Full Changelog: py-0.7.0.dev4...py-0.8.0.dev0