0.21.0 - 2026-08-25

Added

  • Added the strategy argument to GroupGatesIntoBoxes to determine how to to assign two-qubit gates to boxes, allowing for new strategies like "alap". The default behavior has not changed and corresponds to the "asap" strategy. This can also be specified with the new boxing_strategy argument of generate_boxing_pass_manager. (#380)

  • Added support for delay in GroupGatesIntoBoxes, GroupMeasIntoBoxes, and AddTerminalRightDressedBoxes. Added support for reset in GroupGatesIntoBoxes and AddTerminalRightDressedBoxes. (#381)

  • Added support for Delay operations with Stretch durations. (#384)

  • Added decomposition argument to AddTerminalRightDressedBoxes. (#392)

  • Added samplomatic.quantum_program module to store QuantumProgram, QuantumProgramResults, and all the related classes. (#396)

Fixed

  • Fixed a crash in generate_boxing_pass_manager when the input circuit contained inline GlobalPhaseGate (or other zero-bit) instructions. The GroupGatesIntoBoxes and GroupMeasIntoBoxes passes now treat zero-qubit standard gates as pass-through and no longer fail on operations with empty qargs and cargs (such as a zero-width barrier). Note that, independently, build() does not and has never preserved QuantumCircuit.global_phase in the template circuit; this expected behavior is now documented in the build() docstring. (#377)

  • Fixed samplomatic.visualization.plot_graph() to draw straight lines between nodes when the edge data is missing. Prior to this fix, it used a spline that sometimes ended up curved in strange ways. (#378)

  • The decomposition argument now applies to terminal right dressed-boxes in generate_boxing_pass_manager. Previously, it would always use rzsx. (#392)

  • When the boxing pass manager encounters an instruction whose name starts with "meas", it treats it as a standard measurement instruction. (#399)

  • Named reset instructions, such as "reset_2", are now recognized by the boxing passes and by :class:~.BoxKey. (#400)