Latest updates
Last updated 16 May 2025
Keep up with the latest and greatest from Qiskit and IBM Quantum®!
For all product announcements, visit the Announcements page on IBM Quantum Platform Classic.
Jump to Qiskit SDK | Qiskit Runtime client | Qiskit Runtime service | Qiskit Transpiler service | Qiskit Serverless | Qiskit Functions | Documentation
Qiskit SDK v2.0
31 Mar 2025
Qiskit SDK v2.0 introduces significant performance improvements over its predecessor, and lays the groundwork for powerful new tools and capabilities that we plan to share in the coming months. Highlights include:
- A brand new C API - This major release introduces a C-language API to interact with the
SparseObservable
class. This new functionality is just the first step toward building a robust C interface for the Qiskit SDK, and you can expect major expansions of the new C interface as we progress through the rest of the v2.x series. We believe this work will play an important role in supporting large-scale quantum experimentation and enabling the hunt for quantum advantage. - Removal of deprecated features - Many of the minor releases in the previous v1.x series included new deprecation warnings to make room for us to continue improving the SDK. In this major release, all of the deprecated classes, functions, and modules are now being removed.
- Continued performance improvements - We have continued work on porting more of the Qiskit SDK functionality over to Rust, resulting in a 2x speedup for circuit construction benchmarking tasks and a roughly 20% speedup for transpilation benchmarking tasks.
- Introducing boxes and stretches - Qiskit SDK v2.0 introduces helpful new features for structuring your circuits in preparation for future changes to dynamic circuits on IBM QPUs.
Wondering what has changed? Read the changelog and the v2.0 release notes.
To see the release notes for all versions, visit the Qiskit SDK release notes.
Qiskit Runtime client 0.38.0
15 April 2025
-
Deprecation
RuntimeJob
is now deprecated and will be removed no sooner than three months from this release.RuntimeJob
was superseded byRuntimeJobV2
in all primitive implementations, so the deprecation should not have any user impact. The major difference between the two classes is thatstatus()
returns a string instead of the QiskitJobStatus
enum. (2170)- Since pulse gates are no longer supported, the
IBMBackend
andFakeBackendV2
defaults()
method has been deprecated and will be removed no sooner than three months from this release. While the method still exists, these pulse defaults are no longer used to construct the backend target. (2186) - The
ibm_quantum
channel option is deprecated and will be sunset on 1 July. After this date,ibm_cloud
will be the only valid channel. For help migrating to the new IBM Quantum Platform on theibm_cloud
channel, read the migration guide. (2205)
-
New features
- Attributes from the configuration of fake backends can now be retrieved directly with
backend.<attribute_name>
. (2202)
- Attributes from the configuration of fake backends can now be retrieved directly with
-
Bug fixes
- Fixed a bug where
DoubleSliceSpan.mask()
andTwirledSliceSpan.mask()
error when they contain a one-dimensional slice. (2184)
- Fixed a bug where
-
Upgrade notes
- Since support for streaming results was removed in
0.32.0
, the remaining related websocket code has been removed. As a part of this process, the environment optioncallback
is deprecated, as well as the parametersclient_params
anduser_callback
inBaseRuntimeJob
. (2143)
- See the full 0.38.0 release notes.
To see the release notes for all versions, visit the Qiskit Runtime client release notes.
Qiskit Runtime service
This summary of the latest changes to the Qiskit Runtime service applies to anyone using Qiskit Runtime, regardless of how you communicate with the service (by using qiskit-ibm-runtime
or otherwise), or which version of the client SDK you use.
3 February 2025
- Pulse-level control on all IBM Quantum processors has been removed. Additionally, the pulse module is scheduled for removal in Qiskit SDK v2.0. Instead, you can use fractional gates that are now built into the Instruction Set Architecture (ISA). For full details and help migrating your code, refer to Migrate from Qiskit Pulse to fractional gates.
2 February 2025
-
Starting 2 June 2025 and continuing through the year, IBM Quantum will begin a gradual rollout of new features to dynamic circuits that will enable them at the utility scale. Improvements include the following:
- A 75x speedup in execution by using the Gen3 engine stack
- Parallel execution of branches, which reduces circuit duration and improves result quality
- Improvement in mid-circuit measurement
- Better integration with dynamical decoupling
- More visibility of circuit timing information
-
To accelerate the rollout, the following capabilities are now deprecated and will be no longer supported on or around 2 June 2025:
- The
while
,for
, andswitch
control flow constructs - The ability to use control flow instructions inside the body of a branch (as in, nested control flow)
- Conditional measurements
- The
Previous updates
7 January 2025
- The rollout of the Gen3 engine stack begins today. This engine stack gives a 75x speedup in execution. The rollout will be done on one QPU at a time, where a percentage of the jobs on the QPU will use the Gen3 path. You can also force the Gen3 path using the
gen3-turbo
experimental option. Note that this engine stack is not compatible with fractional gates, pulse gates, or dynamic circuits.
15 October 2024
- Support for
backend.run
has ended. See the appropriate migration guide if you have not yet migrated to using primitives.
1 October 2024
- Parameterized delay gates have been deprecated.
15 August 2024
- Probabilistic error amplification (PEA) error mitigation method is now available for Estimator V2. See the
ZneOptions
API reference for more details. - A new helper program
noise-learner
is now available. It allows characterizing the noise processes affecting the gates in one or more circuits of interest, based on the Pauli-Lindblad noise model. The output noise model can then be passed to Estimator via thelayer_noise_model
option. - V1 primitives are no longer supported.
3 July 2024
-
The following endpoints are deprecated and will be removed on or after 3 October 2024:
GET /stream/jobs
andGET /stream/jobs/{id}
. This removal has the following impacts:- After the endpoints are removed,
job.stream_results()
andjob.interim_results()
will be removed from the qiskit-ibm-runtime client. - Additional methods, such as
job.result()
currently use the deprecated endpoints. Upgrade toqiskit_ibm_runtime
0.25 or later before the endpoints are removed to avoid disruption.
- After the endpoints are removed,
18 June 2024
- The
optimization_level
option is deprecated for Estimator V2 and will be removed no sooner than 30 September 2024.
3 June 2024
- Probabilistic error amplification (PEA) error mitigation method is now available as an experimental option for Estimator V2. See the
EstimatorOptions
API reference for more details.
28 March 2024
- Qiskit Runtime primitives now support OpenQASM 3 as the input format for circuits and standard JSON output format. See Qiskit Runtime REST API for examples.
Qiskit Transpiler Service client v0.11.0
25 March 2025
- See the v0.11.0 release notes.
To see the release notes for all versions, visit the Qiskit Transpiler Service client release notes.
Previous updates
-
Qiskit Transpiler Service client v0.3.0
- The Qiskit Transpiler Service leverages IBM Cloud® resources to provide users with the latest transpilation capabilities from the Qiskit SDK. It offers a Python library that helps users seamlessly integrate the service into their current Qiskit patterns and workflows. Perhaps most importantly, the service invites users to experiment with new and improved AI-powered transpiler passes — cutting-edge tools that might be faster and produce better results than traditional transpilation methods. Read the blog for more information.
Qiskit Serverless
16 May 2025
-
Developers can set detailed statuses and track what's happening across a workflow.
Serverless workloads have several stages across a workflow. By default, the following statuses are viewable with
job.status()
:QUEUED
: The workload is queued for classical resources.INITIALIZING
: The workload is set up.RUNNING
: The workload is currently running on classical resources.DONE
: The workload has successfully completed.
Now, you can also set custom statuses that further describe the specific workflow stage, as in the following example.
Expand for code examplefrom qiskit_serverless import update_status, Job ## If your function has a mapping stage, particularly application functions, you can set the status to "RUNNING: MAPPING" as follows: update_status(Job.MAPPING) ## While handling transpilation, error suppression, and so forth, you can set the status to "RUNNING: OPTIMIZING_FOR_HARDWARE": update_status(Job.OPTIMIZING_HARDWARE) ## After you submit jobs to Qiskit Runtime, the underlying quantum job will be queued. You can set status to "RUNNING: WAITING_FOR_QPU": update_status(Job.WAITING_QPU) ## When the Qiskit Runtime job starts running on the QPU, set the following status "RUNNING: EXECUTING_QPU": update_status(Job.EXECUTING_QPU) ## After the QPU is completed and post-processing has begun, set the status "RUNNING: POST_PROCESSING": update_status(Job.POST_PROCESSING)
Qiskit Functions
16 May 2025
-
Over the coming weeks, every function will give detailed information to help you run, debug, and analyze your workflows. This includes:
- When jobs fail, you can use
job.error_message()
to find specific error codes and messages to help you debug your workflows job.status()
will give more information on what's happening while a Function isRUNNING
, including:RUNNING: MAPPING
RUNNING: OPTIMIZING_FOR_HARDWARE
RUNNING: WAITING_FOR_QPU
RUNNING: EXECUTING_QPU
RUNNING: POST_PROCESSING
- Finally, after a Qiskit Function is complete, you can inspect how much time is spent across each stage with
job.result()['metadata']['resource_usage']
, as in the following example.
Expand for code example{ ..., "metadata": { "resource_usage": { { "RUNNING: MAPPING": { "CPU_TIME": seconds, "GPU_TIME": seconds, "QPU_TIME": seconds, }, "RUNNING: OPTIMIZING_FOR_HARDWARE": { "CPU_TIME": seconds, "GPU_TIME": seconds, "QPU_TIME": seconds, }, "RUNNING: WAITING_FOR_QPU": { "CPU_TIME": seconds, "GPU_TIME": seconds, "QPU_TIME": seconds, }, "RUNNING: EXECUTING_QPU": { "CPU_TIME": seconds, "GPU_TIME": seconds, "QPU_TIME": seconds, }, "RUNNING: POST_PROCESSING": { "CPU_TIME": seconds, "GPU_TIME": seconds, "QPU_TIME": seconds, }, }, } } }
We're hoping these changes make it easier to use Qiskit Functions, and you can get started with free trials in the catalog today.
- When jobs fail, you can use
Previous updates
10 March 2025
-
Latest additions to the Qiskit Functions Catalog
To get started, explore the Qiskit Functions documentation.
16 September 2024
-
Introducing the Qiskit Functions preview, for IBM Quantum Premium Plan users. To get started,
pip install qiskit-ibm-catalog
and explore the Qiskit Functions documentation. With the Qiskit Functions Catalog client, you can submit workloads to abstracted services designed to accelerate your research. Sign in with your existing IBM Quantum Platform credentials.The Qiskit Functions Catalog preview provides access to Premium Plan users to explore the available functions, including those written by IBM and those written by other members of our ecosystem. The catalog contains two kinds of functions: circuit functions and application functions.
-
Circuit functions provide a simplified interface for running circuits. They receive user-provided abstract circuits and observables as input, then manage synthesis, optimization, and execution of the representative ISA circuit. Circuit functions bring together the latest capabilities in transpilation, error suppression, and error mitigation to make utility-grade performance accessible out of the box. This allows computational scientists to focus on mapping their problems to circuits, rather than building the pattern for each problem from scratch.
-
Application functions cover higher-level tasks, like exploring algorithms and domain-specific use cases. Enterprise developers and data scientists may not have the background quantum information science knowledge for working with circuits, and instead hope to bring their domain knowledge to advance quantum computing algorithms and applications. With application functions, users can enter their classical inputs and receive solutions so they can more easily experiment with plugging quantum into their domain-specific workflows.
-
-
With the launch of the Qiskit Functions Catalog, Premium Plan developers can explore the IBM Circuit function. The IBM Circuit function includes the latest AI-powered extensions to Qiskit for circuit synthesis, optimization, and scheduling, as well as advanced error mitigation methods to return the most accurate estimations possible with today's hardware.
Users can purchase licenses for the following functions contributed by our partners at Q-CTRL, QEDMA, Algorithmiq, and Qunasys.
-
Circuit functions
- Q-CTRL is releasing a circuit function that applies AI-driven quantum control techniques, with which users can scale successfully to larger problems.
- Algorithmiq is releasing a circuit function that applies TEM (tensor-network error mitigation), an error mitigation method for obtaining estimators with fewer shots than the PEC (probabilistic error cancellation) method.
- QEDMA is releasing a circuit function that uses proprietary protocols for efficient and accurate characterization of the noisy QPU operations, and applies error suppression and error mitigation based on the characterization data.
-
Application functions
- QunaSys is releasing a chemistry application function comprising three algorithms meant to solve the ground state energy estimation (GSEE) problem.
- Q-CTRL is releasing an optimization solver with which users can pass a graph or an objective, and receive solution costs.
Documentation
IBM Quantum documentation recently added a number of user-facing improvements, including content updates and new features. Many of these changes are a result of specific user requests! Check out the highlights below.
18 December 2024
-
New pages
-
Introductory and get-started material for these Qiskit addons: SQD | AQC-Tensor | OBP | MPF
-
Debug Qiskit Runtime jobs with the NEAT class.
-
Integrate external quantum resources with Qiskit guide in Open-source resources.
-
New migration guide: Migrate from Qiskit Pulse to fractional gates.
-
New Qiskit Functions guide: Singularity Machine Learning - Classification.
-
-
Content additions and improvements
- Guidance to securely manage your API key, as part of the guide to set up an IBM Quantum channel
-
Revisions by Qunasys to the Qiskit Functions QURI Chemistry guide
-
Updated code examples to fix a bug in Get started with primitives
-
Updates to Introduction to options to include the new gen3-turbo options
-
Copyediting and typo fixes across the documentation, including bugs reported by open-source contributors - thank you!
-
New API reference documentation
-
User experience improvements
- The required versions of packages used in code examples are now listed at the top of each guide.
- A bug in menu view on mobile devices is now fixed.
- The search bar is now bigger for increased discoverability, and your search query is preserved after you close the search modal.
- All code examples have been updated to work with Qiskit SDK v1.3 and Qiskit Runtime v0.34.
A huge thank you goes out to everyone in the open-source community who contributed and gave feedback! Please open an issue if you find a bug, have a suggestion, or want to share your experience.