Skip to content

Releases: PsiQ/psiqdk

2.5.0

Choose a tag to compare

@glemmestad glemmestad released this 13 Sep 17:02

Released on: 2026-09-13

Package updates

  • psiqdk-workbench: 4.55.0 → 4.55.3
  • psiqdk-algorithms: 1.24.3 → 1.24.4

Bug Fixes

psiqdk-workbench

  • Special-angle detection for rotation gates is now robust to floating-point error, and uses the rotation's own error parameter as the comparison tolerance rather than exact equality. Previously, a rotation that was mathematically a special angle but numerically slightly off — for example a controlled 90° Ry decomposing into 45.00000001° and -45.00000001° uncontrolled rotations — would fail the check and be decomposed unnecessarily. This affects Ross-Selinger synthesis output as well as T-gate and active-volume counting, so affected circuits previously reported inflated active volume and produced unnecessarily long T-gate sequences.
  • Numeric QRE: local_ancillae are now reflected in the qubit highwater mark, so numeric resource estimates no longer under-report peak qubit usage. Invalid values now raise a clearer error rather than failing obscurely inside the parameter cast.
  • QPU.reset: fixed num_qubits being left as a NumPy scalar rather than a Python int, which could propagate NumPy types into downstream code.

Documentation

psiqdk-workbench

  • Corrected discrepancies between the parameters listed in docstrings and the actual function signatures, across the Workbench codebase.
  • The QPU and Qubits reference pages now list inherited members.

psiqdk-algorithms

  • Fixed assorted typos and broken links.

2.4.0

Choose a tag to compare

@glemmestad glemmestad released this 13 Sep 17:01

Released on: 2026-09-01

Package updates

  • psiqdk-workbench: 4.52.5 → 4.55.0
  • workbench-sim-native: 0.2.3 → 0.3.0

Features

psiqdk-workbench

  • psiqdk.workbench.integrations.resource_analyzer: added draw(qc, kind=..., title=...), which renders a Resource Analyzer graph as an interactive widget in Jupyter notebooks. kind accepts "call_graph" (the default) or "flame_graph". (N.B. requires psiqdk-visualize to be installed.)
  • RossSelingerSynthesis now supports multi-qubit target registers for controlled rotations. Previously this was handled only by the single-control compilation filter, and calling the qubrick directly with a multi-qubit target raised an assertion; the qubrick and the filter now agree.
  • Qubrick now supports dagger=True for qubricks that leave qubits allocated at the end of compute(). This was previously forbidden.
  • Added a sparse state-vector simulation backend, >>sparse-sv-sim>>, for use in a QPU filter stack alongside >>witness>> and >>buffer>>.
  • Added preliminary, experimental simulation backends for Qiskit, PennyLane and QBlaze, exposed as the QISKIT_STATE_VEC, PENNYLANE_STATE_VEC and QBLAZE_SPARSE_STATE_VEC presets in psiqdk.workbench.filter_presets. These are native simulation filters rather than OpenQASM round-trips.

workbench-sim-native

  • Added the sparse state-vector simulator that backs >>sparse-sv-sim>>.

Behavior Changes

psiqdk-workbench

  • RossSelingerSynthesis: for controlled rotations, error_param is now the error budget for each constituent single-qubit rotation, rather than a total budget divided across them. Previously the value was split (error_param / 2 for Rz, error_param / 3 for phase rotations). For an unchanged error_param, controlled rotations are now synthesized at looser per-gate precision, which lowers their T counts and active volume; pass a correspondingly smaller error_param to retain the previous overall accuracy.

Deprecations

psiqdk-workbench

  • psiqdk.workbench.qre.get_baseline_costs_from_witness and psiqdk.workbench.qre.get_active_volume_from_witness now raise a FutureWarning and will be removed in a future release. Use resource_estimator(qc).resources(expanded=True) and resource_estimator(qc).resources()["active_volume"] instead.

Bug Fixes

psiqdk-workbench

  • RossSelingerSynthesis: fixed incorrect synthesis of open-controlled (~ctrl) phase rotations.
  • Circuit Designer export: circuits containing nops or unnamed Qubits registers (those created via Qubits(N, qpu=qc) with no name) no longer fail to export. nops are now drawn as separators, and unnamed registers are correctly distinguished from registers the user explicitly named with an empty string.
  • Lowered the numpy floor for Python versions below 3.14. The minimum had been raised to numpy>=2.4.6 solely to gain Python 3.14 support, which unnecessarily prevented older numpy pins on earlier Python versions.

Documentation

psiqdk-workbench

  • Added missing docstrings across the API reference.

2.3.0

Choose a tag to compare

@sammorley-short sammorley-short released this 20 Aug 21:45

Released on: 2026-07-29

Package updates

  • psiqdk-workbench: 4.51.0 → 4.52.5
  • psiqdk-algorithms: 1.23.1 → 1.24.3

Refactor

Completed internal code migration from psiq_workbench to psiqdk-workbench and workbench_algorithms to psiqdk-algorithms to avoid the previous dual-package releases. Both psiqdk-workbench and psiqdk-algorithm are now “real” python packages rather than thin API wrappers around the legacy packages.

Bug Fixes

psiqdk-workbench

  • QPU.draw: increased minimum width of drawings, improving experience for short circuits
  • Qubrick.get_input_qreg: fixed bug in uncompute trying to access released qubits when parent calls child (caused by register deallocation before custom uncompute).
  • psiqdk.workbench.interoperability: added missing tag definitions creates_junk, experimental, and not_coherently_invertible
  • psiqdk.workbench.compilation.filters.elementary_filters: added missing imports ByOperationTypeFilter, check, analyze, and process
  • psiqdk.workbench.ops: added missing imports get_qubits_used_mask, Operation
  • QPU.get_instructions: added in commented-out operations for qubrick entry/exit and qubit allocation/deallocation when using the asm and asm-stack format.

