Skip to content

2.4.0

Choose a tag to compare

@glemmestad glemmestad released this 13 Sep 17:01
· 66 commits to main since this release

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.