Skip to content

Releases: harmoniqs/Legato.jl

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 08:30
1832644

Legato v0.5.0

Diff since v0.4.0

Changes

  • Renamed from Stretto to Legato. Registered as a new package with a new UUID (2220d95b-0ec6-412e-99be-c6a5d269006d); the prior Stretto package (UUID 6542ec78-ee1b-4af1-b08f-242328baa654) is retired. No functional changes — same circuit-to-pulse compilation API under the new name.

Merged pull requests:

  • docs: rewrite README with quantikz hero diagram (#4) (@aarontrowbridge)
  • feat: HeronR3(n_levels) kwarg + bell_circuit() + :SX gate + public 1Q demo (#5) (@aarontrowbridge)
  • chore(ci): retire CompatHelper, switch to Dependabot for Julia + Actions (#6) (@jack-champagne)
  • chore(deps): bump julia-actions/cache from 2 to 3 (#7) (@dependabot[bot])
  • chore(deps): bump actions/upload-artifact from 4 to 7 (#8) (@dependabot[bot])
  • chore(deps): bump julia-actions/setup-julia from 2 to 3 (#9) (@dependabot[bot])
  • chore(deps): bump actions/checkout from 4 to 6 (#10) (@dependabot[bot])
  • chore(deps): bump peter-evans/repository-dispatch from 2 to 4 (#11) (@dependabot[bot])
  • chore(deps): bump codecov/codecov-action from 5 to 6 (#13) (@dependabot[bot])
  • Add OpenQASM 3 import for GateCircuit (#24) (@Kitsunp)
  • feat(profiles): add IQMEmerald() — Crystal 54 full device profile (#26) (@kateebonner)
  • Add FFT pulse-spectrum analyzer (closes #12) (#27) (@Oishi1029)
  • chore(deps): bump codecov/codecov-action from 6 to 7 (#28) (@dependabot[bot])
  • Add HeronR2 device profile (#29) (@codexbountylab)
  • chore(deps): bump actions/checkout from 6 to 7 (#34) (@dependabot[bot])
  • Rename Stretto → Legato; add CompatHelper workflow (#35) (@jack-champagne)

Closed issues:

  • Add FFT pulse-spectrum analyzer (#12)
  • Add OpenQASM 3 circuit input (from_qasm) (#14)
  • Add IBM Heron R2 device profile (#15)
  • unitaryHACK 2026 — Bounty Tracking (#16)

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 30 Apr 04:13
321ff57

Stretto v0.4.0

Diff since v0.2.1

Changelog

This release jumps from v0.2.1 to v0.4.0 because v0.3.0 was bumped internally but never registered — its changes ship together with v0.4.0 below. No breaking changes to user-facing API; all changes are additive (new seams, new transpile pass) or internal refactors that preserve behavior at the compile() entry point.

Changes

  • compile() now routes through a CompilationStrategy registry with best-score dispatch; :default strategy registered at module load. Existing direct callers of compile() continue to work — the :default strategy mirrors the v0.2 substrate behavior.
  • Refactored compile pipeline through composable seams: build_problem, classify_problem, post_process (substrate defaults; users may override).

Added

  • to_native(circuit, device) — pure circuit-rewriting transpile pass that decomposes non-native gates into the device's native set. v0.4 ships CNOT/CX → H·CZ·H; pass-through for already-native ops; ArgumentError for unrewritable gates.
  • native_gate_set(device) accessor returning Set(keys(device.native_gates)).
  • CompilationStrategy struct with keyword constructor + the seam slots integrator, initial_pulse, partitioner, solver_strategy, classify_problem, build_problem, post_process.
  • register_strategy!, unregister_strategy!, strategies() accessors.
  • select_strategy(circuit, device) — best-score with :default fallback.
  • default_initial_pulse, default_partitioner, default_solver_strategy, set_*! setter pairs for each (substrate seams).
  • BlockSpec (single-block partition, whole-circuit-as-one-block substrate).
  • PostProcessContext (carries circuit, device, qtraj, problem to post-process transforms).
  • :H added to HeronR3() native_gates so catalog-seeded H pulses compose with the transpile pass without an extra SX-decomposition step.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 21 Apr 21:38

Stretto v0.2.1

v0.2.1

Added

  • Three new extension seams, each with a substrate default so existing Stretto-only
    users see no behavior change: default_initial_pulse, default_partitioner (+
    BlockSpec), default_solver_strategy.
  • Matching setters: set_default_initial_pulse!, set_default_partitioner!,
    set_default_solver_strategy!.

Changed

  • compile now routes through default_partitioner; currently asserts single-block
    output. Multi-block composition is planned for a future release.
  • compile_block now builds its initial pulse via default_initial_pulse and runs
    its solve via default_solver_strategy.

Removed

  • :piccolissimo, :integration testitems in src/compile.jl. These tests moved to
    the private Strettissimo.jl package, which depends on Piccolissimo and validates
    the override paths against the real spline integrator.