Release notes: https://qiskit.org/documentation/release_notes.html#terra-0-23-0
Changelog
Deprecated
- Add deprecation warning on use of qiskit.IBMQ (8080)
- Deprecate LinearFunctionsSynthesis transpiler pass (9041)
- Refactor state latex drawer (8874)
- Relax register-naming restrictions (9100)
- Deprecate old path to QPY (9225)
- Correct deprecation of old pulse visualization (9146)
- Transfer clifford and cnot-dihedral synthesis functions from quantum_info to synthesis (9141)
- Deprecate Python 3.7 support (8942)
- Deprecate lists for argument input on transpile() (8835)
- Fix pauli_basis deprecation (8905)
Added
- Constructing Cliffords from quantum circuits with other Cliffords (9169)
- Add importer for OpenQASM 3 (9347)
- High-level-synthesis for permutations (9157)
- Implements VarQTE algorithm with primitives. (8746)
- Add final layout to output quantum circuit from transpiler (8597)
- Primitives support the dynamic circuits with control flow (9231)
- Add option to user config to control reverse_bits in circuit drawer (9211)
- Efficient classical calculation of expectation gradients (9287)
- Split `QFI` into `QFI` and `QGT` (9085)
- Convert Equivalence Library to graph (8790)
- Add FakeSherbrooke backend (9339)
- Lazy pulse qobj loading for large backend (8885)
- Add FakePrague Egret R1 to fake backends (9369)
- Introducing ScalableSymbolicPulse to correctly compare pulses of amp,angle representation (9314)
- support gate powering with ** (9030)
- Add option to allow passing unknown parameters to ParameterExpression.bind (9304)
- Speed up `Clifford.compose` (7483)
- Synthesis of a Clifford circuit into layers (9220)
- add dtype parameter to PauliSumOp.from_list (8896)
- Add efficient gate power methods (9318)
- Translate parameterized gates only in gradient calculations (9067)
- Refactor z2symmetries (9227)
- Numerical Integration methods for real and imaginary time evolution. (8399)
- Refactor gradients for extensibility (9084)
- Add the Solovay-Kitaev algorithm to the transpiler passes (5657)
- Various improvements to AdaptVQE (9215)
- Oxidize SabreLayout pass (9116)
- Add DAGCircuit output option to OneQubitEulerDecomposer (9188)
- Adding linear synthesis algorithm for LNN (9098)
- Adding CollectAndCollapse transpiler pass (8907)
- Fully QPY compatible pulse builder for V2 and runtime backend (8949)
- Improve performance of VF2 scoring and add support for scoring passes (9026)
- Increase Accuracy of OpenQASM 2.0 Dump (8250)
- Update Optimize1qGatesDecomposition to be Target aware (8917)
- Adding permutation synthesis algorithm for LNN (9082)
- Add gradient methods to FinDiffGradients (9104)
- Calculate relative, not absolute, scores in SabreSwap (9012)
- Add support for Python 3.11 (9028)
- Improve LinearFunction synthesis (8568)
- Add implicit iteration to CouplingMap (9051)
- QFI with the primitives (8688)
- add QuantumCircuit.from_instructions (9006)
- Speed up `random_circuit` (8983)
- Add missing equivalences for XX{Plus,Minus}YYGate (9017)
- Make UnrollCustomDefinitions pass target aware (8784)
- Return `DAGOpNode` from `dagcircuit.replace_block_with_op` (8799)
Changed
- Refactor state latex drawer (8874)
- Convert Equivalence Library to graph (8790)
- Relax register-naming restrictions (9100)
- Introducing ScalableSymbolicPulse to correctly compare pulses of amp,angle representation (9314)
- Oxidize SabreLayout pass (9116)
- Converting the pulse library from complex amp to amp+angle (9002)
- Adding CollectAndCollapse transpiler pass (8907)
- Fully QPY compatible pulse builder for V2 and runtime backend (8949)
- Switch from retworkx to rustworkx package (9162)
- Improve LinearFunction synthesis (8568)
- Use TOQM routing staged pass manager. (9042)
- Speed up `random_circuit` (8983)
- Remove tweedledum as a core dependency (8947)
- Add singledispatchmethod to dependency (8944)
- Fix transpile() for control flow operations with a Target/BackendV2 (8852) (8889)
Removed
- Remove `label` argument from MCMTVChain and MCMT (9324)
- Remove `gate` argument from qiskit.transpiler.passes.Decompose (9325)
- Remove deprecated MSBasisDecomposer transpiler pass (9342)
- Remove deprecated `measure` and `reset` circuit operations (9278)
- Remove deprecated functions from `ParameterView` (9184)
- Remove deprecated redirects from visualization (9131)
- Removed NLocal inital_state that is not a QuantumCircuit (9081)
- Remove deprecated networkx dag converter functions (9035)
- Remove deprecated methods from QuantumCircuit (8980)
Fixed
- Fix add_calibration bug (9223) (9451)
- Fix `PauliOp.adjoint()` (9434) (9443)
- Fix qpy for `MCX` gates (9391) (9412)
- Fix ``TensoredOp.to_matrix`` with global coefficients (9404) (9408)
- Fix the ``AmplitudeEstimator`` algorithms for primitive usage (9394) (9407)
- Constructing Cliffords from quantum circuits with other Cliffords (9169)
- Make BackendSampler set shots and stddev_upper_bound of returned QuasiDistribution (9312)
- Barrier support for `visualize_transition` and refactor (8834)
- Fix PauliOp matmul with iI & add PauliOp test (9321)
- Relax register-naming restrictions (9100)
- Fix: AQC returns a wrong circuit when the unitary has a determinant −1 (9331)
- Fix PVQD loss function (9371)
- Fix `QuantumCircuit.compose` on unusual types and registers (9206)
- Update `qiskit.utils.wrap_method` for Python 3.11 (9310)
- Fix ``ComposedOp.to_matrix`` (9316)
- Fix `NumPyEigensolver` with `SparsePauliOp` (9101)
- Fix PulseQobj converter name collision (8839)
- Feature/trivial gate inversions (9262)
- Fix primitives metadata (9285)
- Refactor gradients for extensibility (9084)
- Fix `LinCombSamplerGradient` to leverage `AerSampler` (9258)
- Fix `betas` calculation on `VQD` and async. cost evaluation (9245)
- Fix a transpile issue of BackendSampler (9236)
- Performance improvement of `_DiagonalEstimator` (9229)
- Fix the ``aggregation`` argument of ``SamplingVQE`` (9221)
- Fix ordering of dims in QuantumState.probabilities_dict (9214)
- Enable simplifying 1q runs and 2q blocks in transpile() without target (9222)
- Fix shots argument of local_readout_mitigator (9155)
- Infer `cregbundle` for all drawers (9133)
- Fully QPY compatible pulse builder for V2 and runtime backend (8949)
- fix: overwrite AdaptVQE.supports_aux_operators (9142)
- Fix serialization of primitives (9076)
- fix 9102 (9103)
- Reinstate `pulse.Instruction.draw` (9144)
- Fix random seed initialization between runs in SabreSwap (9127)
- Use float-epsilon calculation in Sabre best scores (9117)
- Fixed sign bug in docs in LinCombEstimatorGradient. (9113)
- 🐛 fix deprecated `Loader.load_module()` (9078)
- Fix QPY handling of registers (9095)
- Fix Backend primitive classes for BackendV1 with no max_experiments (9069)
- Improve LinearFunction synthesis (8568)
- Avoid deepcopy in pulse parser (9063)
- Fix incorrect graph construction in VF2PostLayout (9058)
- Make TwoQubitWeylDecomposition pickle-able (7333)
- Fix default batching in variational algorithms (9038)
- Fix handling of global ideal gates for target build_coupling_map() (8977)
- Fix backend primitives on backends with job size limit (8955)
- Fix zero-operand gates and instructions (8272)
- Fix transpile() with a Target containing an ideal Measure (8995)
- Fix `VQD` for `k>2` (8989)
- Fix manifest entry for mpl styles (9004)
- fix 8992 (8998)
- Fix VF2Layout and VF2PostLayout handling of instructions without error (8978)
- Cast ParameterExpression to float in RZXBuilder and RZXCalibrationBuilderNoEcho (8965)
- Avoid skipping channels in pulse visualizer (8974)
- Fix parallel dispatch with target argument in transpile() (8952)
- Fix Statevector.evolve and DensityMatrix.evolve for mixed dimension subsystems (8900)
- Fix classical-bit handling in control-flow StochasticSwap (8906)
- Fix single-bit-condition equality in QuantumCircuit and DAGCircuit (8930)
- Fix `BarrierBeforeFinalMeasurements` with loose bits (8924)
- Fix handling of globally defined operations in Target (8925)
- Fix qpy custom ControlledGate with overloaded _define() (8927)
- Fix loose-bit handling in QPY (8928)
- Fix pauli_basis deprecation (8905)
- Fix transpile() for control flow operations with a Target/BackendV2 (8852) (8889)
- Fix pauli.evolve dtype casting error (8877) (8884)
- Fix pauli.evolve dtype casting error (8877)