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.
- 👷 Add mergify configuration for easier backports and maintenance of release branches (#355) (@burgholzer)
- 🤖 Add policy for AI usage within the project (#354) (@burgholzer)
- 🚸 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) - 🚸 Increase robustness of the QDMI device template (complete install instructions, uv caching, code cleanup) (#333) (@burgholzer)
- 🚸 Add a symbol-export header for compiling devices with hidden symbol visibility (#334, #375, #377) (@burgholzer)
- 📝 Improve contributing guidelines and documentation (#354) (@burgholzer)
- 📝 Improve documentation of the QDMI device template (#354) (@burgholzer)
- 🐛 Install CMake config files as part of the
qdmi_Developmentcomponent (#371) (@burgholzer)
1.2.1 - 2025-12-22
If you are upgrading: please see UPGRADING.md.
- 🚸 Provide compile definitions for inferring device and QDMI versions automatically (#272) (@burgholzer)
- 🚸 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)
- 🐛 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)
1.2.0 - 2025-12-01
If you are upgrading: please see UPGRADING.md.
- ✨ Add comprehensive properties to query neutral atom-based device characteristics and capabilities, including site coordinates, zone properties, module/submodule indices, interaction and blocking radii, idling fidelity, and shuttling speed (#198, #199, #200, #203, #207, #208, #209, #211) (@ystade, @burgholzer)
- ✨ Add new program formats
QDMI_PROGRAM_FORMAT_QPY(Qiskit QPY binary format) andQDMI_PROGRAM_FORMAT_IQMJSON(IQM JSON data transfer format) to theQDMI_Program_Formatenum (#234) (@burgholzer) - ✨ Add properties to query the device's duration unit and scale factor for proper interpretation of duration values (#210) (@ystade, @burgholzer)
- ✨ Add property to efficiently query the applicability of operations to specific sites (#207) (@ystade, @burgholzer)
- ✨ Add device property
QDMI_DEVICE_PROPERTY_SUPPORTEDPROGRAMFORMATSfor efficiently querying the device's supported program formats (#252) (@burgholzer) - ✨ Add device property
QDMI_DEVICE_PROPERTY_PULSESUPPORTfor querying pulse-level control support level (#181) (@mnfarooqi) - 🚸 Add new functions
QDMI_job_query_propertyandQDMI_device_job_query_propertyto support querying of job properties, including previously set parameter values (#160) (@ystade) - 🚸 Add new authentication options (
AUTHFILE,AUTHURL,USERNAME,PASSWORD) toQDMI_SESSION_PARAMETERandQDMI_DEVICE_SESSION_PARAMETERenums (#160) (@ystade, @burgholzer) - 🚸 Add additional
QDMI_JOB_STATUSenum values for improved job lifecycle management (#160) (@ystade) - 📝 Add comprehensive changelog and upgrade guide documentation (#160) (@ystade, @burgholzer)
- 🚚 Breaking: Rename
QDMI_SITE_PROPERTY_IDtoQDMI_SITE_PROPERTY_INDEXfor improved naming consistency (#160) (@ystade) - ♻️ Breaking: Change types of duration-related properties from
doubletoint64_toruint64_t, representing values in device-specific units (#210) (@ystade, @burgholzer) - ♻️ Breaking: Add required
timeoutparameter (in seconds, 0 for indefinite) toQDMI_device_job_waitandQDMI_job_waitfunctions (#160) (@burgholzer) - 🚸 Breaking: Change order of
QDMI_SESSION_PARAMETERandQDMI_DEVICE_SESSION_PARAMETERenum values due to new authentication options (#160) (@ystade, @burgholzer) - 🚸 Breaking: Change order of
QDMI_JOB_STATUSenum 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)
- 🐛 Fix incorrect definitions of
QDMI_SiteandQDMI_Operationin device template (#169) (@ystade) - 🐛 Add missing
qdmi_project_warningstarget to CMake export configuration (#214) (@ystade) - 🐛 Fix bug in example tool causing incorrect behavior (#218) (@rainij)
- 📝 Re-enable FetchContent for Doxygen and build documentation by default (#250) (@burgholzer)
- ✏️ Fix typo in error constant naming:
QDMI_ERROR_NOTIMPLEMENTED(#195) (@burgholzer)
1.1.0 - 2025-01-10
📚 Refer to the GitHub Release Notes for previous changelogs.