QDMI v1.4.0
Quantum Device Management Interface
Loading...
Searching...
No Matches
Changelog

All notable changes to this project will be described in this document. The format is based on a mixture of Keep a Changelog and Common Changelog.

This project adheres to Semantic Versioning, with the exception that minor releases may include breaking changes. Particularly, QDMI device implementations compiled against a particular version 1.x.y of the QDMI headers are expected to be compatible with QDMI drivers and, hence, QDMI clients compiled against any patch release in the 1.x series, but not necessarily with QDMI drivers and clients compiled against a different minor or major version.

Unreleased

1.4.0 - 2026-10-11

If you are upgrading: please see `UPGRADING.md`.

Added

  • ✨ Provide a shared enum-range check for QDMI device and driver implementations (#511) (@burgholzer, @ystade).
  • ✨ Define the existing Client Interface as a versioned, replaceable QDMI driver ABI (#511) (@burgholzer, @ystade).
  • ✨ Add mandatory stable client-visible IDs for configured top-level devices (#511) (@burgholzer, @ystade).
  • ✨ Add native Windows library loading to the example driver (#511) (@burgholzer, @ystade).
  • ✨ Add optional target-specific export control for device and client libraries (#559) (@marcelwa)
  • ✨ Add ordered multi-program jobs with one aggregate lifecycle, indexed program and result queries, optional individual status queries, and three required Device Interface job functions (#509) (@ystade, @burgholzer).

Changed

  • 📝 Reorganize documentation around QDMI's international ecosystem, origins, maintenance, and integration roles. Add publication-backed adoption accounts, MQT Core's DDSIM device, public MQSS components, IBM and other hardware integrations, and implementation guides; fix navigation, API-index anchors, contributor links, and responsive layouts, and provide reproducible onboarding (#575) (@denialhaag, @burgholzer).
  • 💥 Make Client session allocation the first stateful driver call and remove the example driver's separate initialization and shutdown functions (#511) (@burgholzer, @ystade).
  • 📝 Document installation and CMake consumption of the QDMI interface (#538) (@marcelwa, @burgholzer)
  • 🔧 Make CMake package version checks architecture-independent (#538) (@burgholzer)
  • 🔧 Leave compiler launchers and debug flags to CMake package consumers (#538) (@burgholzer)
  • 💥 Add a program index to QDMI_job_get_results and QDMI_device_job_get_results, pass program formats by value, and use the atomic program-list setter for single-program jobs (#509) (@ystade, @burgholzer).
  • 💥 Drop x86 macOS from QDMI's tested platforms (#515) (@denialhaag)
  • ⬆️ Raise generated device projects' macOS deployment target to 13.3 (#515) (@denialhaag)
  • 💥 Require generated device projects to use Python 3.11 or newer (#515) (@denialhaag)

Fixed

  • 🐛 Keep the example device job ready when result preparation fails instead of letting a C++ exception escape the Device Interface (#576) (@burgholzer).
  • 🐛 Reject incorrectly sized shot-count values in the example device before reading them (#576) (@burgholzer).
  • 🐛 Avoid exposing or leaking a client job when the example driver's device job creation fails (#576) (@burgholzer).
  • 🐛 Allow the example driver to open one device library more than once with distinct stable IDs (#511) (@burgholzer, @ystade).
  • 🐛 Release example-driver device libraries when the final session closes, before process-wide dependency teardown (#511) (@burgholzer, @ystade).
  • 🐛 Allow the example driver to open devices without token authentication while propagating authentication errors (#511) (@burgholzer, @ystade).
  • 🐛 Preserve timestamps of unchanged prefixed headers to avoid redundant builds (#537) (@burgholzer)

Removed

  • 💥 Replace the batch-job format, separate format and program job parameters, and the single-program PROGRAM property with ordered program lists and indexed getters, reserving the removed enum values (#509) (@ystade, @burgholzer).
  • 💥 Remove the calibration program format. Providers can expose calibration submission through a separate function (#551) (@burgholzer).
  • 💥 Remove the unused pulse-support device property and level type. Providers can expose pulse programming through a separate vendor interface (#513) (@burgholzer).
  • 💥 Remove the unused calibration advisory device property. Providers can expose proprietary calibration metadata with a custom property (#512) (@burgholzer).

1.3.3 - 2026-08-19

If you are upgrading: please see `UPGRADING.md`.

Added

  • 🚸 Add support for retrieving existing jobs by their IDs (#485) (@burgholzer)
  • ✨ Add optional properties for querying a device's current queue length and a queued job's current queue position (#486) (@burgholzer)
  • 👨‍💻 Add stable device IDs and symbol-prefix metadata to exported device targets and generated projects (#475) (@burgholzer)

1.3.2 - 2026-07-08

Added

Changed

1.3.1 - 2026-05-21

Added

  • ✨ Add support for child devices to the QDMI device interface to enable multicore architectures (#230) (@ystade)
  • ✨ Add support for batch jobs to the QDMI job interface (#230) (@ystade)

Fixed

  • 🐛 Fix Windows shared-library detection in the Python wrappers of the example and template device packages by resolving packaged libraries from bin instead of only lib/lib64 (#409) (@marcelwa)

1.3.0 - 2026-04-21

If you are upgrading: please see `UPGRADING.md`.

Added

  • 👨‍💻 Add an option to disable installation instructions for QDMI (example and template) device (#326) (@ystade)

Changed

1.2.2 - 2026-04-20

If you are upgrading: please see `UPGRADING.md`.

Added

  • 👷 Add mergify configuration for easier backports and maintenance of release branches (#355) (@burgholzer)
  • 🤖 Add policy for AI usage within the project (#354) (@burgholzer)

Changed

  • 🚸 Increase robustness of the QDMI device template (complete install instructions, uv caching, code cleanup) (#333) (@burgholzer)
  • 📝 Improve contributing guidelines and documentation (#354) (@burgholzer)
  • 📝 Improve documentation of the QDMI device template (#354) (@burgholzer)

Fixed

  • 🐛 Install CMake config files as part of the qdmi_Development component (#371) (@burgholzer)

1.2.1 - 2025-12-22

If you are upgrading: please see `UPGRADING.md`.

Added

  • 🚸 Provide compile definitions for inferring device and QDMI versions automatically (#272) (@burgholzer)

Changed

  • 🚸 Modernize QDMI device template (C++20, boilerplate docs, installation instructions, Python distribution, and more) (#285) (@burgholzer)
  • ♻️ Update example libraries and test targets to C++20 (#285) (@burgholzer)
  • 🚸 Improve prefix handling by making the device target name flexible (#274, #275) (@burgholzer)
  • 👨‍💻 Turn off building QDMI documentation by default (#269) (@burgholzer)

Fixed

  • 🐛 Ensure devices can be instantiated from an installed version of QDMI (#273) (@burgholzer)
  • 🐛 Fix target name mismatch for qdmi_project_warnings between source and installed version of QDMI (#270) (@burgholzer)

1.2.0 - 2025-12-01

If you are upgrading: please see `UPGRADING.md`.

Added

Changed

  • 🚚 Breaking: Rename QDMI_SITE_PROPERTY_ID to QDMI_SITE_PROPERTY_INDEX for improved naming consistency (#160) (@ystade)
  • ♻️ Breaking: Change types of duration-related properties from double to int64_t or uint64_t, representing values in device-specific units (#210) (@ystade, @burgholzer)
  • ♻️ Breaking: Add required timeout parameter (in seconds, 0 for indefinite) to QDMI_device_job_wait and QDMI_job_wait functions (#160) (@burgholzer)
  • 🚸 Breaking: Change order of QDMI_SESSION_PARAMETER and QDMI_DEVICE_SESSION_PARAMETER enum values due to new authentication options (#160) (@ystade, @burgholzer)
  • 🚸 Breaking: Change order of QDMI_JOB_STATUS enum values to better reflect the job lifecycle (#160) (@ystade)
  • 📦 Breaking: Raise minimum required CMake version to 3.24 (#250) (@burgholzer)
  • 🔧 Improve library installation setup and header management for better downstream integration (#228) (@burgholzer)
  • 🔧 Set C++ standard on a per-target basis rather than globally (#165) (@ystade)

Fixed

Removed

  • 🔥 Remove C language example device implementation (C++ implementation remains) (#165) (@ystade)

1.1.0 - 2025-01-10

📚 Refer to the GitHub Release Notes for previous changelogs.