Skip to content

Commit 88df8ee

Browse files
ElePTmtreinishbeckykd1ucian0raynelfss
authored
Prepare 2.0.0 release (#14021)
This commit prepares the repo for the 2.0.0 release. It migrates all the release notes to a dedicated directory to differentiate those notes from future notes (this will need to be forward ported to the main branch), updates the version numbers to indicate it is the final 2.0.0 release, and updates the release notes to prepare them for publishing. Once this merges this commit should be used to tag the 2.0.0 release. * Add prelude * Edit renos a-b * Edit more renos * Fix code block indentation * Update prelude * Update remaining renos * Attempt at fixing indentation issue * Add missing renos * Fix indentation? * Apply suggestions from Becky's code review * Apply inline suggestions from Matt's code review Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Rebecca Dimock <[email protected]> * Apply content-related comments from Matt's code review * Remove duplicated renos (1.3) * Remove duplicated renos (1.4) * Update prelude * Undo oops * Apply suggestion from Luciano's code review Co-authored-by: Luciano Bello <[email protected]> * Update prelude and 64 bit reno * Apply suggestions from Ray's code review Co-authored-by: Raynel Sanchez <[email protected]> * Fix typo in release notes heirarchy -> hierarchy This line is edited again to insert a version number in #14021 but I don't have the right to comment there. * Add missing renos * Add `box` release note * Move reno and update release highlights with box * Update version from rc2 to 2.0.0 * Minor edits * Apply suggestions from Matt & Julien's code review Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Julien Gacon <[email protected]> * Update releasenotes/notes/2.0/deprecate_arguments_and_deprecate_function-5e19f6f049fa489c.yaml Co-authored-by: Matthew Treinish <[email protected]> * Add rudimentary docs for BoxOp * Fix sphinx formatting issues * We don't see danger * Final edits * Fix lint --------- Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Rebecca Dimock <[email protected]> Co-authored-by: Luciano Bello <[email protected]> Co-authored-by: Raynel Sanchez <[email protected]> Co-authored-by: Albert Pool <[email protected]> Co-authored-by: Jake Lishman <[email protected]> Co-authored-by: Julien Gacon <[email protected]>
1 parent ef9f877 commit 88df8ee

File tree

124 files changed

+652
-792
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+652
-792
lines changed

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
# The short X.Y version
3333
version = "2.0"
3434
# The full version, including alpha/beta/rc tags
35-
release = "2.0.0rc2"
35+
release = "2.0.0"
3636

3737
language = "en"
3838

docs/release_notes.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Qiskit |version| release notes
1010
`:earliest-version:` should be set to the rc1 release for the current minor release series. For example, the stable/1.1 branch should set it to 1.1.0rc1. If on `main`, set to the prior minor version's rc1, like `1.0.0rc1`.
1111

1212
.. release-notes::
13-
:earliest-version: 1.1.0rc1
13+
:earliest-version: 2.0.0rc1

qiskit/VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.0.0rc2
1+
2.0.0

qiskit/circuit/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,8 @@
272272
* :class:`ForLoopOp`, to loop over a fixed range of values
273273
* :class:`IfElseOp`, to conditionally enter one of two subcircuits
274274
* :class:`SwitchCaseOp`, to conditionally enter one of many subcircuits
275-
* :class:`WhileLoopOp`, to repeat a subcircuit until a condition is falsified.
275+
* :class:`WhileLoopOp`, to repeat a subcircuit until a condition is falsified
276+
* :class:`BoxOp`, to group a series of instructions for later processing
276277
277278
:ref:`Circuits can include classical expressions that are evaluated in real time
278279
<circuit-repr-real-time-classical>`, while the QPU is executing a single shot of the circuit. These
@@ -559,6 +560,8 @@
559560
560561
.. autoclass:: Delay
561562
:show-inheritance:
563+
.. autoclass:: Duration
564+
562565
563566
The :class:`Barrier` instruction can span an arbitrary number of qubits and clbits, and is a no-op
564567
in hardware. During transpilation and optimization, however, it blocks any optimizations from
@@ -708,9 +711,9 @@
708711
.. autofunction:: get_control_flow_name_mapping
709712
710713
These control-flow operations (:class:`IfElseOp`, :class:`WhileLoopOp`,
711-
:class:`SwitchCaseOp` and :class:`ForLoopOp`) all have specific state that defines the branching
712-
conditions and strategies, but contain all the different subcircuit blocks that might be entered in
713-
their :attr:`~ControlFlowOp.blocks` property.
714+
:class:`SwitchCaseOp`, :class:`ForLoopOp` and :class:`BoxOp`) all have specific state that defines
715+
the branching conditions and strategies, but contain all the different subcircuit blocks that
716+
might be entered in their :attr:`~ControlFlowOp.blocks` property.
714717
715718
.. autosummary::
716719
:toctree: ../stubs/
@@ -719,6 +722,7 @@
719722
WhileLoopOp
720723
SwitchCaseOp
721724
ForLoopOp
725+
BoxOp
722726
723727
The :class:`.SwitchCaseOp` also understands a special value:
724728

