Skip to content

Commit

Permalink
Forward port release notes changes from stable/1.0 (#11819)
Browse files Browse the repository at this point in the history
* Forward port release notes changes from stable/1.0

In the rush to get 1.0.0rc1 release on time, we missed migrating the
release notes from the root of the notes directory to the 1.0/
subdirectory. Doing this is convenient because it makes it easier to
associate notes with a particular minor/major release which is useful
for navigating potential issues with reno's history scan. This commit
forward ports the state of the stable/1.0 branches release notes to
main. This will make it much easier to differentiate which release notes
are associated with 1.1 instead of 1.0.

* Add reno subsection config
  • Loading branch information
mtreinish committed Feb 29, 2024
1 parent d26d306 commit 945fe1d
Show file tree
Hide file tree
Showing 169 changed files with 728 additions and 761 deletions.
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
features_qpy:
- |
Added a new warning class, :exc:`~.QPYLoadingDeprecatedFeatureWarning`, to the QPY module.
This class allows for deprecation warnings to surface even if the deprecated feature
is accessed at a variable point in the call stack, as is the case for many QPY loading functions that
are called recursively.
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
features:
features_qpy:
- |
Added a new flag, ``version``, to the :func:`.qpy.dump` function which
optionally takes an integer value for the :ref:`qpy_format` version to
emit from the dump function. This is useful if you need to generate a QPY
Added a new flag, ``version``, to the :func:`.qpy.dump` function. This allows
:func:`.qpy.dump` to optionally take an integer value for the :ref:`qpy_format`
version to emit. This is useful if you need to generate a QPY
file that will be loaded by an older version of Qiskit. However, the
supported versions to emit are limited, only versions between the latest
QPY version (which is the default), and the compatibility QPY version
which is :ref:`qpy_version_10` (which was introduced in Qiskit 0.45.0) can
be used. The compatibility version will remain fixed for the the entire
be used. The compatibility version will remain fixed for the entire
1.x.y major version release series. This does not change the backwards
compatibility guarantees of the QPY format when calling :func:`.qpy.load`,
it just enables users to emit an older version of QPY to maintain
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
features_synthesis:
- |
Added a :func:`qiskit.synthesis.synth_circuit_from_stabilizers` function that
returns a circuit that outputs the state stabilized by a series of given stabilizers.
features_quantum_info:
- |
Added a :meth:`qiskit.quantum_info.StabilizerState.from_stabilizer_list` method
that generates a stabilizer state from a list of stabilizers::
from qiskit.quantum_info import StabilizerState
stabilizer_list = ["ZXX", "-XYX", "+ZYY"]
stab = StabilizerState.from_stabilizer_list(stabilizer_list)
Loading

0 comments on commit 945fe1d

Please sign in to comment.