0.18.0 - 2026-04-09

Added

  • Added the add_tags option to :func:~samplomatic.transpiler.generate_boxing_pass_manager and the :class:~samplomatic.transpiler.passes.AddTags transpiler pass. When enabled, a :class:~samplomatic.annotations.Tag annotation is automatically added to every box. Two modes are supported: 'unique_box' assigns the same hash-based ref to structurally equivalent boxes, and 'unique_instance' assigns a unique incrementing ref (t0, t1, …) to every box in the circuit. (#342)

  • Added the debug option to build() that populates debug/trace information on samplex nodes, enabling users to trace nodes back to their originating box annotations. (#345)

  • Added map_annotations(), strip_annotations(), filter_annotations(), extend_annotations(), and replace_annotations() utilities to samplomtic.utils for modifying annotations on existing circuits. (#347)

Improved

  • Improved the two synthesizers RzRxSynth and RzSxSynth to always generate Clifford angles when given a U2 gate that is Clifford. It is only possible to end up with non-Clifford angles when the gate being synthesized is a Z rotation, or a pi-gate of some angle. Either case leads to a degree of freedom in how to distribute the angle between the first and last RZ gate of the synthesis. This was fixed by enforcing the last angle be 0 in both cases. (#341)

Fixed

  • Fixed samplomatic.utils.default_normalize_annotations() to also keep Tag annotations, in addition to InjectNoise and Twirl annotations. (#343)