Skip to content

feat!: Add measurement extension and change tket.quantum / tket.qsystem extension measurement ops return type#1558

Open
tatiana-s wants to merge 19 commits intomainfrom
ts/future-measure
Open

feat!: Add measurement extension and change tket.quantum / tket.qsystem extension measurement ops return type#1558
tatiana-s wants to merge 19 commits intomainfrom
ts/future-measure

Conversation

@tatiana-s
Copy link
Copy Markdown
Contributor

@tatiana-s tatiana-s commented Apr 30, 2026

Closes #1484

Also deprecates the bool extension and deletes all relevant passes + adds a measurement replacement pass

TODO: Fix remaining pytket decoder bugs (tket-qsystem::guppy_opt optimize_flattened_guppy::case_6_false_branch and tket::serialize::pytket::tests::circuit_standalone_roundtrip::case_3_preset_bits)

BREAKING CHANGE: tket.quantum extension - MeasureFree returns a Measurement instead of a tket.bool
BREAKING CHANGE: tket.qsystem extension - Measure and MeasureReset return a Measurement instead of a tket.bool
BREAKING CHANGE: (tket-exts) opaque_bool removed

@hugrbot
Copy link
Copy Markdown
Collaborator

hugrbot commented Apr 30, 2026

This PR contains breaking changes to the public Rust API.

cargo-semver-checks summary
    Building tket v0.18.0 (current)
     Built [  42.563s] (current)
   Parsing tket v0.18.0 (current)
    Parsed [   0.116s] (current)
  Building tket v0.18.0 (baseline)
     Built [  42.549s] (baseline)
   Parsing tket v0.18.0 (baseline)
    Parsed [   0.111s] (baseline)
  Checking tket v0.18.0 -> v0.18.0 (assume minor change)
   Checked [   0.140s] 196 checks: 190 pass, 6 fail, 0 warn, 56 skip

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_missing.ron

Failed in:
enum tket::extension::bool::BoolOp, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:118

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/function_missing.ron

Failed in:
function tket::extension::bool::bool_type, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:65
function tket::extension::bool::bool_custom_type, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:54

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/module_missing.ron

Failed in:
mod tket::extension::bool, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:1
mod tket::llvm::bool, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/llvm/bool.rs:1

--- failure pub_module_level_const_missing: pub module-level const is missing ---

Description:
A public const is missing or renamed
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/pub_module_level_const_missing.ron

Failed in:
BOOL_EXTENSION_VERSION in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:25
BOOL_EXTENSION_ID in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:23

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/struct_missing.ron

Failed in:
struct tket::llvm::bool::BoolCodegenExtension, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/llvm/bool.rs:30
struct tket::extension::bool::BoolOpIter, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:111
struct tket::serialize::pytket::extension::BoolEmitter, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/serialize/pytket/extension/bool.rs:26
struct tket::extension::bool::BOOL_TYPE_NAME, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:27
struct tket::extension::bool::BOOL_EXTENSION, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:27
struct tket::extension::bool::ConstBool, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:71

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/trait_missing.ron

Failed in:
trait tket::extension::bool::BoolOpBuilder, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket/src/extension/bool.rs:191

   Summary semver requires new major version: 6 major and 0 minor checks failed
  Finished [  87.722s] tket
  Building tket-qec v0.1.0 (current)
     Built [  37.565s] (current)
   Parsing tket-qec v0.1.0 (current)
    Parsed [   0.006s] (current)
  Building tket-qec v0.1.0 (baseline)
     Built [  36.522s] (baseline)
   Parsing tket-qec v0.1.0 (baseline)
    Parsed [   0.006s] (baseline)
  Checking tket-qec v0.1.0 -> v0.1.0 (assume minor change)
   Checked [   0.014s] 196 checks: 196 pass, 56 skip
   Summary no semver update required
  Finished [  75.727s] tket-qec
  Building tket-qsystem v0.24.0 (current)
     Built [  43.289s] (current)
   Parsing tket-qsystem v0.24.0 (current)
    Parsed [   0.026s] (current)
  Building tket-qsystem v0.24.0 (baseline)
     Built [  43.243s] (baseline)
   Parsing tket-qsystem v0.24.0 (baseline)
    Parsed [   0.026s] (baseline)
  Checking tket-qsystem v0.24.0 -> v0.24.0 (assume minor change)
   Checked [   0.059s] 196 checks: 191 pass, 5 fail, 0 warn, 56 skip

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_missing.ron

Failed in:
enum tket_qsystem::replace_bools::ReplaceBoolPassError, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket-qsystem/src/replace_bools.rs:43

--- failure enum_variant_missing: pub enum variant removed or renamed ---

Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_variant_missing.ron

Failed in:
variant QSystemPassError::ReplaceBoolError, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket-qsystem/src/lib.rs:74

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/inherent_method_missing.ron

Failed in:
QSystemPass::with_lazify, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket-qsystem/src/lib.rs:138

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/module_missing.ron

Failed in:
mod tket_qsystem::replace_bools, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket-qsystem/src/replace_bools.rs:1

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
      ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
     impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/struct_missing.ron

Failed in:
struct tket_qsystem::replace_bools::ReplaceBoolPass, previously in file /home/runner/work/tket2/tket2/BASELINE_BRANCH/tket-qsystem/src/replace_bools.rs:70

   Summary semver requires new major version: 5 major and 0 minor checks failed
  Finished [  89.901s] tket-qsystem

@tatiana-s tatiana-s marked this pull request as ready for review May 6, 2026 15:30
@tatiana-s tatiana-s requested a review from a team as a code owner May 6, 2026 15:30
@tatiana-s tatiana-s requested a review from acl-cqc May 6, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Add Measurement type and adjust measurement ops to use it instead of tket.bool

2 participants