Published June 18, 2026 | Version 2.5.0rc1

Qiskit/qiskit: Qiskit 2.5.0rc1

Description

Changelog

Added

  • A multi-IR staged pass manager (#16418)
  • Allow 32-bit registers in classical.expr system (#16449)
  • Add C API for inspecting control flow instructions (#16179)
  • Add register query functions to the C API (#16177)
  • Var-based measurement experiments (#16273)
  • Add C API for inspecting classical expressions (#16178)
  • Use GateCount over Depth in Clifford+T pipeline (#16218)
  • Add QuantumCircuit method to compute estimated fidelity (#16292)
  • Add C API for two qubit unitary peephole optimization pass (#16088)
  • Extend litinski transformation for all Pauli rotations (#15974)
  • Add additional Z and X rotation gate handling to CommutativeCancellation (#16191)
  • Add PBC transpilation pipeline (#16270)
  • Add Custom Gates/Instructions in Rust (#15684)
  • Add QubitSparsePauliList.commutes (#16194)
  • extend ConvertToPauliProductRotations to PPRs and PPMs (#16306)
  • Expose qk_{circuit, dag}_global_phase in the C API (#16278)
  • Add generate_clifford_t_pass_manager (#15918)
  • Make uuid public on ParameterVector (#16216)
  • Add DAG-based variant of BasisTranslator transpiler pass in C API (#15783)
  • Add new multithreaded TwoQubitPeepholeOptimization pass (#13419)
  • Improve single-qubit gate count in TwoQubitControlledUDecomposer (#16123)
  • Track PauliLindbladMap generators during parity_sample (#16072)
  • Add auto-generated ctypes bindings to C API (#16067)
  • make plot_bloch_vector accept tuple input (#16103)
  • Improve commutation checking of Pauli product rotations and measurements (#15815)
  • Add option to set the seed_transpiler from environment (#16001)
  • Enable try_matrix & friends for PPR and PPM (#16011)
  • Add control flow support to ConvertToPauliRotations (#15941)
  • Convert Sabre's lookahead to layer-based tracking (#14911)
  • Support commutation check between Pauli-based gates and standard gates (After reverting #15488) (#15925)
  • Extend RemoveIdentityEquivalent and CommutativeOptimization with PauliProductRotations (#15810)
  • Support commutation check between Pauli-based gates and standard gates (#15488)
  • Support phase gates in LitinskiTransformation (#15773)

Fixed

  • Add duration for reset to GenericBackendV2 (#16442)
  • Fixes #16166: Preserve global_phase in dagdependency_to_circuit (#16323)
  • Have SynthesizeRZRotations clear rsgridsynth global caches (#16392)
  • Correctly combining control modifiers in OptimizeAnnotated (#16428)
  • Fix stack-overflow segfault in OpenQASM 2 expression parsers (#16421)
  • Fix MultiplierGate truncated result decomposition (#16394)
  • Fix CommutationChecker for controlled rotation gates (#16337)
  • Fix BitArray bitcount padding handling (#16309)
  • Fix determinism in ConsolidateBlocks (#16237)
  • Fix redundant unit numerator in pi_check pi fractions (#16175)
  • Remove QPY warning on deserialising incomplete ParameterVectors (#16222)
  • Fix composing virtual permutation layouts for ElidePermutations and StarPreRouting (#13945)
  • QPY: Pauli Product Measurement/Rotation parameter fix (#16294)
  • Reject loopback edges in CouplingMap (#16310)
  • fix: Ensure there is no subtraction panic via underflow (#16249)
  • Fix panic on 1.0 error in VF2Layout (#16285)
  • Fix ConstrainedReschedule barrier handling (#16151)
  • Initialize ConstrainedReschedule.target unconditionally (#16246)
  • Sorts gate array to have deterministic gate selection (#16139)
  • Fix UnrollForLoops global phase accumulation (#16201)
  • Fix Statevector.evolve modifying input state in-place (Fixes 15750) (#15905)
  • Fix Commuting2qGateRouter global phase handling (#16215)
  • Fix InverseCancellation for symmetric pairs (#16153)
  • Adding LinearFunction.inverse (#16203)
  • Fix invalid simplification of XXPlusYY gates in CommutativeOptimization (#16163)
  • Add safe shape checking to synth_cz_depth_line_mr (#16154)
  • fix(library): clifford_6_4 template missing global_phase causes silent rejection (#15944)
  • make plot_bloch_vector accept tuple input (#16103)
  • Fix QPY loading delay integers durations incorrectly (#16076)
  • Fix forced block consolidation for incomplete basis sets (#16075)
  • Add option to set the seed_transpiler from environment (#16001)
  • Fix panic in RemoveIdentityEquivalent with ParameterVector global phase (#16054)
  • Fixed commutation checking between two Pauli product measurements (backport #16023) (#16040)
  • Fixed commutation checking between two Pauli product measurements (#16023)
  • Avoid triggering register/layout warning in remove_final_measurements (#16026) (#16037)
  • Avoid triggering register/layout warning in remove_final_measurements (#16026)
  • Fix C transpiler level 3 optimisation loop (#15967) (#16008)
  • Fix C transpiler level 3 optimisation loop (#15967)
  • Producing correct QFT circuits over linear connectivity with 32 or more qubits (#16004) (#16007)
  • Producing correct QFT circuits over linear connectivity with 32 or more qubits (#16004)
  • Fix TemplateOptimization dropping the global_phase on substitution (#15943)
  • Reimplementing QSD using faer instead of nalgebra. (#15874)
  • Rewrite QPY ParameterExpression handling in pure Polish form (#15934) (#15961)
  • Rewrite QPY ParameterExpression handling in pure Polish form (#15934)
  • Support commutation check between Pauli-based gates and standard gates (After reverting #15488) (#15925)
  • Correctly enforce matrix size check in CommutationChecker (#15933) (#15936)
  • Correctly enforce matrix size check in CommutationChecker (#15933)
  • Support commutation check between Pauli-based gates and standard gates (#15488)
  • QPY Rust and Python compatibility fixes (#15847) (#15887)
  • QPY Rust and Python compatibility fixes (#15847)
  • Remove unwanted remapping (#15872) (#15885)
  • Remove unwanted remapping (#15872)
  • Fix: BasisTranslator processing of nested ControlFlowOp (#15875) (#15884)
  • Fix: BasisTranslator processing of nested ControlFlowOp (#15875)
  • Fix: Initialize.inverse() now raises CircuitError immediately (#15782) (#15848)
  • Fix: Initialize.inverse() now raises CircuitError immediately (#15782)

Changed

  • Bumpy minimum NumPy version to 2.0 (#16243)
  • Write policy on dependency versioning (#16239)

Deprecated

  • Deprecations in qs_decomposition: opt_a* are not needed and decomposer_*q restrictions (#16158)
  • Remove the commutation cache from the commutation checker (#15988)

Build System

  • Use stestr to prune its own history in CI jobs (#16364)
  • Add C-API slot-assignment compatibility check (#16301)
  • Add slot-listing command to bindgen-cli (#16289)
  • Rename bindgen-c to bindgen-cli (#16096)
  • Add option to use mimalloc as global allocator (#16024)
  • Bump MSRV to 1.87 and nalgebra to the 0.34 release (#16045)

Performance

  • Update Sabre extended set on-the-fly (#14912)
  • Use GateCount over Depth in Clifford+T pipeline (#16218)
  • Move ParameterVector to Rust (#16228)
  • Parallelize unitary synthesis (#16275)
  • Use toposort instead of topological_op_nodes for DAG reconstruction (#15987)
  • Perform ConsolidateBlocks analysis in parallel (#16230)
  • Make Optimize1qGatesDecomposition multithreaded (#15567)
  • Use np.bitwise_count in BitArray.bitcount (#15836)
  • Use TwoQubitPeepholeOptimization in preset pass managers (#16136)
  • Speedup SubstitutePi4Rotations (#16217)
  • Parallelize the CommutationAnalysis pass (#16014)
  • Pivot to foldhash for hash implementation in IndexMap (#15920)
  • Update PauliProductRotationGate.to_matrix() from scipy to numpy (#16016)
  • Add option to use mimalloc as global allocator (#16024)

Files

Qiskit/qiskit-2.5.0rc1.zip

Files (10.1 MB)

Name Size Download all
md5:fc49d9483330a1c2732c1d7c828b9073
10.1 MB Preview Download

Additional details

Related works

Is supplement to
Software: https://github.com/Qiskit/qiskit/tree/2.5.0rc1 (URL)

Software