Published April 16, 2026
| Version 2.4.0
Software
Open
Qiskit/qiskit: Qiskit 2.4.0
Authors/Creators
- Matthew Treinish
- Jake Lishman1
- Luciano Bello2
- Jay Gambetta1
- Diego M. Rodríguez3
- Manoel Marques4
- Julien Gacon5
- Paul Nation6
- Christopher J. Wood7
- ewinston
- Juan Gomez
- Richard Chen
- Andrew Cross
- Alexander Ivrii
- Kevin Krsulich
- Steve Wood4
- Ismael Faro Sertage4
- Naoki Kanazawa
- Elena Peña Tapia8
- Lauren Capelluto
- Thomas Alexander
- Eric Arellano5
- Ikko Hamamura9
- Edwin Navarro
- Takashi Imamichi1
- Salvador de la Puente González10
- Raynel Sanchez1
- Shelly Garion6
- Soolu Thomas6
- 1. @IBM
- 2. Qiskit - IBM Quantum
- 3. @IBMResearch
- 4. IBM Research
- 5. IBM Quantum
- 6. IBM
- 7. Google
- 8. @IBM @Qiskit
- 9. NVIDIA
- 10. @IBMQuantum
Description
Changelog
Added
- Add safe Python-extension module C API headers (#15762)
- Add
qk_circuit_drawfunction 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
QkTranspileStatein C transpile stages. (#15486) - Add C/Python interop for
QuantumRegisterandClassicalRegister(#15768) - Add Python conversion to
QkObs(#15821) - PBC transformations for C (#15756)
- SynthesizeRZRotations pass (#15641)
- Add
QkCircuitC/Python interoperation viaQuantumCircuit._data(#15767) - Separate type/constant declarations from functions in C headers (#15760)
- Rust QPY version 13 compatibility (#15663)
- Add C/Python interop for
TargetandDAGCircuit(#15337) - Expose Pauli-based computation gates to C (#15754)
- Add
qiskit.capimodule (#15711) - Add qk_dag_substitute_node_with_unitary to the C API (#15757)
- Transpiler pass that converts a generic circuit to PBC (#15502)
- Use
PauliProductRotationGateinLitinskiTransformation(#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) RCCXGateis self-inverse (#15686)- feat:
SparseObservableaddition with scalar multiplication (#15599) - feat: in-place arithmetic for QkObs (#15598)
- Extend
SubstitutePi4Rotationsto 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
UnitarySynthesisto 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
ParameterExpressionhandling 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:
BasisTranslatorprocessing of nestedControlFlowOp(#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
PauliEvolutionGatetrace 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
cargsinQuantumCircuit.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.repeatwith 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
coeffstype inSparsePauliOp.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
NaNforQkTargetOp(#15463) (#15525) - Represent non-fixed params as
NaNforQkTargetOp(#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
QkCircuitC/Python interoperation viaQuantumCircuit._data(#15767) - Update Linux build image to
manylinux_2_28(#15791) - Use
PauliProductRotationGateinLitinskiTransformation(#15753) - Replace
bincodewithbinrwinbasic_approximations serialization(#15693) - Pivot to using ruff for all linting (#15603)
- Use
QkParamas parameters forQkTargetOp. (#15538) - Remove deprecated
QISKIT_VERSION_NUMERICsymbol (#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.capimodule (#15711) - Move
cbindgenlogic into separate crate (#15679) - Replace
requirements-*.txtwith 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
- Repository URL
- https://github.com/Qiskit/qiskit