Skip to content

Commit

Permalink
Prepare 0.24.0 release (#10063)
Browse files Browse the repository at this point in the history
* Prepare 0.24.0 release

This commit prepares the 0.24.0 release, this involves 2 steps first
changing all the version numbers to 0.24.0 from 0.24.0rc1 and secondly
updating the release notes to prepare them for publishing.

For the release notes this release leverages a pre-release feature in
reno to add subsections to the release notes. For this first release
leveraging this feature subsections are added to the features,
deprecations, and upgrade sections for transpiler, algorithms, circuits,
quantum_info, pulse, providers, primitives, and visualization. This lets
us group notes into these subcategories. In future reelases we can look
at adding deeper heirarchy if needed.

* More release note updates

* Finish categorizing feature notes

* More updates

* Finish subsection categorization

* Expand prelude

* All but bugfix notes

* Fix rebase error

* Finish first pass over release notes

* More small tweaks

* Fix typo

* Update releasenotes/notes/0.24/add-alternative-hls-construction-afec157f7cf15b0b.yaml

Co-authored-by: Luciano Bello <[email protected]>

* Apply suggestions from code review

Co-authored-by: Kevin Krsulich <[email protected]>

* Update releasenotes/notes/0.24/error-pass-callable-message-3f29f09b9faba736.yaml

Co-authored-by: John Lapeyre <[email protected]>

* Apply suggestions from code review

Co-authored-by: Julien Gacon <[email protected]>

* Apply suggestions from code review

Co-authored-by: John Lapeyre <[email protected]>

* Apply suggestions from code review

Co-authored-by: John Lapeyre <[email protected]>

* Empty commit to retrigger CI after github outage

* Apply suggestions from code review

Co-authored-by: Kevin Krsulich <[email protected]>

---------

Co-authored-by: Luciano Bello <[email protected]>
Co-authored-by: Kevin Krsulich <[email protected]>
Co-authored-by: John Lapeyre <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>
  • Loading branch information
5 people authored May 4, 2023
1 parent 35f7b67 commit a259fd8
Show file tree
Hide file tree
Showing 116 changed files with 572 additions and 577 deletions.
2 changes: 1 addition & 1 deletion qiskit/VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.24.0rc1
0.24.0
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ def _mcsu2_real_diagonal(
):
"""
Apply multi-controlled SU(2) gate with a real main diagonal or secondary diagonal.
https://arxiv.org/abs/2302.06377
The algorithm this method implements is described in: https://arxiv.org/abs/2302.06377
Args:
circuit (QuantumCircuit): The QuantumCircuit object to apply the diagonal operator on.
Expand Down
34 changes: 34 additions & 0 deletions releasenotes/config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
---
encoding: utf8
default_branch: main
collapse_pre_releases: true
sections:
- [features, New Features]
- [features_transpiler, Transpiler Features, 2]
- [features_circuits, Circuits Features, 2]
- [features_algorithms, Algorithms Features, 2]
- [features_quantum_info, Quantum Information Features, 2]
- [features_pulse, Pulse Features, 2]
- [features_providers, Providers Features, 2]
- [features_primitives, Primitives Features, 2]
- [features_visualization, Visualization Features, 2]
- [issues, Known Issues]
- [upgrade, Upgrade Notes]
- [upgrade_transpiler, Transpiler Upgrade Notes, 2]
- [upgrade_circuits, Circuits Upgrade Notes, 2]
- [upgrade_algorithms, Algorithms Upgrade Notes, 2]
- [upgrade_quantum_info, Quantum Information Upgrade Notes, 2]
- [upgrade_pulse, Pulse Upgrade Notes, 2]
- [upgrade_providers, Providers Upgrade Notes, 2]
- [upgrade_primitives, Primitives Upgrade Notes, 2]
- [upgrade_visualization, Visualization Upgrade Notes, 2]
- [deprecations, Deprecation Notes]
- [deprecations_transpiler, Transpiler Deprecations, 2]
- [deprecations_circuits, Circuits Deprecations, 2]
- [deprecations_algorithms, Algorithms Deprecations, 2]
- [deprecations_quantum_info, Quantum Information Deprecations, 2]
- [deprecations_pulse, Pulse Deprecations, 2]
- [deprecations_providers, Providers Deprecations, 2]
- [deprecations_primitives, Primitives Deprecations, 2]
- [deprecations_visualization, Visualization Deprecations, 2]
- [critical, Critical Issues]
- [security, Security Issues]
- [fixes, Bug Fixes]
- [other, Other Notes]
11 changes: 7 additions & 4 deletions releasenotes/notes/0.24/6110-709f6fa891bdb26b.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
upgrade:
upgrade_transpiler:
- |
For the class :class:`~DagDepNode`, the previously deprecated ``condition``
attribute has been removed. It was deprecated since 0.18 release.
You can use :meth:`~DAGDepNode.op.condition~ if the ``DAGDepNode`` is of type ``op``.
The previously deprecated ``condition`` attribute of the
:class:`~.DAGDepNode` class has been removed. It was marked as deprecated
in the 0.18 release (07-2021). Instead you should use the
:attr:`~.Instruction.condition` attribute of the ``op`` attribute to
access the condition of an operation node. For other node types there
is no condition to access.
16 changes: 10 additions & 6 deletions releasenotes/notes/0.24/adapt-vqe-thresholds-239ed9f250c63e71.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
---
features:
features_algorithms:
- |
Adds the new :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.eigenvalue_threshold`
setting which allows configuring a new kind of threshold to terminate the algorithm once
Added a new attribute :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.eigenvalue_threshold`
to the :class:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE` class for
configuring a new kind of threshold to terminate the algorithm once
the eigenvalue changes less than a set value.
- |
Adds the new :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.gradient_threshold`
setting which will replace the :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.threshold`
in the future.
Added a new attribute :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.gradient_threshold`
to the :class:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE` class
which will replace the :attr:`~qiskit.algorithms.minimum_eigensolvers.AdaptVQE.threshold` in the
future. This new attribute behaves the same as the existing ``threshold`` attribute but has a more
accurate name, given the introduction of additional threshold options
in the class.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
features:
features_transpiler:
- |
Added an alternative way to specify in :class:`~.HLSConfig` the list of
synthesis methods used for a given high-level-object.
synthesis methods used for a given high-level object.
As before, a synthesis method can be specified as a tuple consisting of
the name of the method and additional arguments. Additionally, a synthesis method
can be specified as a tuple consisting of an instance of :class:`.HighLevelSynthesisPlugin`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
features:
features_quantum_info:
- |
Added :meth:`.Clifford.from_matrix` and :meth:`.Clifford.from_operator` method that
creates a ``Clifford`` object from its unitary matrix and operator representation respectively.
Added two new constructor methods, :meth:`.Clifford.from_matrix` and
:meth:`.Clifford.from_operator`, that create a :class:`~.Clifford` object
from its unitary matrix and operator representation respectively.
- |
The constructor of :class:`.Clifford` now can take any Clifford gate object up to 3 qubits
as long it supports :meth:`to_matrix` method,
including parameterized gates such as ``Rz(pi/2)``, which were not convertible before.
The constructor of :class:`.Clifford` now can take any Clifford gate object
up to 3 qubits as long it implements a ``to_matrix`` method,
including parameterized gates such as ``Rz(pi/2)``, which were not
convertible before.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
features:
features_transpiler:
- |
Added support to the :class:`~.CouplingMap` object to have a disjoint
connectivity. Previously, a :class:`~.CouplingMap` could only be
Expand Down
10 changes: 6 additions & 4 deletions releasenotes/notes/0.24/add-commutator-96ef07433e8ca4e7.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
features:
features_quantum_info:
- |
Add utility functions :func:`~qiskit.quantum_info.commutator`,
Added new utility functions: :func:`~qiskit.quantum_info.commutator`,
:func:`~qiskit.quantum_info.anti_commutator`, and
:func:`~qiskit.quantum_info.double_commutator` to compute commutators
for any objects implementing a :class:`.LinearOp`.
:func:`~qiskit.quantum_info.double_commutator` which are used to compute
commutators for any object implementing the ``LinearOp`` abstract base
class such as :class:`~.QuantumChannel`, :class:`~.SparsePauliOp`, or
:class:`~.ScalarOp`.
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
---
features:
features_transpiler:
- |
Added a decomposition of an :class:`.CXGate` into :class:`.ECRGate` and 1-qubit Clifford gates
(up to a global phase) into the :class:`.EquivalenceLibrary`.
- |
Added a decomposition of an :class:`.HGate` into :class:`.SXGate` and :class:`.SGate`
(up to a global phase) into the :class:`.EquivalenceLibrary`.
- |
Added a decomposition of an :class:`.HGate` into :class:`.SXdgGate` and :class:`.SdgGate`
(up to a global phase) into the :class:`.EquivalenceLibrary`.
Added new rules to the built-in :class:`.EquivalenceLibrary` instance:
``qiskit.circuit.equivalence_library.SessionEquivalenceLibrary``. The
new rules added are:
* :class:`.CXGate` into :class:`.ECRGate` and 1-qubit Clifford gates
(up to a global phase).
* :class:`.HGate` into :class:`.SXGate` and :class:`.SGate` (up to a
global phase).
* :class:`.HGate` into :class:`.SXdgGate` and :class:`.SdgGate` (up to a
global phase).
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
features:
features_quantum_info:
- |
Added the method :class:`.StabilizerState.equiv`,
that checks if the generating sets of two stabilizer states generate the same stabilizer group.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
features:
features_circuits:
- |
Added :class:`.GlobalPhaseGate` which can be applied to add a global phase
on the :class:`.QuantumCircuit`.
Added a new gate class, :class:`.GlobalPhaseGate`, which can be used to add
a global phase on the :class:`.QuantumCircuit` instance.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
features:
features_transpiler:
- |
Added high-level-synthesis plugins for :class:`.LinearFunction` and for
:class:`qiskit.quantum_info.Clifford`, extending the set of synthesis
Expand Down
5 changes: 0 additions & 5 deletions releasenotes/notes/0.24/add-inverse-ecr-e03720252a0c9c1e.yaml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
features:
features_circuits:
- |
Added a new attribute, :attr:`~.QuantumCircuit.layout`, to the
:class:`~.QuantumCircuit` class. This attribute is typically populated
by :func:`~.transpile` or :class:`.PassManager.run` (when the
by :func:`~.transpile` or :meth:`.PassManager.run` (when the
:ref:`layout_stage` and :ref:`routing_stage` are run in the
:class:`~PassManager`) and contains a :class:`~.TranspileLayout` which
:class:`~.PassManager`) and contains a :class:`~.TranspileLayout` which
contains the information about the permutation of the input circuit
during :class:`~.transpile`.
during :func:`~.transpile`.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
features:
features_transpiler:
- |
Added a new transpiler pass, :class:`~.MinimumPoint` which is used primarily as
a pass to check a loop condition in a :class:`~.PassManager`. This pass will
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
---
features:
features_pulse:
- |
The ``SymbolicPulse`` library was extended. The new pulses in the library are:
Added new :class:`~.SymbolicPulse` classes to the pulse library (:mod:`qiskit.pulse.library`)
The new pulses in the library are:
* :class:``~qiskit.pulse.library.Sin``
* :class:``~qiskit.pulse.library.Cos``
* :class:``~qiskit.pulse.library.Sawtooth``
* :class:``~qiskit.pulse.library.Triangle``
* :class:`~qiskit.pulse.library.Sin`
* :class:`~qiskit.pulse.library.Cos`
* :class:`~qiskit.pulse.library.Sawtooth`
* :class:`~qiskit.pulse.library.Triangle`
The new functions return a ``ScalableSymbolicPulse``. With the exception of the ``Sawtooth`` phase,
behaviour is identical to that of the corresponding waveform generators (:class:``~qiskit.pulse.library.sin`` etc).
The ``Sawtooth`` phase is defined such that a phase of :math:``2\\pi`` shifts by a full cycle.
These new classes are instances of :class:`~.ScalableSymbolicPulse`. With the exception of
the :class:`~.Sawtooth` phase, behavior is identical to that of the corresponding waveform generator
function (e.g. :func:`~qiskit.pulse.library.sin`). The phase for the :class:`~.Sawtooth` class
is defined such that a phase of :math:`2\pi` shifts by a full cycle.
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
features:
features_pulse:
- |
QPY supports pulse :class:`~.ScheduleBlock` with unassigned reference,
and preserves the data structure for the reference to subroutines.
This feature allows to save a template pulse program for tasks such as pulse calibration.
Added support to QPY (:mod:`qiskit.qpy`) for working with pulse
:class:`~.ScheduleBlock` instances with unassigned references,
and preserving the data structure for the reference to subroutines.
This feature allows users to serialize and deserialize a template pulse
program for tasks such as pulse calibration. For example:
.. code-block:: python
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
features:
features_transpiler:
- |
Added method on :class:`qiskit.dagcircuit.DAGCircuit` to allow swapping
nodes which are partially connected. Partially connected here means that
the two nodes share at least one edge/qubit. If the nodes do not share
any edges a DAGCircuitError is raised.
Added a new method, :meth:`~.DAGCircuit.swap_nodes`, to the
:class:`~.DAGCircuit` to allow swapping nodes which are partially
connected. Partially connected here means that the two nodes share at
least one edge (which represents a qubit or clbit). If the nodes do not
share any edges a :class:`~.DAGCircuitError` is raised.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@

features:
features_quantum_info:
- |
The partial transpose operation has been integrated into the quantum_info module, allowing for partial transposition of matrices.
This operation is key in detecting entanglement between bipartite quantum system.
Added a new method, :meth:`~.DensityMatrix.partial_transpose`, to the
:mod:`qiskit.quantum_info` module's :class:`~.DensityMatrix` class. This
method is used to compute the partial transposition of a density matrix,
which is necessary for detecting entanglement between bipartite quantum
systems.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ fixes:
The :class:`.AmplitudeEstimation` class now correctly warns if an :class:`.EstimationProblem`
with a set ``is_good_state`` property is passed as input, as it is not supported and ignored.
Previously, the algorithm would silently ignore this option leading to unexpected results.
features:
features_algorithms:
- |
Added the :attr:`.EstimationProblem.has_good_state` attribute, which allows to check
whether an :class:`.EstimationProblem` has a custom :attr:`.EstimationProblem.is_good_state`
Expand Down
2 changes: 1 addition & 1 deletion releasenotes/notes/0.24/bump-msrv-f6f2bd42b9636b5e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ upgrade:
The minimum supported Rust version (MSRV) has been increased from 1.56.1
to 1.61.0. If you're are building Qiskit from source you will now need to
ensure that you have at least Rust 1.61.0 installed to be able to build
Qiskit. This change was made as our upstream dependencies have increased
Qiskit. This change was made because several upstream dependencies have increased
their MSRVs.
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
upgrade:
upgrade_circuits:
- |
The :class:`.QuantumCircuit` :attr:`.QuantumCircuit.metadata` attribute now
always returns a dictionary, and can only be set to a dictionary. Previously,
its default value was ``None``, and could be manually set to ``None`` or a
The :class:`.QuantumCircuit` :attr:`~.QuantumCircuit.metadata` attribute now
always returns a dictionary, and can only be set to a dictionary. Previously,
its default value was ``None``, and could be manually set to ``None`` or a
dictionary.
upgrade_transpiler:
- |
The default value of ``metadata`` in both :class:`.DAGCircuit` and
The default value of ``metadata`` in both :class:`.DAGCircuit` and
:class:`.DAGDependency` has been changed from ``None`` to ``{}`` for compatibility
with a similar attribute of :class:`.QuantumCircuit`.
deprecations:
with the matching ``metadata`` attribute of :class:`.QuantumCircuit`.
deprecations_circuits:
- |
Setting the :class:`.QuantumCircuit` :attr:`.QuantumCircuit.metadata` attribute
to ``None`` has been deprecated. Instead, users should set it to an empty
dictionary if they want it to contain no data.
Setting the :class:`.QuantumCircuit` :attr:`~.QuantumCircuit.metadata` attribute
to ``None`` has been deprecated and will no longer be supported in a future
release. Instead, users should set it to an empty dictionary if they want
it to contain no data.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
features:
features_transpiler:
- |
Add a new synthesis algorithm :class:`.synth_cz_depth_line_mr` of a CZ circuit
Add a new synthesis algorithm :func:`~.synth_cz_depth_line_mr` of a CZ circuit
for linear nearest neighbor (LNN) connectivity in 2-qubit depth of 2n+2
using CX and phase gates (S, Sdg or Z). The synthesized circuit reverts
the order of the qubits. The synthesis algorithm is based on the paper of Maslov and Roetteler
(https://arxiv.org/abs/1705.09176).
- |
Add a new synthesis algorithm :class:`.synth_clifford_depth_lnn` of a Clifford circuit
Add a new synthesis algorithm :func:`~.synth_clifford_depth_lnn` of a Clifford circuit
for LNN connectivity in 2-qubit depth of 9n+4 (which is still not optimal),
using the layered Clifford synthesis (:class:`.synth_clifford_layers`),
:class:`.synth_cnot_depth_line_kms` to synthesize the CX layer in depth 5n,
and :class:`.synth_cz_depth_line_mr` to synthesize each of the CZ layers in depth 2n+2.
using the layered Clifford synthesis (:func:`~.synth_clifford_layers`),
:func:`~.synth_cnot_depth_line_kms` to synthesize the CX layer in depth 5n,
and :func:`~.synth_cz_depth_line_mr` to synthesize each of the CZ layers in depth 2n+2.
This PR will be followed by another PR based on the recent paper of Maslov and Yang
(https://arxiv.org/abs/2210.16195), that synthesizes the CX-CZ layers in depth 5n
for LNN connectivity and performs further optimization, and hence reduces the depth
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
features:
features_algorithms:
- |
Adds a flag ``local`` to the :class:`~.ComputeUncompute` state fidelity class that
allows to compute the local fidelity, which is defined by averaging over
Adds a flag ``local`` to the :class:`~.ComputeUncompute` state fidelity class that
allows to compute the local fidelity, which is defined by averaging over
single-qubit projectors.
4 changes: 2 additions & 2 deletions releasenotes/notes/0.24/coupling-map-eq-b0507b703d62a5f3.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
upgrade:
upgrade_transpiler:
- |
The :meth:`.CouplingMap.__eq__`` method has been updated to check that the edge lists of the
underlying graphs contain the same elements. Under the assumption that the underlying graphs are
connected, this check additionally ensures that the graphs have the same number of nodes with
the same labels. Any code using ``CouplingMap() == CouplingMap()`` to check object equality
should be updated to ``CouplingMap() is CouplingMap()``.
should be updated to ``CouplingMap() is CouplingMap()``.
Loading

0 comments on commit a259fd8

Please sign in to comment.