qiskit/transpiler/passes/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
Split2QUnitaries
9292
RemoveIdentityEquivalent
9393
ContractIdleWiresInControlFlow
94+
LightCone
9495
9596
Scheduling
9697
=============
@@ -225,6 +226,7 @@
225226
from .optimization import RemoveIdentityEquivalent
226227
from .optimization import Split2QUnitaries
227228
from .optimization import ContractIdleWiresInControlFlow
229+
from .optimization import LightCone
228230

229231
# circuit analysis
230232
from .analysis import ResourceEstimation

qiskit/transpiler/passes/optimization/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@
3939
from .split_2q_unitaries import Split2QUnitaries
4040
from .collect_and_collapse import CollectAndCollapse
4141
from .contract_idle_wires_in_control_flow import ContractIdleWiresInControlFlow
42+
from .light_cone import LightCone
Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
---
22
upgrade:
33
- |
4-
Qiskit no longer supports Linux i686 and 32 bit Windows. Starting in Qiskit
5-
2.0 a 64 bit platform is needed to run Qiskit. The user base for 32bit
6-
architectures is relatively small and as Qiskit continues to focus on
7-
improving performance to handle the increased scale in the complexity
8-
of quantum computing hardware maintaining support for 32 bit platforms
9-
is proving increasingly difficult. This coupled with the larger
10-
scientific/numeric Python community's trend away from 32 bit platform
11-
support maintaining support for 32bit platforms is no longer viable.
12-
Qiskit 1.x will still continue to support 32 bit platforms, but starting
13-
in this 2.0.0 release Qiskit no longer supports these platforms, will
14-
not publish pre-compiled binaries for these platforms any longer, and
15-
there is no longer any guarantee of being able to build from source on
16-
32 bit platforms.
4+
Qiskit v2.0 has dropped support for Linux i686 and 32-bit Windows. Starting in Qiskit
5+
v2.0.0, a 64-bit platform is required to run Qiskit.
6+
This aligns with the trend in the scientific Python community and allows Qiskit to
7+
focus on performance improvements for increasingly complex quantum computing hardware.
8+
9+
Qiskit v1.4 will continue to support 32-bit platforms until end-of-life (September 2025),
10+
but starting in this 2.0.0 release, Qiskit will no
11+
longer publish pre-compiled binaries for them, and offers no guarantee of
12+
successful source builds on 32-bit platforms.

releasenotes/notes/2.0/add-2q-fractional-gates-to-consolidate-blocks-pass-65fadda8ba17c831.yaml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
---
22
features_transpiler:
33
- |
4-
Added support for two-qubit fractional basis gates, such as :class:`.RZZGate`, to the
5-
:class:`.ConsolidateBlocks` transpiler pass. The decomposition itself is done using the
6-
:class:`.TwoQubitControlledUDecomposer`.
4+
Added support for working with :class:`.Target` objects that contain two-qubit
5+
basis gates that contain arbitrary angles, such as :class:`.RZZGate`, to the
6+
:class:`.ConsolidateBlocks` transpiler pass. The pass previously would not
7+
correctly estimate the number of gates required for a decomposition which
8+
would result in blocks not being consolidated where :class:`.UnitarySynthesis`
9+
could potentially optimize the block. Internally, the gate count estimate is
10+
done using the :class:`.TwoQubitControlledUDecomposer` class.
711
812
For example::
913
@@ -14,6 +18,7 @@ features_transpiler:
1418
qc = QuantumCircuit(2)
1519
qc.rzz(0.1, 0, 1)
1620
qc.rzz(0.2, 0, 1)
21+
# basis_gates contains fractional gate (rzz)
1722
consolidate_pass = ConsolidateBlocks(basis_gates=["rz", "rzz", "sx", "x", "rx"])
1823
block = consolidate_pass(qc) # consolidate the circuit into a single unitary block
1924
block.draw(output='mpl')

