Skip to content

Releases: munich-quantum-toolkit/core

MQT Core 3.10.0 Release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 16:07
Immutable release. Only release title and notes can be modified.
e9e2c95

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • ✨ Expose ordered shots from DDSIM QDMI OpenQASM jobs, with matching histograms (#2368) (@burgholzer)

Changed

  • ⚡ Run PennyLane QDMI jobs concurrently and release the GIL during waits and result retrieval (#2349) (@burgholzer)
  • 💥 Raise the minimum Qiskit version from 1.1.0 to 2.1.0 (#2358) (@burgholzer)
  • 💥 Replace the QDMI-specific primitives with native Qiskit primitives and typed backend factories. Sampler and memory=True require genuine QDMI SHOTS (#2358) (@burgholzer)
  • ⬆️ Update nanobind to version 3.0.1 (#2209, #2283) (@denialhaag, @burgholzer)
  • 💥 Move circuit IR OpenQASM serialization from operation subclasses to qasm3::Serializer in qasm3/Serializer.hpp (#2249) (@simon1hofmann)
  • 💥 Drop support for x86 macOS and stop publishing the respective wheels (#2259) (@denialhaag)
  • ⬆️ Raise the macOS deployment target to 13.3 to enable std::format in libc++ (#2259) (@denialhaag)
  • 💥 Require Python 3.11 or newer (#2209) (@denialhaag, @burgholzer)
  • 📦 Publish one split-mode cp311-abi3 wheel for GIL-enabled CPython 3.11 and newer (#2209) (@denialhaag, @burgholzer)
  • 📦 Publish one cp315-abi3t wheel for free-threaded CPython 3.15 and newer (#2209) (@denialhaag, @burgholzer)
  • ⚡ Remove an extra dense copy from VectorDD.get_vector (#2209) (@burgholzer)
  • 🐛 Protect process-wide DD, IR, and QDMI state for free-threaded Python (#2209) (@burgholzer)
  • 💥 Prune dead and misleading CoreIR APIs, including renaming the non-garbage logical output count to getNoutputQubits() and num_output_qubits (#2112) (@simon1hofmann)

Removed

  • 💥 Remove test-only DD state generators, recursive functionality construction, and DD-specific named-gate helpers (#2257, #2335) (@simon1hofmann)
  • 💥 Remove the optional MLIR stack, including its dialects, conversions, passes, tools, build integration, tests, documentation, and dependency on LLVM (#2314) (@denialhaag, @burgholzer)
  • 💥 Remove the entire QIR stack, including its runtime, JIT, standalone runner, DDSIM integration, build integration, tests, and documentation (#2314) (@denialhaag, @burgholzer)
  • 💥 Remove the spdlog dependency from source builds, installed CMake packages, and Python wheels. QDMI diagnostics continue to be written to standard error (#2270) (@denialhaag)
  • 💥 Remove CircuitOptimizer. Move circuit flattening and final-measurement removal to QuantumComputation, equivalence-checking transformations to MQT QCEC, and mapping transformations to MQT QMAP. Move single-qubit gate fusion to both downstream packages. Remove the public circuit dependency graph and transformations without production consumers (#2262) (@simon1hofmann)
  • 💥 Remove MQT::CoreAlgorithms, its fixed-circuit factories, and the legacy DD package evaluation. MQT Core provides no direct replacement (#2214) (@burgholzer)
  • 💥 Remove the unused decision-diagram approximation algorithm, including the dd/Approximation.hpp header, dd::ApproximationMetadata, and dd::approximate. No replacement is provided (#2154) (@burgholzer)
  • 💥 Remove nlohmann_json from the public package contract. MQT Core no longer installs or exports the library, no installed header exposes a nlohmann type, and the decision-diagram statistics report through strings and streams (#2138) (@denialhaag)
  • 💥 Remove the neutral-atom stack, which moves to MQT QMAP. This drops the neutral-atom computation model, the neutral-atom FoMaC device session, the neutral-atom QDMI device and its configuration, the mqt.core.na Python module, AodOperation, and the Move, Bridge, AodActivate, AodDeactivate, and AodMove operation kinds (#2137) (@denialhaag)
  • 💥 Remove the random-number generator, seed, and getGenerator() method from QuantumComputation; randomized algorithms now own generators initialized from their seed arguments (#2111) (@simon1hofmann)
  • 💥 Remove the FoMaC compatibility name from the C++ and Python QDMI APIs. Use the qdmi C++ namespace, headers, library, and CMake target; the mqt.core.qdmi Python module; and module-level functions in mqt.core.qdmi.driver (#2115) (@burgholzer)
  • 💥 Remove the ZX-calculus library, including the mqt-core-zx target, MQT::CoreZX alias, zx headers and namespace, and its Boost.Multiprecision and GMP build support. Equivalence-checking users should use MQT QCEC; its ZX implementation is internal and does not provide a replacement public API (#2082) (@burgholzer)
  • 🔥 Remove density matrix support from the DD package (#1466) (@burgholzer)
  • 🔥 Remove datastructures (ds) (sub)library (#1458) (@burgholzer)

Fixed

  • 🐛 Initialize Qiskit classical bits before OpenQASM 3 serialization so partially measured circuits preserve their zero values (#2399) (@burgholzer)
  • 🐛 Handle empty DDSIM results and NUL-terminated QDMI result buffers (#2288) (@simon1hofmann)
  • 🐛 Validate output permutations before I/O mapping initialization (#2278) (@denialhaag)

Full Changelog: v3.9.2...v3.10.0

MQT Core 3.9.2 Release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 19:25
Immutable release. Only release title and notes can be modified.
46b9b0f

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • ✨ Allow C++ and Python QDMI job submissions to omit the shot count, leaving repetition semantics to the program and device (#2258) (@burgholzer)

Full Changelog: v3.9.1...v3.9.2

MQT Core 3.9.1 Release

Choose a tag to compare

@github-actions github-actions released this 24 Aug 22:32
Immutable release. Only release title and notes can be modified.
24ed6a2

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • 🚸 Let PennyLane QDMI devices reuse an already-open session, including a device selected from a Slurm license (#2232) (@burgholzer)
  • ✨ Let a package register a program serializer for a program format through the mqt.core.qiskit.program_serializers entry point group (#2114) (@marcelwa, @burgholzer)
  • ✨ Add mqt.core.qdmi.is_binary_program_format, which states whether a program format requires exact-byte submission (#2114) (@marcelwa, @burgholzer)

Removed

Full Changelog: v3.9.0...v3.9.1

MQT Core 3.9.0 Release

Choose a tag to compare

@github-actions github-actions released this 19 Aug 16:32
Immutable release. Only release title and notes can be modified.
9d4820d

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • ✨ Add PennyLane support for gate-based QDMI devices (#2005, #2147) (@burgholzer, @marcelwa)
  • ✨ Add Device::submitCalibrationJob and mqt.core.qdmi.Device.submit_calibration_job for triggering a calibration run (#2148) (@marcelwa, @burgholzer)
  • ✨ Add SpecAudits, a method and probe script for auditing tests that pin behavior the project never specified (#2124) (@marcelwa)
  • 🚸 Add typed stable-ID construction for Qiskit backends, lazy provider discovery, and sampler and estimator factories with explicit shot and precision defaults (#2084) (@burgholzer)
  • 🧪 Test static Slurm license admission and QDMI execution with DDSIM and the superconducting device, and document the cluster setup (#2043) (@burgholzer)
  • ✨ Add C++ FoMaC and Python QDMI adapters that open the device named by one local Slurm license environment value (#2025) (@burgholzer)
  • ✨ Add generic C++ FoMaC and Python QDMI support for custom device properties that contain operation handles (#2042) (@burgholzer)
  • 📝 Generate llms.txt documentation indexes with Sphinx-LLM (#1989, #2046) (@denialhaag, @burgholzer)
  • ✨ Support retrieving existing jobs by ID through the QDMI client API, C++ FoMaC API, and Python QDMI API, and expose optional device queue length and job queue position (#2008, #2010) (@burgholzer)
  • 🐍 Build CPython 3.15 wheels. Their post-build tests remain disabled until test dependency wheels are available (#2011) (@denialhaag)
  • ✨ Bundle reusable IQM Garnet and Emerald superconducting device models with stable QDMI registry IDs (#1992) (@burgholzer)
  • ✨ Expose compressed vector and matrix DD serialization through bytes-based Python APIs (#1983) (@burgholzer)
  • ✨ Make the neutral-atom and superconducting QDMI devices runtime configurable with session-owned topology, operations, and calibration data (#1974, #1980) (@burgholzer)
  • ✨ Expose registered QDMI device IDs without loading device libraries (#1972) (@burgholzer)
  • ✨ Add typed runtime configuration transport and relocatable assets for QDMI device descriptions (#1967) (@burgholzer)

Changed

  • ⬆️ Update QDMI to version 1.3.3 (#2168) (@denialhaag)
  • ⬆️ Update nanobind to version 2.15.0 (#2141) (@denialhaag)
  • 💥 Replace the MQT-specific QDMI primitive options mappings with explicit shot and precision defaults (#2084) (@burgholzer)
  • ♻️ Simplify Python optional-dependency checks while preserving the Qiskit and PennyLane availability flags (#2108) (@simon1hofmann)
  • 💥 Remove the unused pybind11 CMake helper and rename add_mqt_python_binding_nanobind to add_mqt_python_binding (#2106) (@denialhaag)
  • 💥 Move Python QDMI entities and the neutral-atom specialization to QDMI namespaces, expose device registration and opening through mqt.core.qdmi.driver, retain v3 FoMaC compatibility aliases, and let the Qiskit adapter open stable device IDs directly (#2074) (@burgholzer)
  • 🚀 Reduce ZX diagram growth for multi-controlled X gates with an exact ancilla-free quadratic decomposition (#1984) (@burgholzer)

Fixed

  • 🐛 Distinguish scalar OpenQASM qubits from one-element qubit registers and reject indexing scalar qubits (#2157) (@DRovara, @burgholzer)
  • 🐛 Preserve the original OpenQASM type error when an assignment's right-hand expression cannot be typed (#2156) (@DRovara, @burgholzer)

Removed

  • 💥 Remove batch job submission from the QDMI client. Device::submitJob now states that MQT Core does not support batch jobs (#2148) (@marcelwa, @burgholzer)
  • 💥 Remove QDMI device configuration through [tool.qdmi] in pyproject.toml and the vendored toml++ header (#2116) (@denialhaag)

Full Changelog: v3.8.0...v3.9.0

MQT Core 3.8.0 Release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 10:27
Immutable release. Only release title and notes can be modified.
ae42c97

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • ✨ Add binary-safe QDMI program submission and retrieval to FoMaC, including explicit text and exact-byte APIs and all standard QDMI program formats (#1957) (@burgholzer)
  • ✨ Add versioned, relocatable configuration and stable-ID registration for QDMI device libraries, including disabled-ID reservations, fresh device sessions, idempotent registration, and external-device target metadata (#1912) (@burgholzer)
  • ✨ Add native relative-phase CCX (rccx) support across the IR, DD package, ZX diagrams, OpenQASM import/export, and Python/Qiskit bindings (#1886, #1950) (@simon1hofmann)
  • ✨ Add support for QDMI child devices to the driver and FoMaC libraries (#1897, #1952) (@burgholzer)
  • ✨ Add typed custom property and result queries to the C++ and Python FoMaC libraries (#1895) (@burgholzer)
  • ✨ Add support for custom job parameters to C++ and Python FoMaC library (#1887) (@flowerthrower, @burgholzer)
  • ✨ Add labeled and ordered output schemas to the QIR runtime (#1877) (@rturrado)
  • ✨ Add boolean, integer, floating-point, tuple, and array record output functions to the QIR runtime (#1799) (@rturrado)
  • ✨ Add the reusable in-process MQT::CoreQIRJIT library and QIR program format support to the DDSIM QDMI device (#1766) (@rturrado)

Changed

  • ⬆️ Raise the minimum supported QDMI version to 1.3.2 (#1897) (@burgholzer)

Removed

  • 🔥 Replace the unstable C++ Driver::addDynamicDeviceLibrary and Python add_dynamic_device_library APIs with definition registration and stable-ID opening (#1912) (@burgholzer)

Fixed

  • 🐛 Allow MQT Core to be embedded as a CMake subproject without target collisions and make its bundled QDMI devices individually configurable (#1965) (@burgholzer)
  • 🐛 Fix QIR function names for adjoint gates (#1830) (@denialhaag)

Full Changelog: v3.7.0...v3.8.0

MQT Core 3.7.0 Release

Choose a tag to compare

@github-actions github-actions released this 08 Jul 22:53
Immutable release. Only release title and notes can be modified.
d2bb7ad

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

Changed

Removed

Fixed

  • 🐛 Fix invalid prop_type for QDMI_DEVICE_PROPERTY_COUPLINGMAP in QDMI SC Device (#1842) (@MatthiasReumann)

Full Changelog: v3.6.1...v3.7.0

MQT Core 3.6.1 Release

Choose a tag to compare

@github-actions github-actions released this 20 May 00:05
Immutable release. Only release title and notes can be modified.
8224856

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Changed

  • 🚸 Improve native gate support for the Qiskit-to-OpenQASM3 conversion in the QDMI-Qiskit interface (#1719) (@burgholzer)

Fixed

  • 🏁 Fix dynamic loading of QDMI device DLLs on Windows when an absolute path is provided (#1720) (@burgholzer)

Full Changelog: v3.6.0...v3.6.1

MQT Core 3.6.0 Release

Choose a tag to compare

@github-actions github-actions released this 13 May 15:20
Immutable release. Only release title and notes can be modified.
cd19d26

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

  • 🚸 Add a measurement instruction to the default SC QDMI device (#1694) (@burgholzer)
  • ✨ Add support for multi-controlled gates to the QDMI Qiskit backend converter (#1694) (@burgholzer)

Changed

  • ♻️ Build all built-in QDMI devices as shared libraries (#1694) (@burgholzer)
  • ⬆️ Update minimum supported Qiskit version to 1.1.0 (#1694) (@burgholzer)

Fixed

  • 🐛 Fix missing nlohmann_json.natvis in Windows component-based CMake installs (#1702) (@burgholzer)
  • 🐛 Fix segfault in DD sample method when idle classical bits are present (#1694) (@burgholzer)

Removed

Full Changelog: v3.5.1...v3.6.0

MQT Core 3.5.1 Release

Choose a tag to compare

@github-actions github-actions released this 23 Apr 12:12
Immutable release. Only release title and notes can be modified.
3c0ba57

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Fixed

  • 🐛 Fix malformed include directories in exported nlohmann_json CMake targets for component-based installs (#1662) (@burgholzer)

Full Changelog: v3.5.0...v3.5.1

MQT Core 3.5.0 Release

Choose a tag to compare

@github-actions github-actions released this 21 Apr 16:00
Immutable release. Only release title and notes can be modified.
848371e

👀 What Changed

Please refer to the changelog and the upgrade guide for a structured overview of the changes.

Added

Changed

Full Changelog: v3.4.1...v3.5.0