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

207 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Qiskit 0.24 release notes
description: Changes made in Qiskit 0.24
in_page_toc_max_heading_level: 4
---
# Qiskit 0.24 release notes
## 0.24.1
<span id="terra-0-16-4" />
### Terra 0.16.4
No change
<span id="aer-0-7-6" />
### Aer 0.7.6
No change
<span id="ignis-0-5-2" />
### Ignis 0.5.2
No change
<span id="aqua-0-8-2" />
### Aqua 0.8.2
No change
<span id="id320" />
### IBM Q Provider 0.12.2
<span id="release-notes-ibmq-0-12-2-new-features" />
<span id="id321" />
#### Upgrade Notes
* `qiskit.providers.ibmq.IBMQBackend.defaults()` now returns the pulse defaults for the backend if the backend supports pulse. However, your provider may not support pulse even if the backend does. The `open_pulse` flag in backend configuration indicates whether the provider supports it.
<span id="qiskit-0-24-0" />
## 0.24.0
<span id="id322" />
### Terra 0.16.4
No change
<span id="id323" />
### Aer 0.7.6
<span id="release-notes-aer-0-7-6-new-features" />
<span id="id324" />
#### New Features
* This is the first release of qiskit-aer that publishes precompiled binaries to PyPI for Linux on aarch64 (arm64). From this release onwards Linux aarch64 packages will be published and supported.
<span id="release-notes-aer-0-7-6-bug-fixes" />
<span id="id325" />
#### Bug Fixes
* Fixes a bug [#1153](https://github.com/Qiskit/qiskit-aer/issues/1153) where noise on conditional gates was always being applied regardless of whether the conditional gate was actually applied based on the classical register value. Now noise on a conditional gate will only be applied in the case where the conditional gate is applied.
* Fixed issue [#1126](https://github.com/Qiskit/qiskit-aer/issues/1126): bug in reporting measurement of a single qubit. The bug occured when copying the measured value to the output data structure.
* There was previously a mismatch between the default reported number of qubits the Aer backend objects would say were supported and the the maximum number of qubits the simulator would actually run. This was due to a mismatch between the Python code used for calculating the max number of qubits and the C++ code used for a runtime check for the max number of qubits based on the available memory. This has been correct so by default now Aer backends will allow running circuits that can fit in all the available system memory. Fixes [#1114](https://github.com/Qiskit/qiskit-aer/issues/1126)
No change
<span id="id326" />
### Ignis 0.5.2
No change
<span id="id327" />
### Aqua 0.8.2
No change
<span id="ibm-q-provider-0-12-0" />
### IBM Q Provider 0.12.0
<span id="release-notes-ibmq-0-12-0-prelude" />
<span id="id328" />
#### Prelude
* `qiskit.providers.ibmq.IBMQBackend.run()` method now takes one or more [`QuantumCircuit`](/api/qiskit/0.45/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") or [`Schedule`](/api/qiskit/0.45/qiskit.pulse.Schedule "qiskit.pulse.Schedule"). Use of [`QasmQobj`](/api/qiskit/0.45/qiskit.qobj.QasmQobj "qiskit.qobj.QasmQobj") and [`PulseQobj`](/api/qiskit/0.45/qiskit.qobj.PulseQobj "qiskit.qobj.PulseQobj") is now deprecated. Runtime configuration options, such as the number of shots, can be set via either the `run()` method, or the `qiskit.providers.ibmq.IBMQBackend.set_options()` method. The former is used as a one-time setting for the job, and the latter for all jobs sent to the backend. If an option is set in both places, the value set in `run()` takes precedence.
* IBM Quantum credentials are now loaded only from sections of the `qiskitrc` file that start with ibmq.
<span id="release-notes-ibmq-0-12-0-new-features" />
<span id="id329" />
#### New Features
* Python 3.9 support has been added in this release. You can now run Qiskit IBMQ provider using Python 3.9.
* `qiskit.providers.ibmq.AccountProvider.backends()` now has a new parameter min\_num\_qubits that allows you to filter by the minimum number of qubits.
* `qiskit.providers.ibmq.IBMQBackend.run()` method now takes one or more [`QuantumCircuit`](/api/qiskit/0.45/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") or [`Schedule`](/api/qiskit/0.45/qiskit.pulse.Schedule "qiskit.pulse.Schedule"). Runtime configuration options, such as the number of shots, can be set via either the `run()` method, or the `qiskit.providers.ibmq.IBMQBackend.set_options()` method. The former is used as a one-time setting for the job, and the latter for all jobs sent to the backend. If an option is set in both places, the value set in `run()` takes precedence. For example:
```python
from qiskit import IBMQ, transpile
from qiskit.test.reference_circuits import ReferenceCircuits
provider = IBMQ.load_account()
backend = provider.get_backend('ibmq_vigo')
circuits = transpile(ReferenceCircuits.bell(), backend=backend)
default_shots = backend.options.shots # Returns the backend default of 1024 shots.
backend.set_options(shots=2048) # All jobs will now have use 2048 shots.
backend.run(circuits) # This runs with 2048 shots.
backend.run(circuits, shots=8192) # This runs with 8192 shots.
backend.run(circuits) # This again runs with 2048 shots.
```
* `qiskit.providers.ibmq.experiment.Experiment` now has three additional attributes, hub, group, and project, that identify the provider used to create the experiment.
* You can now assign an `experiment_id` to a job when submitting it using `qiskit.providers.ibmq.IBMQBackend.run()`. You can use this new field to group together a collection of jobs that belong to the same experiment. The `qiskit.providers.ibmq.IBMQBackendService.jobs()` method was also updated to allow filtering by `experiment_id`.
* `qiskit.providers.ibmq.experiment.Experiment` now has two additional attributes:
* share\_level: The level at which the experiment is shared which determines who can see it when listing experiments. This can be updated.
* owner: The ID of the user that uploaded the experiment. This is set by the server and cannot be updated.
* The method `qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()` now accepts `hub`, `group`, and `project` as filtering keywords.
* Methods `qiskit.providers.ibmq.experiment.ExperimentService.experiments()` and `qiskit.providers.ibmq.experiment.ExperimentService.analysis_results()` now support a `limit` parameter that allows you to limit the number of experiments and analysis results returned.
* The method `qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()` now accepts `exclude_mine` and `mine_only` as filtering keywords.
* The method `qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()` now accepts `exclude_public` and `public_only` as filtering keywords.
* `qiskit.providers.ibmq.managed.IBMQJobManager.run()` now accepts a single [`QuantumCircuit`](/api/qiskit/0.45/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") or [`Schedule`](/api/qiskit/0.45/qiskit.pulse.Schedule "qiskit.pulse.Schedule") in addition to a list of them.
* The `least_busy()` function now skips backends that are operational but paused, meaning they are accepting but not processing jobs.
* You can now pickle an `IBMQJob` instance, as long as it doesnt contain custom data that is not picklable (e.g. in Qobj header).
* You can now use the two new methods, `qiskit.providers.ibmq.AccountProvider.services()` and `qiskit.providers.ibmq.AccountProvider.service()` to find out what services are available to your account and get an instance of a particular service.
* The `qiskit.providers.ibmq.IBMQBackend.reservations()` method now always returns the reservation scheduling modes even for reservations that you dont own.
<span id="release-notes-ibmq-0-12-0-upgrade-notes" />
<span id="id330" />
#### Upgrade Notes
* A number of previously deprecated methods and features have been removed, including:
> * `qiskit.providers.ibmq.job.IBMQJob.to_dict()`
> * `qiskit.providers.ibmq.job.IBMQJob.from_dict()`
> * Qconfig.py support
> * Use of proxy URLs that do not include protocols
* A new parameter, `limit` is now the first parameter for both `qiskit.providers.ibmq.experiment.ExperimentService.experiments()` and `qiskit.providers.ibmq.experiment.ExperimentService.analysis_results()` methods. This `limit` has a default value of 10, meaning by deafult only 10 experiments and analysis results will be returned.
* IBM Quantum credentials are now loaded only from sections of the `qiskitrc` file that start with ibmq. This allows the `qiskitrc` file to be used for other functionality.
<span id="release-notes-ibmq-0-12-0-deprecation-notes" />
<span id="id331" />
#### Deprecation Notes
* Use of [`QasmQobj`](/api/qiskit/0.45/qiskit.qobj.QasmQobj "qiskit.qobj.QasmQobj") and [`PulseQobj`](/api/qiskit/0.45/qiskit.qobj.PulseQobj "qiskit.qobj.PulseQobj") in the `qiskit.providers.ibmq.IBMQBackend.run()` method is now deprecated. [`QuantumCircuit`](/api/qiskit/0.45/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") and [`Schedule`](/api/qiskit/0.45/qiskit.pulse.Schedule "qiskit.pulse.Schedule") should now be used instead.
* The `backends` attribute of `qiskit.providers.ibmq.AccountProvider` has been renamed to `backend` (sigular). For backward compatibility, you can continue to use `backends`, but it is deprecated and will be removed in a future release. The `qiskit.providers.ibmq.AccountProvider.backends()` method remains unchanged. For example:
```python
backend = provider.backend.ibmq_vigo # This is the new syntax.
backend = provider.backends.ibmq_vigo # This is deprecated.
backends = provider.backends() # This continues to work as before.
```
* Setting of the `IBMQJob` `client_version` attribute has been deprecated. You can, however, continue to read the value of attribute.
* “The `validate_qobj` keyword in `qiskit.providers.ibmq.IBMQBackend.run()` is deprecated and will be removed in a future release. If youre relying on this schema validation you should pull the schemas from the [Qiskit/ibmq-schemas](https://github.com/Qiskit/ibm-quantum-schemas) and directly validate your payloads with that.
<span id="release-notes-ibmq-0-12-0-bug-fixes" />
<span id="id332" />
#### Bug Fixes
* Fixes the issue wherein a job could be left in the `CREATING` state if job submit fails half-way through.
* Fixes the issue wherein using Jupyter backend widget would fail if the backends basis gates do not include the traditional u1, u2, and u3. Fixes [#844](https://github.com/Qiskit/qiskit-ibmq-provider/issues/844)
* Fixes the infinite loop raised when passing an `IBMQRandomService` instance to a child process.
* Fixes the issue wherein a `TypeError` is raised if the server returns an error code but the response data is not in the expected format.
<span id="qiskit-0-23-6" />