Published April 16, 2026 | Version 2.4.0
Software Open

Qiskit/qiskit: Qiskit 2.4.0

Description

Changelog

Added

  • Add safe Python-extension module C API headers (#15762)
  • Add qk_circuit_draw function to the C API (#15361)
  • New function to negate expressions (#15447)
  • Add runtime-version checking qk_api_version (#15831)
  • Add barrier_label_len option to circuit drawers (#15776)
  • Enable parameterized gates in C (#15106)
  • Implement SparseObservable.evolve (#15561)
  • Add C API vtable to pyext (#15761)
  • Introduce QkTranspileState in C transpile stages. (#15486)
  • Add C/Python interop for QuantumRegister and ClassicalRegister (#15768)
  • Add Python conversion to QkObs (#15821)
  • PBC transformations for C (#15756)
  • SynthesizeRZRotations pass (#15641)
  • Add QkCircuit C/Python interoperation via QuantumCircuit._data (#15767)
  • Separate type/constant declarations from functions in C headers (#15760)
  • Rust QPY version 13 compatibility (#15663)
  • Add C/Python interop for Target and DAGCircuit (#15337)
  • Expose Pauli-based computation gates to C (#15754)
  • Add qiskit.capi module (#15711)
  • Add qk_dag_substitute_node_with_unitary to the C API (#15757)
  • Transpiler pass that converts a generic circuit to PBC (#15502)
  • Use PauliProductRotationGate in LitinskiTransformation (#15753)
  • Add PauliProductRotationGate (#15720)
  • C API function for replacing a block of nodes with a unitary gate (#15682)
  • Add DAG-based variants of transpiler pass functions in C API (#15614)
  • Support adding a barrier in LitinskiTransformation (#15639)
  • Add Suzuki-Trotter to C API (#15459)
  • Fix linear dependency on base bit count in QuantumCircuit.compose (#15696)
  • RCCXGate is self-inverse (#15686)
  • feat: SparseObservable addition with scalar multiplication (#15599)
  • feat: in-place arithmetic for QkObs (#15598)
  • Extend SubstitutePi4Rotations to 2q gates (#15483)
  • Reducing the number of Clifford gates in OptimizeCliffordT (#15634)
  • Add PauliLindbladMap.generators() method (#15544)
  • Add RXX/RYY-based equivalence for XXMinusYYGate (#15604)
  • Rewrite default UnitarySynthesis to cache decomposers (#15492)
  • Add method to draw coupling map (#15114)
  • Allow null pointers for zero-length slices in QkObs (#15540)
  • Add SparseObservable support to evolved_operator_ansatz (#15442)
  • Add pauli() accessor to PauliProductMeasurement (#15469)
  • Add Clifford circuit optimization to BasicSimulator (#15159)
  • Expose IQP circuit generator via C bindings (#15396)

Fixed

  • Fixed commutation checking between two Pauli product measurements (backport #16023) (#16040)
  • Avoid triggering register/layout warning in remove_final_measurements (#16026) (#16037)
  • Fix C transpiler level 3 optimisation loop (#15967) (#16008)
  • Producing correct QFT circuits over linear connectivity with 32 or more qubits (#16004) (#16007)
  • Rewrite QPY ParameterExpression handling in pure Polish form (#15934) (#15961)
  • Correctly enforce matrix size check in CommutationChecker (#15933) (#15936)
  • QPY Rust and Python compatibility fixes (#15847) (#15887)
  • Remove unwanted remapping (#15872) (#15885)
  • Fix: BasisTranslator processing of nested ControlFlowOp (#15875) (#15884)
  • Fix: Initialize.inverse() now raises CircuitError immediately (#15782) (#15848)
  • Fix annotation-handling in Rust-space QPY (#15649)
  • Don't track loop_param (#15814)
  • Fix PauliEvolutionGate trace and dim calculation (#15816)
  • Avoid panics in Quantum Shannon Decomposition Rust code (#15635)
  • Fix QPY bug with user-defined register named 'ancilla' (#15623)
  • Forbid duplicate cargs in QuantumCircuit.append (#15789)
  • Fix synth_clifford_depth_lnn for single-qubit Cliffords (#15781)
  • Fix linear dependency on base bit count in QuantumCircuit.compose (#15696)
  • Typed iterator in QASM3 export of for loops (#15290)
  • Bump minimal NumPy Version to 1.21 (#15705)
  • Fix HighLevelSynthesis qubit tracking mechanism (#15685)
  • Fix ParameterExpression.sympify() for RPOW operations (#15642)
  • Fix MCX synthesis methods when the number of control qubits is 0 (#15672)
  • Fix defining and appending multi-controlled gates with 0 control qubits. (#15673)
  • Fixing QuantumCircuit.repeat with parameterized gates (#15646)
  • Fix digit escaping in OpenQASM 3 identifier (#15305)
  • Add check excluding BreakLoop and ContinueLoop from control flow identification (#15626)
  • Fix "`BreakLoopOp' object has no attribute 'blocks" bug (#15581)
  • Make docstring for Counts more precise and validate input (#8653)
  • Handle zero-length permutation synthesis (#15556)
  • Automatically determine coeffs type in SparsePauliOp.from_sparse_list (#15427)
  • Check length of bit_terms before accessing during qk_obs_term (#15537)
  • Fix plot_state_qsphere phase anchor bias due to solver noise (#15494)
  • Represent non-fixed params as NaN for QkTargetOp (#15463) (#15525)
  • Represent non-fixed params as NaN for QkTargetOp (#15463)
  • Fix param extraction for arrays with a single element (backport #15436) (#15522)
  • Fix param extraction for arrays with a single element (#15436)
  • Add SparseObservable support to evolved_operator_ansatz (#15442)

Changed

  • Enable parameterized gates in C (#15106)
  • Add Python conversion to QkObs (#15821)
  • Add QkCircuit C/Python interoperation via QuantumCircuit._data (#15767)
  • Update Linux build image to manylinux_2_28 (#15791)
  • Use PauliProductRotationGate in LitinskiTransformation (#15753)
  • Replace bincode with binrw in basic_approximations serialization (#15693)
  • Pivot to using ruff for all linting (#15603)
  • Use QkParam as parameters for QkTargetOp. (#15538)
  • Remove deprecated QISKIT_VERSION_NUMERIC symbol (#15518)

Deprecated

  • Deprecate qk_transpiler_standalone_optimize_1q_sequences (#15627)

Removed

  • Follow through on MCMT deprecations (#15606)

Build System

  • Update Linux build image to manylinux_2_28 (#15791)
  • Add qiskit.capi module (#15711)
  • Move cbindgen logic into separate crate (#15679)
  • Replace requirements-*.txt with PEP 735 dependency groups (#15619)
  • Relax required version of CMake (#15653)
  • Expose default build profile as QISKIT_BUILD_PROFILE (#15242)

Files

Qiskit/qiskit-2.4.0.zip

Files (9.8 MB)

Name Size Download all
md5:e99e940e48904f771b91b52f40c69e58
9.8 MB Preview Download

Additional details

Related works

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

Software