releasenotes/notes/2.0/add-2q-fractional-gates-to-unitarysynthesis-pass-f66eee29903f5639.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
features_synthesis:
33
- |
4-
Add a :class:`.TwoQubitControlledUDecomposer` that decomposes any two-qubit unitary
4+
Added a new :class:`.TwoQubitControlledUDecomposer` class that decomposes any two-qubit unitary
55
in terms of basis two-qubit fractional gates, such as :class:`.RZZGate`
6-
(or two-gates gates which are locally equivalent to :class:`.RZZGate` up to single qubit gates).
6+
(or two-qubit gates that are locally equivalent to :class:`.RZZGate`, up to single qubit gates).
77
88
For example::
99
@@ -33,5 +33,7 @@ features_transpiler:
3333
qc = QuantumCircuit(2)
3434
qc.append(unitary, [0, 1])
3535
dag = circuit_to_dag(qc)
36+
37+
# basis_gates contains fractional gate (rzz)
3638
circ = UnitarySynthesis(basis_gates=['rzz', 'rx', 'rz']).run(dag)
3739
dag_to_circuit(circ).draw(output='mpl')

releasenotes/notes/2.0/add-bit-register-rust-979dd113aefb3563.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ upgrade_circuits:
1111
this as an implementation detail of the classes.
1212
- |
1313
It is no longer possible to create instances of the base :class:`.Bit` and
14-
:class:`.Register` classes is no longer possible. Directly instantiating
15-
these classes was clearly documented as something that was **not** supported
16-
and being able to do it was was just an implementation artifact of how the
17-
class heirarchy in previous releases. Starting in this release it is no longer
14+
:class:`.Register` classes. Directly instantiating
15+
these classes was clearly documented as something that was **not** supported,
16+
and being able to do it was was just an implementation artifact of the
17+
class hierarchy in previous releases. Starting in Qiskit v2.0.0, it is no longer
1818
possible to do this.
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
features_primitives:
33
- |
4-
Added :meth:`~BitArray.to_bool_array` method to :class:`~BitArray` class that returns the bit array
5-
as a boolean NumPy array. The ``order`` argument can be used to specify the endianness of the output array.
4+
Added a new :meth:`~.BitArray.to_bool_array` method to the :class:`.BitArray` class
5+
that returns the bit array as a boolean NumPy array. The ``order`` argument can be
6+
used to specify the endianness of the output array.

releasenotes/notes/2.0/add-ctrl-flow-name-mapping-21842a23726e6e77.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
features_circuits:
33
- |
44
Added a new :func:`.get_control_flow_name_mapping` convenience function that returns a
5-
mapping of Qiskit's control-flow operation names to their corresponding class.
5+
mapping of Qiskit control-flow operation names to their corresponding classes.
6+
67
Example usage:
78
89
.. code-block:: python
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
---
22
features_providers:
33
- |
4-
Added the ability to set the ``dt`` property of :class:`.GenericBackendV2` in the class initializer
5-
with a new ``dt`` argument. Example usage::
4+
Added the ability to set the ``dt`` property of :class:`.GenericBackendV2` in the class
5+
initializer with a new ``dt`` argument. Example usage::
66
77
from qiskit.providers.fake_provider import GenericBackendV2
8+
89
backend = GenericBackendV2(
9-
num_qubits=5,
10-
basis_gates=["cx", "id", "rz", "sx", "x"],
11-
dt= 2.22*e-10,
12-
seed=42)
10+
num_qubits = 5,
11+
basis_gates = ["cx", "id", "rz", "sx", "x"],
12+
dt = 2.22*e-10,
13+
seed = 42
14+
)
Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,26 @@
11
---
22
features_circuits:
33
- |
4-
Added a new method, :meth:`.QuantumCircuit.estimate_duration`, to compute
5-
the estimated duration of a scheduled circuit output from the :mod:`.transpiler`.
6-
This should be used if you need an estimate of the full circuit duration instead
7-
of the deprecated :attr:`.QuantumCircuit.duration` attribute.
4+
Added a new circuit method, :meth:`.QuantumCircuit.estimate_duration`, to estimate the duration of
5+
a scheduled circuit after transpilation. The circuit duration is estimated by finding the
6+
longest path on a scheduled circuit based on the durations provided by a given :class:`.Target`.
7+
This method only works for simple circuits that do not contain control flow or other classical
8+
feed-forward operations.
9+
10+
Use this method instead of the deprecated :attr:`.QuantumCircuit.duration` attribute if you need an estimate of the full circuit duration.
11+
12+
Example usage::
13+
14+
from qiskit import QuantumCircuit, transpile
15+
from qiskit.providers.fake_provider import GenericBackendV2
16+
17+
backend = GenericBackendV2(num_qubits=3, seed=42)
18+
19+
circ = QuantumCircuit(3)
20+
circ.cx(0, 1)
21+
circ.measure_all()
22+
circ.delay(1e15, 2)
23+
24+
circuit_dt = transpile(circ, backend, scheduling_method="asap")
25+
duration = circuit_dt.estimate_duration(backend.target, unit="s")
26+
print("Estimated duration: ", duration)

