Releases: Munich-Quantum-Software-Stack/QDMI
QDMI 1.3.0 Release
👀 What Changed
Please refer to the changelog and the upgrade guide for a structured overview of the changes.
🚀 Features and Enhancements
- 🚸 Export all device headers (incl.
constants.h) as part of device implementations such that they do not need to link against the header-only QDMI library anymore (#325, #373) (@ystade, @burgholzer) - 🚸 Add a symbol-export header (
export.h) for compiling devices with hidden symbol visibility (#334, #375, #377) (@burgholzer) - 🧑💻 Base Example Device on Template (#326) (@ystade)
📄 Documentation
- 📌 Pin QDMI version to v1.3.0 in device template and example (#404) (@burgholzer)
- 📌 Prepare v1.3.0 Release (#403) (@burgholzer)
Full Changelog: v1.2.2...v1.3.0
QDMI 1.2.2 Release
👀 What Changed
Please refer to the changelog and the upgrade guide for a structured overview of the changes.
🐛 Bug Fixes
- 🐛 Fix linking of multiple static devices (backport #373) (#374) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
- 🐛 Install CMake config files as part of the
qdmi_Developmentcomponent (backport #371) (#372) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
📄 Documentation
- 📌 Prepare v1.2.2 Release (#401) (@burgholzer)
- 📄 Update license headers for 2026 (backport #391) (#392) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
- 📝 Documentation fixups (backport #389) (#390) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
- 📝 Various updates for project documentation (backport #354) (#360) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
- 👨💻 Move
v1.2.xversion tov1.2.2-dev(#291) (@burgholzer)
🧹 Code Quality
- 🍒 Small tweaks and improvements (backport #393) (#394) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
- 👷 Add mergify configuration for easier backports (backport #355) (#356) ([@mergify[bot]](https://github.com/[mergify[bot]](https://github.com/apps/mergify)))
⬆️ Dependencies
- 📌 Prepare v1.2.2 Release (#401) (@burgholzer)
- 🔙 Backport #333, #334, #335, and dependency updates (#336) (@burgholzer)
- 🔙 Backport #325 and dependency updates for 1.2.x (#329) (@burgholzer)
Full Changelog: v1.2.1...v1.2.2
QDMI 1.2.1 Release
👀 What Changed
Please refer to the changelog and the upgrade guide for a structured overview of the changes.
🚀 Features and Enhancements
- 🚸 Fully-fletched device template (#285) (@burgholzer)
- 🩹 Automatically generate license headers (#284) (@burgholzer)
- 👨💻 Ensure backwards compatibility of prefix handling (#275) (@burgholzer)
- 🚸 Improve prefix handling by making the device target name flexible (#274) (@burgholzer)
- 🚸 Provide compile definitions for inferring device and QDMI versions automatically (#272) (@burgholzer)
- 👨💻 Turn off building QDMI documentation by default (#269) (@burgholzer)
🐛 Bug Fixes
- 🐛 Ensure devices can be instantiated from an installed version of QDMI (#273) (@burgholzer)
- 🐛 Fix target name mismatch for
qdmi_project_warningsbetween source and installed version of QDMI (#270) (@burgholzer) - 🩹 Fix links to changelog and upgrade guide (#263) (@denialhaag)
📄 Documentation
- 🩹💚📝 Fix the versioned docs workflow (#264) (@burgholzer)
- ⬆️ Post release version bump and ✨📝 enable versioned docs (#262) (@burgholzer)
- 🩹 Fix links to changelog and upgrade guide (#263) (@denialhaag)
🤖 CI
- 🔧 update renovate configuration for enhanced automerge and grouping (#283) (@burgholzer)
- 🩹💚📝 Fix the versioned docs workflow (#264) (@burgholzer)
🧹 Code Quality
- 🚨 fix clang-tidy warnings for C++20 (#289) (@burgholzer)
⬆️ Dependencies
13 changes
- ⬆️👨💻 Update actions/upload-artifact action to v6 (#287) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update patch updates (#286) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- 🔧 update renovate configuration for enhanced automerge and grouping (#283) (@burgholzer)
- ⬆️🪝 Update pre-commit hook python-jsonschema/check-jsonschema to v0.36.0 (#282) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update munich-quantum-toolkit/workflows action to v1.17.5 (#280) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook pre-commit/mirrors-clang-format to v21.1.8 (#281) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update codecov/codecov-action action to v5.5.2 (#278) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update Chocobo1/setup-ccache-action action to v1.5.2 (#277) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update JamesIves/github-pages-deploy-action action to v4.7.6 (#279) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook pre-commit/mirrors-clang-format to v21.1.7 (#267) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.4 (#268) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update actions/checkout action to v6.0.1 (#265) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update munich-quantum-toolkit/workflows action to v1.17.4 (#266) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
Full Changelog: v1.2.0...v1.2.1
QDMI 1.2.0 Release
👀 What Changed
Please refer to the changelog and the upgrade guide for a structured overview of the changes.
🚀 Features and Enhancements
- ✨ Add device property
QDMI_DEVICE_PROPERTY_SUPPORTEDPROGRAMFORMATSfor efficiently querying the device's supported program formats (#252) (@burgholzer) - ✨ Add support for new program formats QPY and IQM JSON (#234) (@burgholzer)
- 🔧 improve QDMI installation setup and header management (#228) (@burgholzer)
- ♻️ Update PR Template, Changelog, and Upgrading Guide (#212) (@ystade)
- ✨ Introducing Duration Unit and Reporting Shuttling Speed (#210) (@ystade)
- ✨ Efficiently Query Connectivity/Applicability of Operations (#207) (@ystade)
- ✨ Report Minimal Atom Distance (#209) (@ystade)
- ✨ Report the Fidelity of Idling Qubits under a Rydberg Beam (#208) (@ystade)
- ✨ Reporting Interaction and Blocking Radius (#203) (@ystade)
- ✨ Add Module and Submodule Index (#200) (@ystade)
- ✨ Report the Scope of an Operation (#199) (@ystade)
- ✨ Communicating the Location of Sites (#198) (@ystade)
- 🔥 Remove C Example Device (#187) (@ystade)
- ✨ Add pulse support device property (#181) (@mnfarooqi)
- 🚸 Adding Useful Parameters and Properties (#160) (@ystade)
- 🔥🩹 Remove FetchContent fallback for Doxygen (#145) (@burgholzer)
🐛 Bug Fixes
- Potential fix for code scanning alert no. 29: Uncontrolled data used in path expression (#257) (@burgholzer)
- 🛂 Fix security warnings (#253) (@burgholzer)
- ✨ Update CMake config and External Dependencies (#250) (@burgholzer)
- 🔧 improve QDMI installation setup and header management (#228) (@burgholzer)
- Fix device template test (#225) (@ystade)
- Fix bug in example tool (#218) (@rainij)
- 🐛 Fix Install Instructions (#214) (@ystade)
- ✏️ fix typo
QDMI_ERROR_NOTIMPLEMENTED(#195) (@burgholzer) - 🐛 Fix Device Template (#186) (@ystade)
- 🔥🩹 Remove FetchContent fallback for Doxygen (#145) (@burgholzer)
📄 Documentation
- 🔖 v1.2.0 (#261) (@burgholzer)
- 📌 Prepare 1.2.0 release (#235) (@burgholzer)
- ♻️ Update PR Template, Changelog, and Upgrading Guide (#212) (@ystade)
- 📝 Improve Docstrings related to Length Values (#211) (@ystade)
- ✏️ fix typo
QDMI_ERROR_NOTIMPLEMENTED(#195) (@burgholzer) - 📝 GitHub community health files (#156) (@burgholzer)
- ✏️ fix typo in calibration enum docs (#138) (@burgholzer)
🤖 CI
- 🔧 Update release drafter configuration (#256) (@burgholzer)
- 🚨 Update to clang-tidy 21 (#251) (@burgholzer)
- ➕ Set up renovate for dependency management (#239) (@burgholzer)
- 💚 explicitly use codecov token (#221) (@burgholzer)
- 💚 Replace coverage job with in-repo workflow (#220) (@burgholzer)
- 👷🏼 Better support for PRs from forks (#219) (@burgholzer)
- 🩹 fix workflow references (#159) (@burgholzer)
🧹 Code Quality
- 🚨 Update to clang-tidy 21 (#251) (@burgholzer)
- ⬆️ Update googletest version and CMake setting (#144) (@burgholzer)
⬆️ Dependencies
51 changes
- ⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.3 (#260) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.2 (#259) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.1 (#258) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️🪝 Update pre-commit hook crate-ci/typos to v1.40.0 (#255) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update munich-quantum-toolkit/workflows action to v1.17.3 (#254) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ✨ Update CMake config and External Dependencies (#250) (@burgholzer)
- ⬆️👨💻 Update actions/checkout action to v6 (#249) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update ssciwr/doxygen-install action to v1.6.4 (#248) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update rossjrw/pr-preview-action action to v1.6.3 (#247) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update release-drafter/release-drafter action to v6.1.0 (#246) ([@renovate[bot]](https://github.com/[renovate[bot]](https://github.com/apps/renovate)))
- ⬆️👨💻 Update JamesIves/g...
QDMI 1.1.0 Release
👀 What Changed
This release contains the work of the last couple of weeks by @ystade and @burgholzer on refining QDMI based on the discussions we had at the end of last year. Given the discussions in #109, #117, and #125, it was clear that breaking changes were inevitable.
And this release definitely contains breaking changes. However, it also fixes and improves literally all aspects of QDMI. In particular:
- The interfaces have been consolidated and restructured. There are now two clear interfaces: the "device interface" (contained in the
qdmi/device.hheader) and the "client interface" (contained in theqdmi/client.hheader). These two interfaces connect three entities: devices, clients, and a driver. This distinction and separation of concerns has been made more explicit in the interface itself as well as in its documentation. - In addition to the regular
QDMI_Sessionconcept for establishing a connection between a client and a driver, a newQDMI_Device_Sessionconcept was introduced that accomplishes a similar connection between the driver and a device. This resolves #109 and #117, based on the discussion in these issues, as it allows the driver to establish separate connections to a device for each client. The respective sessions may be used to authenticate with the device or to potentially switch the API endpoint used in the device implementation without having to recompile the device implementation. - Resolves #125 by streamlining authentication and session handling. Based on the discussions over there, the new expected workflow with sessions is to first create them, then set certain parameters, and, finally, to initialize them. A session may only be used once it is successfully initialized. Any kind of authentication is handled in the new initialization routines.
- Resolves #128 by adding a unique identifier to QDMI sites. Significant effort has been put into clarifying the respective semantics around site IDs and qubits used in programs submitted to the devices.
- Many functions have been renamed to follow a consistent naming scheme throughout the whole interface. Functions are now generally prefixed by the type they operate on (for example,
QDMI_device; typically the type of the first parameter), followed by the action to be performed (for example,query), and suffixed by the particular thing acted on (for example,site_property). This style is now consistently used throughout the whole interface. - The
QDMI_device_get_sitesandQDMI_device_get_operationsroutines have been refactored to become device properties that can be queried just as every other property. This helps to keep the interface more compact and the semantics more uniform. - Based on discussion around pulse-level control, the property query function for operations has received additional parameters for querying properties of parametrized operations depending on their parameter values. This allows devices to expose almost arbitrary operations and their properties. Effectively, this should allow realizing pulse-level QDMI devices.
- Resolves #108 by adding the respective
calibrationprogram format andneeds calibrationdevice property as discussed in that issue. - Resolves #123 by adjusting the figure as discussed in that issue.
- Resolves #131 by adding extensive API documentation, including examples.
- Resolves #106 by significantly expanding on the client interface documentation.
- The API documentation has been meticulously cleaned up and extended wherever possible.
- All example devices, the example driver, as well as the example fomac and the example tool have been updated based on the above changes.
- All tests have been updated based on the above changes.
Overall, I believe the list above illustrates the significant progress made since last year's discussions. In particular, this release contains changes that resolve all open issues requiring breaking changes that we are aware of. Based on that and the level of attention paid to every little detail in the >150 commits leading to this release, we are confident in calling this the first official stable version of QDMI. 🎉
📝 Make sure to check out the official project documentation for more information: https://munich-quantum-software-stack.github.io/QDMI/
Full Changelog: v1.0.0...v1.1.0
QDMI 1.0.0 Release
👀 What Changed
This is a preliminary release that encompasses the initial version of QDMI we collectively decided to tag.
It is created purely for historical reasons and posterity.
The first truly stable version will be released shortly afterwards. Specifically, once #132 is merged.
🚀 Features and Enhancements
- ✨ Provide an option to specify the supported QIR profile @ystade (#126)
- 🧪 Test Installation of QDMI @ystade (#101)
- Provision to set session parameters @mnfarooqi (#100)
- Fix license @ystade (#97)
- 📝 Document the Usage of Templates and add Rationale of QDMI @ystade (#90)
- ✨ Use Prefixes for Device Symbols and Types @ystade (#86)
- ✨ Add Readout Format for State Vector and Probabilities @ystade (#82)
- ✨ Docs: Page on Example Device @ystade (#79)
- ⚡ enable compiler cache if available @burgholzer (#76)
- ✨ Add Project Templates for Devices @ystade (#72)
- ✨ Add C++ Example Device @ystade (#71)
- ✨ Example for QDMI Client @ystade (#65)
- 📝 Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- 🎨 Refine and Unify Interface Structure @ystade (#61)
- 📝 Add automatic Generation of Documentation @ystade (#62)
- Changing the type of task_id @kayaercument (#59)
- QDMI_Job is included in readout routines. @kayaercument (#55)
- Not supported definition @kayaercument (#53)
- 🔧🎨🚨 Code Formatting and Linting @burgholzer (#45)
- ♻️ Properly set up CMake Build System @burgholzer (#44)
- implementing QDMI_core_device_count and QDMI_core_open_device @kayaercument (#29)
- 🙈 more extensive gitignore @burgholzer (#32)
- Implementing device property query for char @kayaercument (#33)
- Internal header moved to src @kayaercument (#27)
- Removing Backends [Issue/#11] @kayaercument (#25)
- Adding members for storing and retrieving Qubit properties @Durganshu (#4)
- Wmi backend @echavarria-lrz (#5)
- Setting sentinel values to gate coupling mappings @Durganshu (#2)
🐛 Bug Fixes
- 🎨 Stability improvements for custom enum parameters @ystade (#122)
- 🩹 fix potential target conflict @burgholzer (#121)
- 🐛 Fix an inconsistency in the docs about coupling maps @ystade (#120)
- 🧪 Test Installation of QDMI @ystade (#101)
- 📝 Remove not implemented functionality from comment @ystade (#99)
- Fix license @ystade (#97)
- Fix Inverted Dark Mode Figures @ystade (#92)
- 🐛 fix condition for deployment of docs @burgholzer (#87)
- ♻️ Fixing Various Bugs @ystade (#84)
- 📝 Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- NULL Initialization of qdmi_library_list @kayaercument (#57)
- Enable parsing of quoted strings @denialhaag (#50)
- ♻️ Re-enable routine checking @burgholzer (#46)
- assigning QDMI_query_device_property_c @kayaercument (#38)
- Typo fix @kayaercument (#28)
- LLVM Dependency @kayaercument (#1)
📄 Documentation
- 🐛 Fix an inconsistency in the docs about coupling maps @ystade (#120)
- 🔖 version v1 @burgholzer (#103)
- 🍱 update QDMI figures @burgholzer (#104)
- 📝 add citation information @burgholzer (#102)
- 📝 Remove not implemented functionality from comment @ystade (#99)
- Fix Inverted Dark Mode Figures @ystade (#92)
- 📝 Document the Usage of Templates and add Rationale of QDMI @ystade (#90)
- 🐛 fix condition for deployment of docs @burgholzer (#87)
- ♻️ Fixing Various Bugs @ystade (#84)
- ✨ Docs: Page on Example Device @ystade (#79)
- ✏️ remove redundant abbreviation in readme header @burgholzer (#67)
- 📝 Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- 📝 Add Button to documentation on the README.md @ystade (#63)
- 🎨 Refine and Unify Interface Structure @ystade (#61)
- 📝 Add automatic Generation of Documentation @ystade (#62)
- 📝 Project Readme @burgholzer (#36)
- 📄 Add License Information @burgholzer (#31)
🤖 CI
- 🧪 Test Installation of QDMI @ystade (#101)
- 👷 Set up continuous integration @burgholzer (#70)
- 👷 Set up dependabot @burgholzer (#69)
🧹 Code Quality
- 🧪 Test Installation of QDMI @ystade (#101)
- ✨ Use Prefixes for Device Symbols and Types @ystade (#86)
- 🎨 Use
size_tfor buffer sizes and countable quantities in general @burgholzer (#85) - 🚨 Fix uncontrolled data used in path expression @burgholzer (#78)
- 🚨 Fix shadowing of global devices list in qdmi_example_driver.cpp @burgholzer (#75)
⬆️ Dependencies
7 changes
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#130)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#127)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#110)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#107)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#93)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#88)
- 👷 Set up dependabot @burgholzer (#69)
Full Changelog: ...v0.1.0