github Qiskit/qiskit 2.6.0rc1
Qiskit 2.6.0rc1

pre-release3 hours ago

Added

  • Define Custom Operations via the C API (#16549)
  • Add base implementation of LoweringPassManager (#17105)
  • Define Pass and PassContext handles for Python (#17104)
  • Add implementation of IR handle extraction (#17103)
  • Define Python API for Rust-native PassManager (#17089)
  • Add Delay with units of Dt to the C API (#16915)
  • Expose the pass manager to C (#16839)
  • Add VtableEntry to C API (#17055)
  • Centralise dynamic-typing subsystem (#17050)
  • Add MCTS to default HLS synthesis plugin for PauliEvolution gates (#16879)
  • QPY: C API (#16881)
  • Add access to QkParam types from the C API (#16936)
  • A pass manager in Rust (#16820)
  • feat(dagcircuit): allow DAGCircuit.op_nodes to accept iterable of operation types (#16552)
  • Add dirty-ancilla Maslov MCX synthesis (#16815)
  • Add non-allocating instruction views to C API (#16798)
  • Implement SparseObservable.to_matrix (#16809)
  • Add ParameterExpression.structurally_equal via SymbolExpr::eq_exact (#16952)
  • Implement MCTS algorithm for synthesizing PauliEvolution gates (#16581)
  • QPY 18: store each ParameterVector once and reference it by index (#16846)
  • Add barrier label rendering with barrier_label_len to the Rust circuit drawer (#16598)
  • feat: add qk_obs_with_capacity (#16889)
  • Update Register pack for QPY v18 (#16813)
  • Improved synthesis of MCXGate without ancillas (#16693)
  • Allow null pointer in qk_circuit_barrier (#16797)
  • Expose n_local to C API (#16295)
  • New efficient decomposition of MCPhaseGate (#16550)
  • Synthesize controlled RCCX with an exact compact decomposition (#16657)
  • Parameter label added to all QuantumCircuit gate-methods that produce a single gate (#16373)
  • Make a shallow copy of metadata in QuantumCircuit <> DAG conversion (#16142)
  • Rewrite OpenQASM 2 expression parser as iterative (#16425)
  • Allow transpile() to accept a Target as the backend positional argument (#15954)
  • Use ParameterExpression.numeric() in SparsePauliOp.simplify (#16345)

Fixed

  • Raise ValueError when BitArray samples do not fit in num_bits (#17123)
  • Preserve seeded pass-manager qubit metadata (#16827)
  • Fix divide by zero in QDrift.expand (#17117)
  • Leave unitaries unchanged when UnitarySynthesis has no basis or target (#16944)
  • Make null-freeing uniform across the C API qk_*_free functions (#17067)
  • QPY ancilla registers handling (#16836)
  • Rename identifiers colliding with OpenQASM 3 built-in constants (#16183)
  • Fix star-import of qiskit.visualization (#17008)
  • Fix potential panics in QPY deserialization on malformed payloads (#16973)
  • Fix: CouplingMap storing parallel edges (#16988)
  • Avoid hard allocation abort from QPY provided sizes (#16966)
  • Fix GIL deadlock in CommutationAnalysis with Python-defined gates (#16963)
  • Fix Litinski transformation on PPR with 32+ qubits (#16950)
  • Fixed HighLevelSynthesis qubit tracking for if-then-else instructions (#16896)
  • Apply to_instruction parameter_map to definition.global_phase (#16234)
  • Fix BlueprintCircuit.compose to respect inline_captures (#16538)
  • fix(transpiler): preserve layout in OptimizeSwapBeforeMeasure (#16920)
  • Fix identity one-qubit gates in the U and U3 Euler bases (#16834)
  • Accumulate add/sub in SymbolExpr on the fly (#16753)
  • fix template optimization bug (#10151)
  • Bug-Fix: BarrierBeforeFinalMeasurements can reorder measurements sharing the same Clbit and change circuit semantics (#16900)
  • Fix ParameterExpression equality for inverse vs negative power (#16840) (#16883)
  • Keep identical summands when running FindCommutingPauliEvolutions. (#16892)
  • Implement Drop for SymbolExpr iteratively (#16775)
  • Port synth_cnot_phase_aam to Rust (#12937)
  • Fix DAGCircuit.__eq__ with Unitary, PPRs and PPMs (#16826)
  • Fixed Litinski transformation on PPMs with negative phases (#16880)
  • Fix spurious clone on SparsePauliOp.to_matrix(sparse=False) (#16828)
  • QPY: Bug fix in Rust implementation of SparsePauliObservableElemPack (#16788)
  • Preserve MCPhase parameters in MCX synthesis (#16781)
  • Reject multi-qubit Solovay-Kitaev basis gates (#16718)
  • Sum VF2Layout average errors in a deterministic order (#16732)
  • Fix add/sub optimizations including the same symbols (#16752)
  • Reimplement SymbolExpr::eval to be iterative (#16756)
  • dagcircuit: transfer DAG-level variables in substitute_node_with_dag (#15542)
  • Fix memory leak in Suzuki-Trotter synthesis (#16687)
  • Fix OptimizeCliffordT producing non-unitarily-equivalent output when basis excludes sx/sxdg (#16729)
  • Fix potential panic in DAGCircuit.depth by bumping rustworkx-core to 0.18.1 (#16686)
  • Parameter expression bugfixes (#16283)
  • Update to rsgridsynth 0.2.2 (#16685)
  • Consistent identity removal for ConsolidateBlocks (#16082)
  • Preserve StatePreparation width in inverse (#16431)
  • Fix circuit drawing layer overlaps inside of ControlFlowOps (#16639)
  • Fix non-determinism in DAGCircuit::remove_qubits (#16656)
  • Fix serial_layers global phase copying (#16362)
  • Fix deadlock in Optimize1qGatesDecomposition (#16592)
  • Fix transpiler error message with routing_pass when layout_trials or swap_trials is set (#16637)
  • Clarify error message about gate missing from WrapAngleRegistry (#16633)
  • Fix sx resynthesis of negative angles in CommutativeCancellation (#16599)
  • Use target error rates when selecting Euler basis in Optimize1qGatesDecomposition (#16575)
  • Fix commuting2q block parameter preservation (#16459)
  • Fix tautological boolean oracle synthesis (#16530)
  • fixes #11393 sampled_expectation_value returning incorrect results for complex coefficients (gave 0.0 rather than 1j) (#16443)
  • Fix OverflowError in QuantumCircuit.for_loop for negative integers in list indexset (#16432)
  • Fix Initialize.gates_to_uncompute for integer inputs (#16492)
  • Fix incorrect global phase shift for P and U1 gates in CommutativeCancellation (#16402)
  • Fix qasm3 experimental exporter delay units for ms and ps (#16233)

Changed

  • Add Delay with units of Dt to the C API (#16915)
  • Disable multiprocessing by default on Linux (#16904)
  • Add Param::Int variant for Dt in Rust. (#16768)
  • OQ2 import: Move custom-instruction expression evaluation fully into Rust (#16697)
  • Split PyDAGCircuit and DAGCircuit (#16471)
  • QPY: make custom gate names deterministic (#16843)
  • Narrow QPY 18 SPARSE_OBSERVABLE bit terms from uint16_t to uint8_t (#16800)
  • QPY 18: give the register/clbit payload a tag byte instead of a "\x00"-prefixed string (#16765)
  • Qpy v18 big endian (#16707)

Build System

  • Bump MSRV to 1.89 (#16603)
  • Bump setuptools-rust to 1.13 (#16500)

Performance

  • Faster Heisenberg-frame evolution of Paulis by Clifford (#16842)
  • Migrate synth_mcx_{1,2}_kg24 to Rust (#16783)
  • speed up case of BasePauli._evolve_clifford (#16835)
  • Port synth_mcx_noaux_sp22 to Rust (#16818)
  • Port synth_cnot_phase_aam to Rust (#12937)
  • Allow calloc-like optimisations in SparsePauliOp allocations (#16830)
  • Port synth_mcp_noaux_sp22 to Rust (#16755)
  • Port the Quantum Fourier Transform (QFT) all-to-all implementation to Rust (#16789)
  • Allow null pointer in qk_circuit_barrier (#16797)
  • Migrate synth_mcx_n_clean_m15 to Rust (#16703)
  • Migrate synth_mcx_1_clean_b95 synthesis to Rust (#16710)
  • Remove redundant name check when adding QuantumCircuit registers. (#16678)
  • Simplify optimization loops in Clifford+T pass manager (#16406)
  • Fix cache and prediction misses in Target::qargs (#16476)

Don't miss a new qiskit release

NewReleases is sending notifications on new releases.