releasenotes/notes/2.0/add-light-cone-pass-6c56085734512e98.yaml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
---
22
features_transpiler:
33
- |
4-
Added a new transpiler pass, :class:`.LightCone` that is used
5-
to get the lightcone of a circuit when measuring a subset of
6-
qubits or a specific Pauli string.
7-
For example if you had a circuit like:
4+
Added a new transpiler pass, :class:`.LightCone`, that returns the lightcone of a
5+
circuit when measuring a subset of qubits or a specific Pauli string.
6+
7+
For example, for the following circuit:
88
99
.. plot::
1010
11-
from qiskit.transpiler.passes.optimization.light_cone import LightCone
12-
from qiskit.transpiler.passmanager import PassManager
1311
from qiskit.circuit import QuantumCircuit
1412
1513
qc = QuantumCircuit(3,1)
@@ -21,8 +19,7 @@ features_transpiler:
2119
2220
qc.draw("mpl")
2321
24-
running the pass would eliminate the gates that do not affect the
25-
outcome.
22+
running the pass would eliminate the gates that do not affect the outcome:
2623
2724
.. plot::
2825
:include-source:

releasenotes/notes/2.0/add-max-block-width-arg-e3677a2d26575a73.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
features_transpiler:
33
- |
4-
Added a new argument ``max_block_width`` to the class :class:`.BlockCollector`
5-
and to the transpiler passes :class:`.CollectLinearFunctions` and :class:`.CollectCliffords`.
6-
This argument allows to restrict the maximum number of qubits over which a block of nodes is
7-
defined.
4+
Added a new argument ``max_block_width`` to the :class:`.BlockCollector` class
5+
and to the :class:`.CollectLinearFunctions` and :class:`.CollectCliffords` transpiler passes.
6+
This argument allows you to restrict the maximum number of qubits over which a block of nodes
7+
is defined.
88
99
For example::
1010

releasenotes/notes/2.0/add-option-collect-from-back-cde10ee5e2e4ea9f.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
features_transpiler:
33
- |
4-
Added a new option, ``collect_from_back``, to
5-
:class:`~qiskit.transpiler.passes.CollectMultiQBlocks`.
4+
Added a new option, ``collect_from_back``, to the
5+
:class:`~qiskit.transpiler.passes.CollectMultiQBlocks` transpiler pass.
66
When set to ``True``, the blocks are collected in the reverse direction,
7-
from the outputs towards the inputs of the circuit. The blocks are still
7+
from the outputs toward the inputs of the circuit. The blocks are still
88
reported following the normal topological order.
99
This leads to an additional flexibility provided by the pass, and
1010
additional optimization opportunities when combined with a circuit

releasenotes/notes/2.0/arm-linux-tier1-fa79edaabf565685.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ features:
33
- |
44
Support for the Linux aarch64 platform has been promoted to tier 1 support as documented in:
55
6-
https://docs.quantum.ibm.com/guides/install-qiskit#operating-system-support
6+
https://quantum.cloud.ibm.com/docs/guides/install-qiskit#operating-system-support
77
8-
from its previous support level of tier 2 in the 1.x release series.
8+
from its previous support level of tier 2 in the v1.x release series.
9+

releasenotes/notes/2.0/barrier-label-position-reverse-bits-41819043ebb3d701.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)