Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare 1.0.0 release #11760

Merged
merged 28 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3ca4709
Prepare 1.0.0 release
mtreinish Feb 9, 2024
18c45c9
Apply suggestions from code review
mtreinish Feb 10, 2024
a637ea2
Update releasenotes/notes/1.0/prepare-1.0-e13b9b8273055775.yaml
mtreinish Feb 12, 2024
c936720
Apply suggestions from code review
mtreinish Feb 12, 2024
a634bae
typos in 1.0 renos (#20)
1ucian0 Feb 13, 2024
0d5629e
Update release notes
mtreinish Feb 13, 2024
88dbc00
Prepare 1.0 typos - part 2 (#21)
1ucian0 Feb 13, 2024
302fc87
Fix docs build
mtreinish Feb 13, 2024
5bbcad6
Apply suggestions from code review
mtreinish Feb 13, 2024
fd37f15
Update releasenotes/notes/1.0/prepare-1.0-e13b9b8273055775.yaml
mtreinish Feb 13, 2024
6161317
Update release notes rst file
mtreinish Feb 14, 2024
d1ef68c
Various fixes, up to deprecation notes
ElePT Feb 14, 2024
39fa898
Update "deprecation" release notes
mtreinish Feb 14, 2024
62f1335
Update qiskit/circuit/__init__.py
mtreinish Feb 14, 2024
6bf9859
Add missing link
mtreinish Feb 14, 2024
5e0ffeb
Fix typo
mtreinish Feb 14, 2024
655b9f5
Update releasenotes/notes/1.0/prepare-1.0-e13b9b8273055775.yaml
mtreinish Feb 14, 2024
dde35c5
Tweak wording on backwards compatibility guarantees
mtreinish Feb 14, 2024
2e8fdae
Fix broken link
mtreinish Feb 14, 2024
bda826e
Fix bullet misinterpreted as definition
jakelishman Feb 15, 2024
6c3b74e
Fix earliest version for 0.46.0
mtreinish Feb 15, 2024
5516038
Add release note subsections
mtreinish Feb 15, 2024
4320f2d
Categorize release notes
mtreinish Feb 15, 2024
01263cb
Add missing subsections to qinfo synthesis release note
mtreinish Feb 15, 2024
d10fc73
Copy edit release notes
jakelishman Feb 15, 2024
674ed7d
Move new release notes
mtreinish Feb 15, 2024
04918ed
Apply suggestions from code review
mtreinish Feb 15, 2024
ea105ac
Remove duplicated release note
mtreinish Feb 15, 2024
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
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
# The short X.Y version
version = "1.0"
# The full version, including alpha/beta/rc tags
release = "1.0.0rc1"
release = "1.0.0"

language = "en"

Expand Down
6 changes: 2 additions & 4 deletions docs/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,16 @@
Release Notes
=============

This page contains the release notes for Qiskit, starting from Qiskit 0.45, the first time that Qiskit and Qiskit Terra had the same versions.

..
These release notes get converted into Markdown files via the infrastructure at https://github.com/Qiskit/documentation, which then gets deployed to https://docs.quantum.ibm.com/api/qiskit/release-notes. Changes to these release notes will update those release notes the next time the API docs are generated.

To change release notes prior to Qiskit 0.45, update the Qiskit/documentation repository directly.

.. release-notes::
:earliest-version: 0.45.0rc1
:earliest-version: 1.0.0rc1

.. release-notes::
:earliest-version: 0.45.0
:earliest-version: 0.46.0
:branch: stable/0.46

.. release-notes::
Expand Down
2 changes: 1 addition & 1 deletion qiskit/VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0rc1
1.0.0
21 changes: 21 additions & 0 deletions qiskit/circuit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,18 @@
Operation
EquivalenceLibrary

Annotated Operations
--------------------

.. autosummary::
:toctree: ../stubs/


AnnotatedOperation
InverseModifier
ControlModifier
PowerModifier

Control Flow Operations
-----------------------

Expand Down Expand Up @@ -344,6 +356,15 @@
ParameterVector
ParameterExpression

Gate Commutation
----------------

.. autosummary::
:toctree: ../stubs/

CommutationChecker


Random Circuits
---------------

Expand Down
45 changes: 45 additions & 0 deletions releasenotes/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,48 @@ default_branch: main
collapse_pre_releases: true
pre_release_tag_re: (?P<pre_release>(?:[ab]|rc|pre)+\d*)$
unreleased_version_title: Unreleased Notes Preview
sections:
- [features, New Features]
- [features_algorithms, Algorithms Features]
- [features_circuits, Circuits Features]
- [features_primitives, Primitives Features]
- [features_providers, Providers Features]
- [features_pulse, Pulse Features]
- [features_qasm, OpenQASM Features]
- [features_qpy, QPY Features]
- [features_quantum_info, Quantum Information Features]
- [features_synthesis, Synthesis Features]
- [features_transpiler, Transpiler Features]
- [features_visualization, Visualization Features]
- [features_misc, Misc. Features]
- [issues, Known Issues]
- [upgrade, Upgrade Notes]
- [upgrade_algorithms, Algorithms Upgrade Notes]
- [upgrade_circuits, Circuits Upgrade Notes]
- [upgrade_primitives, Primitives Upgrade Notes]
- [upgrade_providers, Providers Upgrade Notes]
- [upgrade_pulse, Pulse Upgrade Notes]
- [upgrade_qasm, OpenQASM Upgrade Notes]
- [upgrade_qpy, QPY Upgrade Notes]
- [upgrade_quantum_info, Quantum Information Upgrade Notes]
- [upgrade_synthesis, Synthesis Upgrade Notes]
- [upgrade_transpiler, Transpiler Upgrade Notes]
- [upgrade_visualization, Visualization Upgrade Notes]
- [upgrade_misc, Misc. Upgrade Notes]
- [deprecations, Deprecation Notes]
- [deprecations_algorithms, Algorithms Deprecations]
- [deprecations_circuits, Circuits Deprecations]
- [deprecations_primitives, Primitives Deprecations]
- [deprecations_providers, Providers Deprecations]
- [deprecations_pulse, Pulse Deprecations]
- [deprecations_qasm, OpenQASM Deprecations]
- [deprecations_qpy, QPY Deprecations]
- [deprecations_quantum_info, Quantum Information Deprecations]
- [deprecations_synthesis, Synthesis Deprecations]
- [deprecations_transpiler, Transpiler Deprecations]
- [deprecations_visualization, Visualization Deprecations]
- [deprecations_misc, Misc. Deprecations]
- [critical, Critical Issues]
- [security, Security Issues]
- [fixes, Bug Fixes]
- [other, Other Notes]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
upgrade_circuits:
- |
The property ``IntegerComparator.num_ancilla_qubits`` is removed, which was
deprecated in Qiskit 0.23 (released in 2020-10). Its functionality is fully covered
by :attr:`.IntegerComparator.num_ancilla`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
upgrade_providers:
- |
Changed default value of two arguments (:code:`add_delay` and :code:`filter_faulty`) in
the :func:`.convert_to_target` function.
This conversion function now adds delay instructions and removes faulty instructions by default.
fixes:
- |
Fixed the return of improper measurement schedules when only a subset of qubits was requested.
Previously, a measurement schedule for all qubits would be returned.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
upgrade:
upgrade_misc:
- |
The variable ``qiskit.__qiskit_version__`` is removed as it was deprecated since
Qiskit 0.44 (released on July 2023).
Qiskit 0.44 (released in 2023-07).
Instead, you should use ``qiskit.__version__``. The other packages listed in the
former ``qiskit.__qiskit_version__`` have their own ``__version__`` module level dunder,
as standard in PEP 8.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
features_circuit:
- |
Added a new argument, ``annotated``, to the methods :meth:`.QuantumCircuit.control`, :meth:`.Gate.control`
and ``.control()`` methods of :class:`.Gate` subclasses (such as :class:`.UnitaryGate` or :class:`.SwapGate`)
to optionally return an :class:`.AnnotatedOperation`.
The default value of ``annotated`` is ``False`` and corresponds to the pre-existing behavior of the method,
for example::

SwapGate().control(1, annotated=False)

returns a :class:`.CSwapGate` while::

SwapGate().control(2, annotated=False)

returns a ``ControlledGate``. When ``annotated=True``, the methods return an object of
type :class:`~.AnnotatedOperation` instead, avoiding the eager construction of the controlled gate's definition.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
features_circuits:
- |
Added a new argument, ``annotated``, to the methods :meth:`.QuantumCircuit.inverse`, :meth:`.circuit.Instruction.inverse`
and ``.inverse()`` methods of :class:`~qiskit.circuit.Instruction` subclasses (such as :class:`.SwapGate` or :class:`.SGate`)
to optionally return an :class:`.AnnotatedOperation`.
The default value of ``annotated`` is ``False`` and corresponds to the pre-existing behavior of the method.
Furthermore, for standard gates with an explicitly defined ``inverse`` method,
the argument ``annotated`` has no effect, for example, both::

SwapGate().inverse(annotated=False)
SwapGate().inverse(annotated=True)

return a :class:`.SwapGate`, and both::

SGate().inverse(annotated=False)
SGate().inverse(annotated=True)

return an :class:`.SdgGate`. The difference manifests for custom instructions without an explicitly defined
inverse. With ``annotated=False``, the method returns a fresh instruction with the recursively inverted definition,
just as before. While ``annotated=True`` returns an :class:`.AnnotatedOperation` that represents the instruction
modified with the :class:`.InverseModifier`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
fixes:
- |
Fixed an issue in the ``text`` circuit drawer when displaying operations
that were not :class:`.circuit.instruction.Instruction` class. These operations
would cause the drawer to fail. Examples were :class:`.Clifford` and
:class:`.AnnotatedOperation`.

features_visualization:
- |
The ``text`` and ``mpl`` outputs for the :meth:`.QuantumCircuit.draw` and
:func:`.circuit_drawer` circuit drawer functions will now display detailed
information for operations of :class:`.AnnotatedOperation`. If the
:attr:`.AnnotatedOperation.modifiers` contains a :class:`.ControlModifier`,
the operation will be displayed the same way as controlled gates. If
the :class:`.InverseModifier` or :class:`.PowerModifier` is used,
these will be indicated with the base operation name. For example:

.. plot::
:include-source:

from qiskit.circuit import (
AnnotatedOperation,
ControlModifier,
PowerModifier,
InverseModifier,
QuantumCircuit
)
from qiskit.circuit.library import SGate

annotated_op = AnnotatedOperation(SGate(), [PowerModifier(3.4), ControlModifier(3), InverseModifier()])
qc = QuantumCircuit(4)
qc.append(annotated_op, range(4))
qc.draw("mpl")
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
features_circuits:
- |
Added a commutation library to the :class:`.CommutationChecker`. This library stores all the
commutation relations of unparameterizable standard gates into a dictionary that allows
for efficient lookup at runtime. This speeds up the execution of the :class:`.CommutationChecker`
class and, by extension, the :class:`.CommutationAnalysis` transpiler pass, as instead of
computing whether two unparameterizable standard gates commute it just has to look it up
from the library.

Additionally, the :class:`.CommutationChecker` was refactored and now has an upper limit
set on the number of cached commutation relations that are not in the commutation library.
This addressed: `#8020 <https://github.com/Qiskit/qiskit/issues/8020>`__ and
`#7101 <https://github.com/Qiskit/qiskit/issues/7101>`__
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
features:
features_transpiler:
- |
Added a new transpiler pass :class:`.FilterOpNodes` which is used to filter
:class:`.DAGOpNode`\s in a :class:`.DAGCircuit`.
- |
Added a new keyword argument, ``label``, to the constructor on the
:class:`.BarrierBeforeFinalMeasurements` transpiler pass. If specified the
inserted barrier will be assigned the specified label. This also prevents
the inserted barrier from being merged with any any other pre-existing
the inserted barrier from being merged with any other pre-existing
adjacent barriers.
other:
- |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
features:
features_providers:
- |
A new class, :class:`.GenericBackendV2` has been added to the :mod:`qiskit.providers.fake_provider`
Added a new class, :class:`.GenericBackendV2`, to the :mod:`qiskit.providers.fake_provider`
module. This class is configurable, and builds a :class:`~.BackendV2` backend instance that can
be run locally (in the spirit of fake backends). Users can configure the number of qubits, basis gates,
coupling map, ability to run dynamic circuits (control flow instructions), instruction calibrations and
dtm of the backend without having to deal with manual target construction.
Qubit and gate properties are generated by randomly sampling from default ranges. The seed for this
measurement timestep of the backend without having to deal with manual target construction.
Qubit and gate properties (duration, error) are generated by randomly sampling from default ranges.
The seed for this
random generation can be fixed to ensure the reproducibility of the backend output.
It's important to note that this backend only supports gates in the standard
library. If you need a more flexible backend, there is always the option to directly instantiate a
Expand Down Expand Up @@ -46,10 +47,15 @@ features:
qc.cx(0, i + 1)
for i in range(18):
qc.measure(i, creg[i])
qc.ecr(20, 21).c_if(creg, 0)
with qc.if_test((creg, 0)):
qc.ecr(20, 21)

# Define backend with custom basis gates and control flow instructions
backend = GenericBackendV2(num_qubits=25, basis_gates = ["ecr","id","rz","sx","x"], control_flow=True)
backend = GenericBackendV2(
num_qubits=25,
basis_gates=["ecr", "id", "rz", "sx", "x"],
control_flow=True,
)

#Transpile
transpiled_qc = transpile(qc, backend)
Expand All @@ -60,4 +66,4 @@ features:
not be used to measure any concrete behaviors. They are "reasonable defaults" that can be used to
test backend-interfacing functionality not tied specific noise values of real quantum systems.
For a more accurate simulation of existing devices, you can manually build a noise model from the
real backend using the functionality offered in ``qiskit-aer``.
real backend using the functionality offered in :mod:`qiskit_aer`.
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
---
features:
features_providers:
- |
The :mod:`qiskit.providers.fake_provider` module now includes a series of generic fake backends
following the :class:`.BackendV1` interface. They have been introduced as an alternative to the
snapshot-based fake backends exposed in the deprecated ``FakeProvider``
(``FakeVigo``, ``FakeTokyo``, etc). The list of new fake backends includes:

* Backends without pulse capabilities:

* :class:`.Fake5QV1`
* :class:`.Fake20QV1`

* Backends with pulse capabilities:

* :class:`.Fake7QPulseV1`
* :class:`.Fake27QPulseV1`
* :class:`.Fake127QPulseV1`

The can be imported following the pattern: ``from qiskit.providers.fake_provider import Fake5QV1``.
They can be imported following the pattern: ``from qiskit.providers.fake_provider import Fake5QV1``.
More details on the backend properties can be found on each backend's API documentation.
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
features:
features_transpiler:
- |
Added a new exception class :class:`.InvalidLayoutError` that is a :class:`.TranspilerError`
Added a new exception class: :class:`.InvalidLayoutError`. This is a :class:`.TranspilerError`
subclass which is raised when a user provided layout is invalid (mismatched size, duplicate
qubits, etc).

fixes:
- |
Fixed an issue with the :class:`.SetLayout` transpiler pass where an invalid integer list input
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
features_transpiler:
- |
Added a new keyword argument, ``num_processes``, to :func:`.transpile` and
the :meth:`.PassManager.run` method. This allows for overriding both
``QISKIT_NUM_PROCS`` and the ``num_processes`` field in user configuration files
on a per-transpile basis. For example::

from qiskit import transpile, QuantumCircuit

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

transpile([qc]*10, basis_gates=['u', 'cz'], num_processes=2)

will run the transpile over the 10 input circuits using only 2 processes
and will override the system default, environment variable, or user
configuration file for that :func:`.transpile` call.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
features:
features_transpiler:
- |
Added a new transpiler pass, :class:`.OptimizeAnnotated` that optimizes annotated
Added a new transpiler pass, :class:`.OptimizeAnnotated`, that optimizes annotated
operations on a quantum circuit.

Consider the following example::
Expand Down Expand Up @@ -48,20 +48,20 @@ features:
assert qc_optimized == qc_expected

In the case of ``gate1``, the modifiers of the annotated swap gate are brought
into the canonical form: the two ``InverseModifier`` s cancel out, and the two
``ControlModifier`` s are combined. In the case of ``gate2``, all the modifiers
into the canonical form: the two :class:`.InverseModifier`\s cancel out, and the two
:class:`.ControlModifier`\s are combined. In the case of ``gate2``, all the modifiers
get removed and the annotated operation is replaced by its base operation.
In the case of ``gate3``, multiple layers of annotations are combined into one.

The constructor of :class:`.OptimizeAnnotated` pass accepts optional
The constructor of the :class:`.OptimizeAnnotated` pass accepts optional
arguments ``target``, ``equivalence_library``, ``basis_gates`` and ``recurse``.
When ``recurse`` is ``True`` (the default value) and when either ``target``
or ``basis_gates`` are specified, the pass recursively descends into the gates
or ``basis_gates`` are specified, the pass recursively descends into the gate's
``definition`` circuits, with the exception of gates that are already supported
by the target or that belong to the equivalence library. On the other hand, when
neither ``target`` nor ``basis_gates`` are specified,
or when ``recurse`` is set to ``False``,
the pass synthesizes only the "top-level" annotated operations, i.e. does not
recursively descend into the ``definition`` circuits. This behavior is consistent
with that of :class:`.HighLevelSynthesis` transpiler pass that needs to be called
with that of the :class:`.HighLevelSynthesis` transpiler pass, which needs to be called
in order to "unroll" the annotated operations into 1-qubit and 2-qubits gates.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
features:
features_circuits:
- |
:class:`~qiskit.circuit.ParameterExpression` (and thus also
:class:`~qiskit.circuit.Parameter`) now support powering: :code:`x**y`
Expand Down
Loading
Loading