Skip to content

v1.13.0 - Freed Flows

Compare
Choose a tag to compare
@Strilanc Strilanc released this 18 Mar 06:31
· 63 commits to main since this release
b01e423

Flagship changes:

  • Added support for representing and verifying stabilizer flows (stim.Flow, stim.Circuit.has_flow, stim.Circuit.detecting_regions)

Notable changes:

  • New top-level methods/types:
    • Added stim.Flow class for representing stabilizer flows
    • Added stim.target_pauli
    • Added stim.target_combined_paulis
    • Added stim.PauliStringIterator
  • New stim.Circuit methods:
    • Added stim.Circuit.decomposed
    • Added stim.Circuit.detecting_regions
    • Added stim.Circuit.to_qasm
    • Added stim.Circuit.has_flow
    • Added stim.Circuit.has_all_flows
    • Added stim.Circuit.shortest_error_sat_problem
    • Added stim.Circuit.likeliest_error_sat_problem
  • New stim.GateData methods:
    • Added stim.GateData.{__eq__,__ne__,__repr__,__init__,__str__}
    • Added stim.GateData.flows
    • Added stim.GateData.generalized_inverse
    • Added stim.GateData.inverse
  • New stim.PauliString methods:
    • stim.PauliString.__init__ now allows sparse syntax (like stim.PauliString("-X50*Z99"))
    • Added stim.PauliString.iter_all
    • Added stim.PauliString.pauli_indices
    • Added stim.PauliString.weight
    • Sped up stim.PauliString.{after,before} by over 10x
  • New stim.Tableau methods:
    • Added stim.Tableau.to_circuit("graph_state")
    • Added stim.Tableau.to_circuit("mpp_state")
    • Added stim.Tableau.to_circuit("mpp_state_unsigned")
    • Added stim.Tableau.to_stabilizers
    • Sped up stim.Tableau.from_stabilizers by over 200x
  • New stim.FlipSimulator methods:
    • Added stim.FlipSimulator.broadcast_pauli_errors
  • New gates:
    • Added CZSWAP gate (with alias SWAPCZ)
    • Added SPP gate (generalized S gate that applies to Pauli products)
    • Added SPP_DAG (inverse of SPP)
  • Added sinter.FusionBlossomCompiledDecoder, speeding up decoding with fusion blossom
  • Added sinter plot --ymax command line argument
  • stimcirq now converts PAULI_CHANNEL_2 into cirq's native asymmetric channel
  • Added Bloch Rotation (Euler angles) to gate documentation
  • Added prebuilt wheels for python 3.12
  • Tweaked sinter plot's marker/color ordering to increase how many curves are needed to get two curves that look similar

Notable bug fixes:

  • Fixed sinter plot --xaxis only applying to one subplot, instead of all subplots
  • Fixed build-from-source not working on IBM PowerPC
  • Fixed HERALDED_PAULI_CHANNEL_1 targeting the wrong qubits (this fix was also backported to 1.12.1)
  • Fixed stim.Circuit.explain_dem_errors not supporting all gates
  • Fixed crumble not allowing e and q to repeatedly move between layers when held down
  • Fixed crumble not falling back to an emulated clipboard when clipboard permissions weren't granted

Special thanks to this release's contributors:

@fdmalone
@markturner289
@mmcewen-g
@nickdgardner
@noajshu
@tomirendo