2.2.0

Choose a tag to compare

@glemmestad glemmestad released this 21 Jul 22:04

Released on: 2026-07-14

Package updates

  • psiqdk-workbench: 4.48.4 → 4.51.0

Features

psiqdk-workbench

  • Added new API surfaces (psiqdk.workbench.XXX) for previously-hidden features, including:

    • check_ops: utilities for checking properties of operations, e.g. is_pauli, is_self_inverse, etc.
    • filters: now directly exposes composite filters BaselineArchitectureFilter and CompositeCompilationFilter.
    • interoperability: approximate interoperability tag added
    • test_helpers: now exposes various helpers for test suites, such as needs_bartiq, needs_qiskit, etc.
    • qre: exposes restructure_op, ToleranceSpec, compare_symbolic_to_numeric, and compare_symbolic_total_cost_with_numeric

Bug Fixes

psiqdk-workbench

  • Fixed badly-formatted display of circuit diagrams with Unicode on GitHub
  • Fixed deprecated qubit slicing from Qiskit and OpenQASM import/export filters
  • Remove double-escaping in circuit diagram labels

Documentation

psiqdk-workbench

  • Added Representing Integers as Bit Strings deep dive, covering the topic of little- vs big-endianness

2.1.0

Choose a tag to compare

@glemmestad glemmestad released this 21 Jul 21:20

Released on: 2026-06-23

Package updates

  • psiqdk-workbench: 4.45.0 → 4.48.4
  • psiqdk-algorithms: 1.22.3 → 1.23.1
  • workbench-sim-native: 0.2.1 → 0.2.3

Features

psiqdk-workbench

  • Extends QPU.set_random support to the bit simulator backend to enable randomness in classical bit simulations
  • Adds the track_qubricks optional argument to OpFilter to enable the ability to track qubrick hierarchies within filters.
  • Adds the angle_synthesis_method keyword argument to NumericEstimator.resources to allow specification of an angle synthesis method when performing numerical QREs of active volume

psiqdk-algorithms

  • Unifies phase gradient qubricks and supports QFT via Phase Gradient Addition

    • Adds DyadicAngle, an explicit angle type for validating catalyst-backed phase-gradient base angles.
    • Adds PhaseGradientViaPhaseCatalystState, which implements phase gradients using rotation catalyst states and a constructor-owned adder.
    • Defaults catalyst-based phase gradients to PhaseGradientAdder, while allowing NaiveAdd and GidneyAdd via PhaseGradientViaPhaseCatalystState(adder=...).
    • Adds QFTviaPhaseGradient, enabling QFT and inverse QFT through either NaivePhaseGradient or catalyst/PGA-backed phase gradients.

Bug Fixes

psiqdk-workbench

  • Errors now thrown when attempting to rebind filters to new Q‍‍Ian NanezI‍PU instances
  • Update QRE metrics to reset to zero when QPU.reset instruction is applied
  • Added runtime type checking for Qubrick.alloc_temp_qreg params to catch common errors
  • Deal with case when Qubrick has deleted its allocations during compute(), re-allocated them in its dagger, and then a custom uncompute() is used.

psiqdk-algorithms

  • Remove extra initialization elbows from USP variants
  • Fix phase gradient adder control bug when ctrl=0.
  • Make scipy a required dependency

Documentation

psiqdk-workbench

  • Added documentation for the >>clifford-sim>>

2.0.0

Choose a tag to compare

@glemmestad glemmestad released this 28 May 08:57
1fd59df

2.0.0

Welcome PsiQuantum Development Kit (PsiQDK), PsiQuantum's Open Access SDK for programming Fault Tolerant Quantum Computers. The PsiQDK lets you:

  • Write programs using a compact and composable Python API
  • Simulate them using an optimized C++ core
  • Compile and optimize high-level operations to low-level native gate-sets
  • Estimate resources without manual bookkeeping
  • Debug and validate complex algorithms efficiently
  • Interface with Construct for advanced visualisation of circuits and their resource cost breakdowns

Links

To find out more about the QDK, visit the following links

  • Construct documentation - https://construct.psiquantum.com/docs
  • Tutorials:
    • Workbench - gates, qubit management, simulation, resource estimation, and the Qubricks framework.
    • Algorithms tutorials - state preparation, amplitude amplification, phase estimation, arithmetic, QROM, and more.
    • Visualization examples - interactive circuit and QRE viewers for Jupyter and VS Code.
    • End-to-end examples - full algorithm-design → implementation → resource-estimation workflows (Grover SAT solver, recursive state preparation).
  • Workbench Quantum Katas - a hands-on collection of tutorials and programming exercises that teach quantum computing and quantum programming, from basic concepts to fault-tolerant applications such as quantum chemistry.
  • Quantum Programming in Depth - side-by-side code samples in three quantum development toolkits: Workbench, Q#, and Qiskit.

Components

  • psiqdk.workbench: 4.45.0
  • psiqdk.algorithms: 1.22.3
  • psiqdk.visualize: 0.97.2
  • bartiq: 0.17.0
  • qref: 0.11.0
  • workbench-sim-native: 0.2.1

Support

PsiQuantum officially supports the current Stable release of PsiQDK. Older releases are best-effort only.

Contributing

We welcome bug reports, feature requests, and discussion. Please file a new issue on this repository.

License

See LICENSE.