Skip to content

Qiskit 2.0.0

Latest
Compare
Choose a tag to compare
@qiskit-bot qiskit-bot released this 31 Mar 19:17
· 57 commits to main since this release
2.0.0
88df8ee

Release notes: https://docs.quantum.ibm.com/api/qiskit/release-notes/2.0

Changelog

Deprecated

  • Extend deprecation of QuantumCircuit.duration and DAGCircuit.duration (#13960)
  • Address BackendV1 deprecation warning oversights (#13868)
  • The unused parameter dag in DAGNode constructor is deprecated (#13862)
  • Deprecate convert_to_target (#12915)
  • Deprecate qiskit.circuit.classicalfunction (#13786)
  • Deprecate use of BackendProperties (BackendV1) in transpilation pipeline (#13719)
  • Deprecate NormalizeRXAngle and rzx_templates (#13883)
  • raise DeprecationWarning for a targetless timeline drawer (#13601)
  • Deprecate atomic_evolution (#13603)
  • Deprecation of MCMT in favor of MCMTGate (backport #13584) (#13810)
  • Deprecate subclassing of Register and Bit (#13841)
  • Deprecate BackendV2Converter (#12840)
  • Deprecation of MCMT in favor of MCMTGate (#13584)
  • Ensure translation stage always outputs ISA circuits (#13792)
  • Deprecate BasicSimulator.run_experiment (#13750)
  • Deprecate DAGNode.sort_key attribute (#13744)
  • Deprecate show_idle and show_barrier in favor of idle_wires and plot_barriers (#13602)

Added

  • The parameter idle_wires default flipped to False in all circuit drawers (#13865)
  • [Stretch] Add stretch variable support to QuantumCircuit. (#13852)
  • Delegate BasePass.__call__ to PassManager.run (#13820)
  • Add representation of box (#13869)
  • Use average gate fidelity in the commutation checker (#13874)
  • [Stretch] Add +, -, *, / operators for classical expressions. (#13850)
  • SparseObservable evolution (#13836)
  • Port HighLevelSynthesis pass to rust (#13813)
  • Light Cone Transpiler Pass (#12814)
  • Add SparseObservable.compose (#13766)
  • [Stretch] Support Float type in classical expressions. (#13832)
  • C API for SparseObservable (#13694)
  • [Stretch] Support const classical expressions. (#13811)
  • Refactor parallelism utilities for public API (#12412)
  • Single-register arithmetic gates (#13371)
  • Add ContractIdleWiresInControlFlow optimisation pass (#13779)
  • Promote linux aarch64 to tier 1 support (#13737)
  • Remove dependance of BooleanExpression on tweedledum (#13769)
  • Add default routing stage plugin (#13802)
  • Add method to compute estimated duration of scheduled circuit (backport #13783) (#13881)
  • Add method to compute estimated duration of scheduled circuit (#13783)
  • Add dt to GenericBackendV2 (#13830)
  • Better decomposition for multi-controlled 1-qubit gates (#13801)
  • Add 2q fractional gates to the UnitarySynthesis transpiler pass (#13568)
  • Add default translation stage plugin (#13794)
  • Support SparseObservable to SparsePauliOp conversions (#13758)
  • Add QuantumCircuit.noop for instructionless qubit use (#13774)
  • Add new get_control_flow_name_mapping function (#13472)
  • Add option max_block_width to CollectLinearFunctions and CollectClifford passes (#13661)
  • feat: add method to convert BitArray into boolean array (#13653)
  • Add option collect_from_back to CollectMultiQBlocks (#13612)
  • StabilizerState.expectation_value can also accept SparsePauliOp (#13539)
  • Quantum Multiplexer Simplification (#13099)

Changed

  • The parameter idle_wires default flipped to False in all circuit drawers (#13865)
  • Delegate BasePass.__call__ to PassManager.run (#13820)
  • Use average gate fidelity in the commutation checker (#13874)
  • Handle an optional symengine and sympy in qpy (#13917)
  • Port HighLevelSynthesis pass to rust (#13813)
  • New atomic_evolution signature in ProductFormula subclasses (#13918)
  • Simplify return type of DAGCircuit::control_flow_op_nodes (#13892)
  • Remove condition/c_if, duration, and unit from instructions (#13506)
  • Add default routing stage plugin (#13802)
  • Remove accidentally-public methods from QuantumCircuit (#13893)
  • Ignoring unsupported gates for Solovay-Kitaev transpiler pass (#13690)
  • Change the register name for measure_active to meas (#13866)
  • Warn on use of property_set kwarg to BasePassManger.run (#13821)
  • Ensure translation stage always outputs ISA circuits (#13792)
  • Add default translation stage plugin (#13794)
  • Add unitary gate representation to rust (#13759)
  • Have BlueprintCircuit.copy_empty_like return an empty QuantumCircuit (#13782)
  • Bump MSRV to 1.79 (#13709)

Removed

  • Update transpiler pipeline to (only) use target internally (#12850)
  • Remove pulse module files, pulse visualization and final cleanup (#13872)
  • Remove deprecated BackendV1 elements, including base class, providers.models and qobj modules (#13793)
  • Remove v1 primitive implementations (#13877)
  • Remove calibrations APIs and related functionality (#13861)
  • Remove fake backends based on BackendV1 and related tools (#13805)
  • Remove Provider ABC (deprecated in 1.1) (#13435)
  • Remove the classical_function module and all tweedledum-related code (#13815)
  • Remove pulse support in QPY in 2.0 (#13814)
  • Remove deprecated stochastic swap transpiler pass (#13791)
  • The unused parameter dag in DAGNode constructor is removed (#13863)
  • Remove condition/c_if, duration, and unit from instructions (#13506)
  • Remove deprecated legacy scheduling passes (#13876)
  • Remove use of BackendProperties (BackendV1) in transpiler pipeline (#13722)
  • Remove pulse from GenericBackendV2 (#13829)
  • Remove pulse-related passes (#13798)
  • Remove assemble and assembler module (#13748)
  • Remove use of deprecated objects in BasicSimulator (#13743)
  • Remove sort_key attribute from DAGNode (#13736)
  • Drop support for 32bit x86 linux and windows (#13650)
  • Remove CXCancellation (deprecated in 1.1) (#13426)
  • Remove deprecate_function and deprecate_arguments decorators (deprecated in 0.24) (#13448)

Fixed

  • Fix qpy for MCMTGate (#14096) (#14118)
  • Consistent sparse list format in sparse operators (#14067) (#14110)
  • Fix ignored errors/durations in generate_preset_pass_manager if dt is set (#14065) (#14098)
  • Fix global phase update in BasisTranslator Pass (backport #14078) (#14092)
  • Fixes to various graphs in the docs (#14055) (#14076)
  • Fix deepcopy/pickle of DAGCircuit variable IO nodes (backport #14041) (#14044)
  • Introduce custom sympy srepr parser [stable/2.0] (#14023)
  • Introduce custom sympy srepr parser [stable/1.4] (#14022)
  • Preserve bit locations through pickle (backport #13980) (#14011)
  • Fix string and standard gate mismatch in commutation checker (backport #13991) (#14004)
  • Preserve bit locations through pickle (#13981)
  • fix missing inverse definitions in generate_basis_approximations (#13517) (#13964)
  • fix missing inverse definitions in generate_basis_approximations (#13517)
  • Delegate BasePass.__call__ to PassManager.run (#13820)
  • Use average gate fidelity in the commutation checker (#13874)
  • Add 2q fractional gates to the ConsolidateBlocks transpiler pass (#13884)
  • Fix qpy serialization of substitution of type ParameterExpression (backport #13890) (#13943)
  • Fix qpy serialization of substitution of type ParameterExpression (#13890)
  • Circuits with control flow now raise a proper error when circuit_to_instruction is called (#13921)
  • Propagate DAGCircuit.name in ApplyLayout (#13910) (#13920)
  • Propagate DAGCircuit.name in ApplyLayout (#13910)
  • Fixing definition method for PyGate and PyInstruction (#13777)
  • Applying a slight perturbation for ill-conditioned matrices (#13882) (#13889)
  • Applying a slight perturbation for ill-conditioned matrices (#13882)
  • Fix incorrect stop time bug #8729 (#11097) (#13843)
  • Fix incorrect stop time bug #8729 (#11097)
  • Fix tracking of routing permutation in Sabre with disjoint backends (#13833) (#13835)
  • Fix tracking of routing permutation in Sabre with disjoint backends (#13833)
  • Consider unit in Delay comparisons (#13816) (#13827)
  • Consider unit in Delay comparisons (#13816)
  • Do not contract control-flow operations during SabreSwap (#13790)
  • Correctly updating global phase when removing gates that are identity up to a global phase (backport #13785) (#13825)
  • Correctly updating global phase when removing gates that are identity up to a global phase (#13785)
  • Fix CommutationChecker for 2q Pauli rotations (#13762) (#13804)
  • Fix CommutationChecker for 2q Pauli rotations (#13762)
  • Fix barrier label position when bits are reversed (#13780) (#13789)
  • Fix barrier label position when bits are reversed (#13780)
  • Fix random_clifford (#13606) (#13710)
  • Fix 4-pi periodicity of controlled rotations in the CommutationChecker (#13670) (#13676)
  • More conservative caching in the CommutationChecker (#13600) (#13677)
  • Fix 4-pi periodicity of controlled rotations in the CommutationChecker (#13670)
  • Fix an error in qasm3 exporter when operating on unitary gates (#13633) (#13663)
  • Fix an error in qasm3 exporter when operating on unitary gates (#13633)
  • Fix PauliEvolutionGate (using product formulas) for all-identity Pauli terms (#13634) (#13658)
  • Fix PauliEvolutionGate (using product formulas) for all-identity Pauli terms (#13634)
  • Fix UnitarySynthesis pass bug when target contains global gates (#13651) (#13656)
  • Fix Target.instruction_supported when target.num_qubits == None (#13655) (#13657)
  • Fix Target.instruction_supported when target.num_qubits == None (#13655)
  • Fix UnitarySynthesis pass bug when target contains global gates (#13651)
  • fix the 0 complex part (#13643) (#13646)
  • fix the 0 complex part (#13643)
  • Fix phase of pauli_list.insert(..., qubit=True) for length-1 pauli_list (#13624) (#13637)
  • Fix phase of pauli_list.insert(..., qubit=True) for length-1 pauli_list (#13624)
  • Allow mcrx, mcry and mcrz gate methods to accept angles of ParameterValueType (#13507)
  • More conservative caching in the CommutationChecker (#13600)
  • Fix UnitarySynthesis for 3+ qubits when compiled for a backend (#13591) (#13619)
  • Only apply MCMT plugin on MCMTGate (#13596) (#13618)
  • Fix UnitarySynthesis for 3+ qubits when compiled for a backend (#13591)
  • Only apply MCMT plugin on MCMTGate (#13596)
  • Fix random_clifford (#13606)
  • Fix SparsePauliOp initialization with dense Y labels (#13580) (#13611)
  • Fix SparsePauliOp initialization with dense Y labels (#13580)
  • Fix behavior of n_local calling circuits for num_qubits=1 (#13523) (#13575)
  • Fix behavior of n_local calling circuits for num_qubits=1 (#13523)
  • Check for gate parameter (#12439)
  • Discard cache for standard gates in assign_parameters (#13557) (#13559)
  • Discard cache for standard gates in assign_parameters (#13557)
  • Fix .decompose on control flow (#13545) (#13549)
  • Fix .decompose on control flow (#13545)
  • Fix registering global_phase parameters when creating CircuitData (#13538) (#13541)
  • Fix registering global_phase parameters when creating CircuitData (#13538)
  • Do not unroll gates in basis in add_control (#13475) (#13528)
  • Do not unroll gates in basis in add_control (#13475)
  • Fix InverseCancellation to run in classical blocks (#13454) (#13496)
  • Fix InverseCancellation to run in classical blocks (#13454)
  • Fix parameter handling for NLocal(..., flatten=True) and standard gates (#13482) (#13495)
  • Fix parameter handling for NLocal(..., flatten=True) and standard gates (#13482)
  • HLS fix to not synthesize instructions already supported (#13417) (#13441)
  • Fix process-based non-determinism in SparsePauliOp.to_matrix (#13439) (#13440)
  • Fix the calculation for identity operator's expectation value (#13345) (#13436)
  • HLS fix to not synthesize instructions already supported (#13417)
  • Fix process-based non-determinism in SparsePauliOp.to_matrix (#13439)
  • Fix the calculation for identity operator's expectation value (#13345)