qiskit-documentation/docs/api/qiskit/release-notes/0.41.mdx

147 lines
12 KiB
Plaintext

---
title: Qiskit 0.41 release notes
description: Changes made in Qiskit 0.41
in_page_toc_max_heading_level: 4
---
# Qiskit 0.41 release notes
## 0.41.1
<span id="release-notes-terra-0-23-2" />
<span id="id55" />
### Terra 0.23.2
<span id="release-notes-terra-0-23-2-prelude" />
<span id="id56" />
#### Prelude
The Qiskit Terra 0.23.2 patch release fixes further bugs identified in the 0.23 series.
<span id="release-notes-terra-0-23-2-bug-fixes" />
<span id="id57" />
#### Bug Fixes
* Add the following Clifford gates, that already exist in the circuit library, to the [`Clifford`](/api/qiskit/0.45/qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") class: [`SXGate`](/api/qiskit/0.45/qiskit.circuit.library.SXGate "qiskit.circuit.library.SXGate"), [`SXdgGate`](/api/qiskit/0.45/qiskit.circuit.library.SXdgGate "qiskit.circuit.library.SXdgGate"), [`CYGate`](/api/qiskit/0.45/qiskit.circuit.library.CYGate "qiskit.circuit.library.CYGate"), [`DCXGate`](/api/qiskit/0.45/qiskit.circuit.library.DCXGate "qiskit.circuit.library.DCXGate"), [`iSwapGate`](/api/qiskit/0.45/qiskit.circuit.library.iSwapGate "qiskit.circuit.library.iSwapGate") and [`ECRGate`](/api/qiskit/0.45/qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate").
* Add a decomposition of an [`ECRGate`](/api/qiskit/0.45/qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate") into Clifford gates (up to a global phase) to the standard equivalence library.
* Fixed an issue with the [`BackendV2Converter`](/api/qiskit/0.45/qiskit.providers.BackendV2Converter "qiskit.providers.BackendV2Converter") class when wrapping a [`BackendV1`](/api/qiskit/0.45/qiskit.providers.BackendV1 "qiskit.providers.BackendV1")-based simulator. It would error if either the `online_date` field in the [`BackendConfiguration`](/api/qiskit/0.45/qiskit.providers.models.BackendConfiguration "qiskit.providers.models.BackendConfiguration") for the simulator was not present or if the simulator backend supported ideal implementations of gates that involve more than 1 qubit. Fixed [#9562](https://github.com/Qiskit/qiskit/issues/9562).
* Fixed an incorrect return value of the method `BackendV2Converter.meas_map()` that had returned the backend `dt` instead.
* Fixed missing return values from the methods [`BackendV2Converter.drive_channel()`](/api/qiskit/0.45/qiskit.providers.BackendV2Converter#drive_channel "qiskit.providers.BackendV2Converter.drive_channel"), [`measure_channel()`](/api/qiskit/0.45/qiskit.providers.BackendV2Converter#measure_channel "qiskit.providers.BackendV2Converter.measure_channel"), [`acquire_channel()`](/api/qiskit/0.45/qiskit.providers.BackendV2Converter#acquire_channel "qiskit.providers.BackendV2Converter.acquire_channel") and [`control_channel()`](/api/qiskit/0.45/qiskit.providers.BackendV2Converter#control_channel "qiskit.providers.BackendV2Converter.control_channel").
* The deprecated [`Qubit`](/api/qiskit/0.45/qiskit.circuit.Qubit "qiskit.circuit.Qubit") and [`Clbit`](/api/qiskit/0.45/qiskit.circuit.Clbit "qiskit.circuit.Clbit") properties [`register`](/api/qiskit/0.45/qiskit.circuit.Qubit#register "qiskit.circuit.Qubit.register") and [`index`](/api/qiskit/0.45/qiskit.circuit.Qubit#index "qiskit.circuit.Qubit.index") will now be correctly round-tripped by QPY ([`qiskit.qpy`](/api/qiskit/0.45/qpy#module-qiskit.qpy "qiskit.qpy")) in all valid usages of [`QuantumRegister`](/api/qiskit/0.45/qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") and [`ClassicalRegister`](/api/qiskit/0.45/qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister"). In earlier releases in the Terra 0.23 series, this information would be lost. In versions before 0.23.0, this information was partially reconstructed but could be incorrect or produce invalid circuits for certain register configurations.
The correct way to retrieve the index of a bit within a circuit, and any registers in that circuit the bit is contained within is to call [`QuantumCircuit.find_bit()`](/api/qiskit/0.45/qiskit.circuit.QuantumCircuit#find_bit "qiskit.circuit.QuantumCircuit.find_bit"). This method will return the correct information in all versions of Terra since its addition in version 0.19.
* Fixed an issue with the [`InstructionScheduleMap.has_custom_gate()`](/api/qiskit/0.45/qiskit.pulse.InstructionScheduleMap#has_custom_gate "qiskit.pulse.InstructionScheduleMap.has_custom_gate") method, where it would always return `True` when the [`InstructionScheduleMap`](/api/qiskit/0.45/qiskit.pulse.InstructionScheduleMap "qiskit.pulse.InstructionScheduleMap") object was created by [`Target`](/api/qiskit/0.45/qiskit.transpiler.Target "qiskit.transpiler.Target"). Fixed [#9595](https://github.com/Qiskit/qiskit/issues/9595).
* Fixed a bug in the NumPy-based eigensolvers ([`NumPyMinimumEigensolver`](/api/qiskit/0.45/qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver "qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver") / [`NumPyEigensolver`](/api/qiskit/0.45/qiskit.algorithms.eigensolvers.NumPyEigensolver "qiskit.algorithms.eigensolvers.NumPyEigensolver")) and in the SciPy-based time evolvers ([`SciPyRealEvolver`](/api/qiskit/0.45/qiskit.algorithms.SciPyRealEvolver "qiskit.algorithms.SciPyRealEvolver") / [`SciPyImaginaryEvolver`](/api/qiskit/0.45/qiskit.algorithms.SciPyImaginaryEvolver "qiskit.algorithms.SciPyImaginaryEvolver")), where operators that support conversion to sparse matrices, such as [`SparsePauliOp`](/api/qiskit/0.45/qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp"), were converted to dense matrices anyways.
* Fixed a bug in [`generate_basic_approximations()`](/api/qiskit/0.45/synthesis#qiskit.synthesis.generate_basic_approximations "qiskit.synthesis.generate_basic_approximations") where the inverse of the [`SdgGate`](/api/qiskit/0.45/qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate") was not correctly recognized as [`SGate`](/api/qiskit/0.45/qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"). Fixed [#9585](https://github.com/Qiskit/qiskit/issues/9585).
* Fixed a bug in the [`VQD`](/api/qiskit/0.45/qiskit.algorithms.eigensolvers.VQD "qiskit.algorithms.eigensolvers.VQD") algorithm where the energy evaluation function could not process batches of parameters, making it incompatible with optimizers with `max_evals_grouped>1`. Fixed [#9500](https://github.com/Qiskit/qiskit/issues/9500).
* Fixed bug in [`QNSPSA`](/api/qiskit/0.45/qiskit.algorithms.optimizers.QNSPSA "qiskit.algorithms.optimizers.QNSPSA") which raised a type error when the computed fidelities happened to be of type `int` but the perturbation was of type `float`.
<span id="aer-0-11-2" />
### Aer 0.11.2
No change
<span id="ibm-q-provider-0-20-1" />
<span id="release-notes-ibmq-0-20-1" />
### IBM Q Provider 0.20.1
Since `qiskit-ibmq-provider` is now deprecated, the dependencies have been bumped and fixed to the latest working versions. There was an issue with the latest version of the `requests-ntlm` package which caused some end to end tests to fail.
<span id="qiskit-0-41-0" />
## 0.41.0
<span id="terra-0-23-1" />
### Terra 0.23.1
<span id="release-notes-0-23-1-prelude" />
<span id="id58" />
#### Prelude
Qiskit Terra 0.23.1 is a small patch release to fix bugs identified in Qiskit Terra 0.23.0
<span id="release-notes-0-23-1-bug-fixes" />
<span id="id59" />
#### Bug Fixes
* An edge case of pickle [`InstructionScheduleMap`](/api/qiskit/0.45/qiskit.pulse.InstructionScheduleMap "qiskit.pulse.InstructionScheduleMap") with non-picklable iterable `arguments` is now fixed. Previously, using an unpickleable iterable as the `arguments` parameter to [`InstructionScheduleMap.add()`](/api/qiskit/0.45/qiskit.pulse.InstructionScheduleMap#add "qiskit.pulse.InstructionScheduleMap.add") (such as `dict_keys`) could cause parallel calls to [`transpile()`](/api/qiskit/0.45/compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") to fail. These arguments will now correctly be normalized internally to `list`.
* Fixed a performance bug in [`ReverseEstimatorGradient`](/api/qiskit/0.45/qiskit.algorithms.gradients.ReverseEstimatorGradient "qiskit.algorithms.gradients.ReverseEstimatorGradient") where the calculation did a large amount of unnecessary copies if the gradient was only calculated for a subset of parameters, or in a circuit with many unparameterized gates.
* Fixed a bad deprecation of [`Register.name_format`](/api/qiskit/0.45/qiskit.circuit.Register#name_format "qiskit.circuit.Register.name_format") which had made the class attribute available only from instances and not the class. When trying to send dynamic-circuits jobs to hardware backends, this would frequently cause the error:
```python
AttributeError: 'property' object has no attribute 'match'
```
Fixed [#9493](https://github.com/Qiskit/qiskit/issues/9493).
<span id="id60" />
### Aer 0.11.2
No change
<span id="ibm-q-provider-0-20-0" />
<span id="release-notes-ibmq-0-20-0" />
### IBM Q Provider 0.20.0
<span id="id61" />
#### Prelude
This release of the `qiskit-ibmq-provider` package marks the package as deprecated and will be retired and archived in the future. The functionality in `qiskit-ibmq-provider` has been supersceded by 3 packages `qiskit-ibm-provider`, `qiskit-ibm-runtime`, and `qiskit-ibm-experiment` which offer different subsets of functionality that `qiskit-ibmq-provider` contained. You can refer to the table here:
[https://github.com/Qiskit/qiskit-ibmq-provider#migration-guides](https://github.com/Qiskit/qiskit-ibmq-provider#migration-guides)
for links to the migration guides for moving from `qiskit-ibmq-provider` to its replacmeent packages.
<span id="release-notes-ibmq-0-20-0-deprecation-notes" />
<span id="id62" />
#### Deprecation Notes
* As of version 0.20.0, `qiskit-ibmq-provider` has been deprecated with its support ending and eventual archival being no sooner than 3 months from that date. The function provided by qiskit-ibmq-provider is not going away rather it has being split out to separate repositories. Please see [https://github.com/Qiskit/qiskit-ibmq-provider#migration-guides](https://github.com/Qiskit/qiskit-ibmq-provider#migration-guides).
<span id="release-notes-ibmq-0-20-0-bug-fixes" />
<span id="id63" />
#### Bug Fixes
* In the upcoming terra release there will be a release candidate tagged prior to the final release. However changing the version string for the package is blocked on the qiskit-ibmq-provider right now because it is trying to parse the version and is assuming there will be no prelease suffix on the version string (see [#8200](https://github.com/Qiskit/qiskit-terra/pull/8200) for the details). PR [#1135](https://github.com/Qiskit/qiskit-ibmq-provider/pull/1135) fixes this version parsing to use the regex from the pypa/packaging project which handles all the PEP440 package versioning include pre-release suffixes. This will enable terra to release an 0.21.0rc1 tag without breaking the qiskit-ibmq-provider.
* PR [#1129](https://github.com/Qiskit/qiskit-ibmq-provider/pull/1129) updates `least_busy()` method to no longer support BaseBackend as a valid input or output type since it has been long deprecated in qiskit-terra and has recently been removed.
* `threading.currentThread` and `notifyAll` were deprecated in Python 3.10 (October 2021) and will be removed in Python 3.12 (October 2023). PR [#1133](https://github.com/Qiskit/qiskit-ibmq-provider/pull/1133) replaces them with `threading.current_thread`, `notify_all` added in Python 2.6 (October 2008).
* Calls to run a quantum circuit with `dynamic=True` now raise an error that asks the user to install the new `qiskit-ibm-provider`.
<span id="qiskit-0-40-0" />