Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"

[workspace.package]
version = "2.5.0-rc1"
version = "2.5.0"
edition = "2024"
rust-version = "1.87" # Keep in sync with README.md, rust-toolchain.toml, and tools/install_rust_msrv.sh
license = "Apache-2.0"
Expand Down
6 changes: 3 additions & 3 deletions crates/bindgen/include/qiskit/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
#define QISKIT_VERSION_MAJOR 2
#define QISKIT_VERSION_MINOR 5
#define QISKIT_VERSION_PATCH 0
#define QISKIT_RELEASE_LEVEL QISKIT_RELEASE_LEVEL_RC
#define QISKIT_RELEASE_LEVEL QISKIT_RELEASE_LEVEL_FINAL
// For the final release, set the below to 0.
#define QISKIT_RELEASE_SERIAL 1
#define QISKIT_RELEASE_SERIAL 0

#define QISKIT_VERSION "2.5.0-rc1"
#define QISKIT_VERSION "2.5.0"

#define QISKIT_GET_VERSION_HEX(major, minor, patch, level, serial) \
(((major) & 0xff) << 24 | ((minor) & 0xff) << 16 | ((patch) & 0xff) << 8 | \
Expand Down
2 changes: 1 addition & 1 deletion docs/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ Qiskit |version| release notes
though, which is typically `rc1` tags.

.. release-notes::
:earliest-version: 2.4.0rc1
:earliest-version: 2.5.0rc1
2 changes: 1 addition & 1 deletion qiskit/VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.5.0.rc1
2.5.0
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
fixes:
- |
Fixed a bug in :class:`ElidePermutations` and :class:`StarPreRouting` when composing
Fixed a bug in :class:`.ElidePermutations` and :class:`.StarPreRouting` when composing
virtual permutation layouts (implicit permutations applied at the end of circuit).
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ fixes:
Fixed a bug in :class:`.CommutationChecker` when evaluating commutativity relations between
controlled-rotation gates :class:`.CRXGate`, :class:`.CRYGate` and :class:`.CRZGate` and other
standard gates. In particular, fixed the behavior of :class:`.CommutationAnalysis`,
:class:`.CommutativeCancellation`, `CommutativeOptimization` and
`qk_transpiler_pass_standalone_commutative_cancellation` passes in the presence of such gates.

:class:`.CommutativeCancellation`, :class:`CommutativeOptimization` and
:c:func:`qk_transpiler_pass_standalone_commutative_cancellation` passes in the presence of such gates.
See `#16164 <https://github.com/Qiskit/qiskit/issues/16164>`__.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
features_transpiler:
- The :class:`.CommutativeCancellation` transpiler pass will now emit an
:class:`.XGate` or :class:`.SXGate` if the tracked X rotation is an angle
of $\pi$ or a multiple of $\frac{\pi}{2}$ respectively and either the
:class:`.Target` supports class:`.XGate` or :class:`.SXGate`, or the
:class:`.XGate` or :class:`.SXGate` if the tracked X rotation is a multiple
of :math:`\pi` or a multiple of :math:`\pi/2` respectively and either the
:class:`.Target` supports :class:`.XGate` or :class:`.SXGate`, or the
circuit contains the gates.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ deprecations_synthesis:
- |
Some of the arguments in the function :func:`.qs_decomposition` are now deprecated:

* `opt_a1` and `opt_a2` are no longer needed, as the funcion automatically determines if the optimizations should run
* `decomposer_1q` won't accept any callable anymore, only instances of :class:`.OneQubitBasisDecomposer`
* `decomposer_2q` won't accept any callable anymore, only instances of :class:`.TwoQubitBasisDecomposer`
* ``opt_a1`` and ``opt_a2`` are no longer needed, as the funcion automatically determines if the optimizations should run
* ``decomposer_1q`` won't accept any callable anymore, only instances of :class:`.OneQubitEulerDecomposer`
* ``decomposer_2q`` won't accept any callable anymore, only instances of :class:`.TwoQubitBasisDecomposer`
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
fixes:
- |
Fixed an issue with the serialization to QPY of
:class:`.PauliProductMeasurement` and :class:`.PauliProductRotation`
:class:`.PauliProductMeasurement` and :class:`.PauliProductRotationGate`
where the paulis were treated incorrectly, breaking compatibility with
previous qiskit versions.
See `#16099 <https://github.com/Qiskit/qiskit/issues/16099>`__.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
fixes:
- |
Fixed global phase handling in :class:`.TemplateSubstitution`, which previously
Fixed global phase handling in :class:`.TemplateOptimization`, which previously
silently reset to input circuit's global phase to zero and didn't correct for global
phases of the templates.

Expand Down
5 changes: 3 additions & 2 deletions releasenotes/notes/2.5/mimalloc-403d3300aa698fae.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
features_misc:
performance:
- The precompiled wheels on PyPI are now built using `mimalloc <https://github.com/microsoft/mimalloc>`__
as the global allocator. This improves the runtime performance of Qiskit and also should
reduce the resident set size when running Qiskit.
reduce the resident set size when running Qiskit. For details see
`#16024 <https://github.com/Qiskit/qiskit/pull/16024>`__
build:
- Qiskit can now be optionally built using `mimalloc <https://github.com/microsoft/mimalloc>`__
as the global allocator to improve the runtime performance of Qiskit.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
fixes:
- |
Circuits with reset instruction now can be scheduled using :class:`~GenericBackendV2`. The problem was that
:class:`~GenericBackendV2` did not have a duration for `reset`.
Circuits with reset instruction now can be scheduled using :class:`.GenericBackendV2`. The problem was that
:class:`.GenericBackendV2` did not have a duration for `reset`.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
features_transpiler:
- During Sabre layout and routing (:class:`.SabreLayout` and :class:`.SabreRouting`), the
- During Sabre layout and routing (:class:`.SabreLayout` and :class:`.SabreSwap`), the
``lookahead`` heuristic is now defined in terms of numbers of circuit layers, rather than numbers
of circuit gates. This reduces bias in the heuristic; for narrow circuits the previous
heuristic could consider very far-off gates at equal weight to nearly routable gates, while for
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ features_transpiler:
optimized.draw("mpl")

This functionality could previously have been perfomed by running
:class:`.ConsolidateBlocks`, and:class:`.UnitarySynthesis` sequentially
:class:`.ConsolidateBlocks`, and :class:`.UnitarySynthesis` sequentially
in your pass manager. However, this new pass offers improved runtime
performance by performing the synthesis in parallel. It also has improved
heuristics enabled by doing the optimization in a single step which can
Expand Down
45 changes: 45 additions & 0 deletions releasenotes/notes/prepare-2.5.0-019f9e4ce2df3e42.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
prelude: |
Qiskit v2.5.0 is a new feature release of the Qiskit SDK.
The highlights of this release are:

* **C API functions for inspecting control flow instructions and classical expressions:**
This release introduces a set of new C API functions for inspecting control-flow instructions
and classical expressions. These additions provide low-level access to the structure and
semantics of control-flow constructs, enabling external tools and integrations to analyze,
traverse, and reason about classical logic embedded within quantum circuits.

* **A multi-IR staged pass manager support:**
This release introduces a staged pass manager capable of handling workflows across multiple
intermediate representations (IRs) through the new :class:`.MultiStagePassManager` .
This design enables multi-IR compiler pipelines by allowing each stage to either preserve
the current IR or lower into a different one.

* **A Pauli Based Computation transpilation pipeline:**
This release introduces a new utility function :func:`~.generate_preset_pbc_pass_manager`,
for Pauli-based compilation as an incremental step toward fault-tolerant support.
It enables the construction of preset pass managers targeting the Pauli Based Computation (PBC)
intermediate representation. The generated pipelines compile circuits into a form expressed in terms
of :class:`.PauliProductRotationGate` and :class:`.PauliProductMeasurement`,
while preserving standard operations and control flow.
This provides a convenient entry point for workflows that operate on or optimize within the PBC representation.

* **Multi-threaded tranpiler passes:**
This release introduces a new multithreaded transpiler pass, :class:`.TwoQubitPeepholeOptimization`,
designed to perform local two-qubit unitary optimizations. The pass identifies two-qubit subcircuits,
computes their unitary representation, and replaces them with more efficient synthesized equivalents,
reducing overall gate count or circuit fidelity.
In addition, several existing passes, :class:`.ConsolidateBlocks`, :class:`.CommutationAnalysis`,
and :class:`.Optimize1qGatesDecomposition` have been enhanced with multithreading support,
improving performance and scalability of transpilation on larger circuits.

* **Improved tranpiler performance:**
This release delivers substantial transpiler performance improvements,
with average speedups of 2-3x across typical workloads, driven by a broad set of optimizations
throughout the stack. Key contributions include algorithmic improvements to the SABRE layout and routing methods
snd the multithreaded transpiler passes mentioned above.
Additional gains come from switching to `mimalloc <https://github.com/microsoft/mimalloc>__` as the global allocator,
adopting `nalgebra <https://docs.rs/nalgebra/latest/nalgebra/>`__ for matrix operations in decomposers,
using `foldhash <https://github.com/orlp/foldhash>`__ in place of previous hashing strategies,
and incorporating performance improvements in `rustworkx <https://www.rustworkx.org/>`__,
together significantly enhancing both runtime efficiency and scalability.