Changelog

All notable changes to this project will be documented in this file.

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.

Unreleased

Added

General MQT Compiler Collection infrastructure

Import and export

Passes and transformations

Other additions

  • ✨ Support DDSIM QDMI statevector extraction for Adaptive Profile QIR with classical control flow, dynamic allocation, and terminal measurements.

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

  • 🐳 Add dev container configuration for a consistent local development environment (#1786) (@denialhaag)

Changed

  • 💥 Require CMake 3.28 or newer for source builds and embedded projects, use native dependency exclusions and system include handling, and disable unused C++ module scanning (#2421) (@burgholzer)

  • ⬆️ Update clang-tidy to version 23 and adapt the C++ sources to its diagnostics (#2328) (@simon1hofmann)

  • 💥 Update QIR execution for QIR 2.1, isolated runtimes, deterministic QDMI sampling, and safe statevector extraction (#2035, #2036, #2246) (@burgholzer, @denialhaag)

  • 🔧 Build the LLVM/MLIR 23.1 compiler infrastructure and DDSIM QIR support by default, with one build option for source builds that omit both parts (#1356, #1549, #1953, #2284, #2298) (@burgholzer, @denialhaag, @simon1hofmann)

Removed

  • 💥 Remove qc::QuantumComputation, MQT::CoreIR, and MQT::CoreQASM. Use compiler-backed QC/QCO APIs in v4 or the MQT Core v3 release series for legacy code (#2111, #2112, #2288) (@burgholzer, @simon1hofmann)

  • 💥 Remove the standalone QIR runner and make the QIR runtime and JIT internal DDSIM implementation details (#2246) (@denialhaag)

3.10.0 - 2026-09-05

If you are upgrading: please see UPGRADING.md.

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 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)

3.9.2 - 2026-08-26

If you are upgrading: please see UPGRADING.md.

Added

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

3.9.1 - 2026-08-25

If you are upgrading: please see UPGRADING.md.

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

3.9.0 - 2026-08-19

If you are upgrading: please see UPGRADING.md.

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)

3.8.0 - 2026-07-30

If you are upgrading: please see UPGRADING.md.

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)

3.7.0 - 2026-07-09

If you are upgrading: please see UPGRADING.md.

Added

Changed

Removed

Fixed

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

3.6.1 - 2026-05-20

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)

3.6.0 - 2026-05-13

If you are upgrading: please see UPGRADING.md.

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

3.5.1 - 2026-04-23

If you are upgrading: please see UPGRADING.md.

Fixed

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

3.5.0 - 2026-04-21

If you are upgrading: please see UPGRADING.md.

Added

Changed

  • ⬆️ Update nanobind to version 2.12.0 (#1528)

  • ⬆️ Update QDMI to version 1.3.0 (#1652) (@burgholzer)

  • 📦 Switch to component-based installation for the MQT Core Python package (#1596) (@burgholzer)

  • ⬆️ Update QDMI to latest version from stable v1.2.x branch (#1593) (@burgholzer)

  • ⬆️ Update clang-tidy to version 22 (#1564) (@denialhaag, @burgholzer)

  • 👷 Build on macos-26/macos-26-intel by default and macos-15/macos-15-intel for extensive tests (#1571) (@denialhaag)

3.4.1 - 2026-02-01

Changed

  • ⬆️ Update nanobind to version 2.11.0 (#1481) (@denialhaag)

  • ⬆️ Update Boost to version 1.89.0 (#1453) (@burgholzer)

  • ⬆️ Update QDMI to latest version from stable v1.2.x branch (#1453) (@burgholzer)

  • ⬆️ Update spdlog to version 1.17.0 (#1453) (@burgholzer)

  • ♻️ Use llc instead of random clang for compiling QIR test circuits to improve robustness and handle opaque pointers correctly across LLVM versions (#1447) (@burgholzer)

  • ♻️ Extract singleton pattern into reusable template base class for QDMI devices and driver (#1444) (@ystade, @burgholzer)

  • 🚚 Reorganize QDMI code structure by moving devices into dedicated subdirectories and separating driver and common utilities (#1444) (@ystade)

Removed

  • 🔥 No longer actively type check Python code with mypy and solely rely on ty (#1437) (@burgholzer)

3.4.0 - 2026-01-08

If you are upgrading: please see UPGRADING.md.

Added

  • ✨ Return device handle from add_dynamic_device_library for direct backend creation (#1381) (@marcelwa)

  • ✨ Add IQM JSON support for job submission in Qiskit-QDMI Backend (#1375, #1382) (@marcelwa, @burgholzer)

  • ✨ Add authentication support for QDMI sessions with token, username/password, auth file, auth URL, and project ID parameters (#1355) (@marcelwa)

  • ✨ Add a new QDMI device that represents a superconducting architecture featuring a coupling map (#1328) (@ystade)

  • ✨ Add bi-directional iterator that traverses the def-use chain of a qubit value (#1310) (@MatthiasReumann)

  • ✨ Add OptionalDependencyTester to lazily handle optional Python dependencies like Qiskit (#1243) (@marcelwa, @burgholzer)

  • ✨ Expose the QDMI job interface through FoMaC (#1243) (@marcelwa, @burgholzer)

  • ✨ Add Qiskit backend wrapper with job submission support for QDMI devices through a provider interface (#1243, #1385) (@marcelwa, @burgholzer)

  • ✨ Support QDMI_DEVICE_PROPERTY_SUPPORTEDPROGRAMFORMATS in the NA QDMI Device and the DDSIM QDMI Device (#1243) (@marcelwa, @burgholzer)

  • ✨ Support QDMI_DEVICE_JOB_PROPERTY_PROGRAM in the NA QDMI Device (#1243) (@marcelwa, @burgholzer)

Changed

  • 📦🏁 Build Windows x86 wheels on windows-2025 runner for newer compiler (#1415) (@burgholzer)

  • 👷 Build on macos-15/windows-2025 by default and macos-14/windows-2022 for extensive tests (#1414) (@burgholzer)

  • 📦🍎 Build macOS arm64 wheels on macos-15 runner for newer compiler (#1413) (@burgholzer)

  • ⚡ Improve uv build caching by removing unconditional reinstall-package and configuring dedicated cache-keys (#1412) (@burgholzer)

  • 👨‍💻📦 Build spdlog and QDMI generators as shared libraries in Python package builds (#1411, #1403) (@burgholzer)

  • ♻️🏁 Remove Windows-specific restrictions for dynamic QDMI device library handling (#1406) (@burgholzer)

  • ♻️ Migrate Python bindings from pybind11 to nanobind (#1383) (@denialhaag, @burgholzer)

  • 📦️ Provide Stable ABI wheels for Python 3.12+ (#1383) (@burgholzer, @denialhaag)

  • 🚚 Create dedicated mqt.core.na submodule to closely follow the structure of other submodules (#1383) (@burgholzer)

  • ✨ Add common definitions and utilities for QDMI (#1355) (@burgholzer)

  • 🚚 Move NA QDMI device in its right place next to other QDMI devices (#1355) (@burgholzer)

  • ♻️ Allow repeated loading of QDMI device library with potentially different session configurations (#1355) (@burgholzer)

  • ♻️ Enable thread-safe reference counting for QDMI devices singletons (#1355) (@burgholzer)

  • ♻️ Refactor FoMaC singleton to instantiable Session class with configurable authentication parameters (#1355) (@marcelwa)

  • 👷 Stop testing on ubuntu-22.04 and ubuntu-22.04-arm runners (#1359) (@denialhaag, @burgholzer)

  • 👷 Stop testing with clang-19 and start testing with clang-21 (#1359) (@denialhaag, @burgholzer)

  • 👷 Fix macOS tests with Homebrew Clang via new munich-quantum-toolkit/workflows version (#1359) (@denialhaag, @burgholzer)

  • 👷 Re-enable macOS tests with GCC by disabling module scanning (#1359) (@denialhaag, @burgholzer)

  • ♻️ Group circuit operations into scheduling units for MLIR routing (#1301) (@MatthiasReumann)

  • 👷 Use munich-quantum-software/setup-mlir to set up MLIR (#1294) (@denialhaag)

  • ♻️ Preserve tuple structure and improve site type clarity of the MQT NA Default QDMI Device (#1299) (@marcelwa)

  • ♻️ Move DD package evaluation module to standalone script (#1327) (@burgholzer)

  • ⬆️ Bump QDMI version to 1.2.0 (#1243) (@marcelwa, @burgholzer)

Fixed

  • 🔧 Install all available QDMI device targets in Python package builds (#1403) (@burgholzer)

  • 🐛 Fix operation validation in Qiskit backend to handle device-specific gate naming conventions (#1384) (@marcelwa)

  • 🐛 Fix conditional branch handling when importing MLIR from QuantumComputation (#1378) (@lirem101)

  • 🐛 Fix custom QDMI property and parameter handling in SC and NA devices (#1355) (@burgholzer)

  • 🚨 Fix argument naming of QuantumComputation and CompoundOperation dunder methods for properly implementing the MutableSequence protocol (#1338) (@burgholzer)

  • 🐛 Fix memory management in dynamic QDMI device by making it explicit (#1336) (@ystade)

Removed

  • 🔥 Remove wheel builds for Python 3.13t (#1371) (@burgholzer)

  • 🔥 Remove the evaluation extra from the MQT Core Python package (#1327) (@burgholzer)

  • 🔥 Remove the mqt-core-dd-compare entry point from the MQT Core Python package (#1327) (@burgholzer)

3.3.3 - 2025-11-10

Added

  • ✨ Add support for bridge gates for the neutral atom hybrid mapper (#1293) (@lsschmid)

Fixed

3.3.2 - 2025-11-04

Added

  • ✨ Add DD-based simulator QDMI device (#1287) (@burgholzer)

  • ✨ A --reuse-qubits pass implementing an advanced form of qubit reuse to reduce the qubit count of quantum circuits (#1108) (@DRovara)

  • ✨ A --lift-measurements pass that attempts to move measurements up as much as possible, used for instance to enable better qubit reuse (#1108) (@DRovara)

  • ✨ Add native support for R(theta, phi) gate (#1283) (@burgholzer)

  • ✨ Add A*-search-based routing algorithm to MLIR transpilation routines (#1237, #1271, #1279) (@MatthiasReumann)

Fixed

3.3.1 - 2025-10-14

Fixed

  • 🐛 Ensure spdlog dependency can be found from mqt-core install (#1263) (@burgholzer)

3.3.0 - 2025-10-13

If you are upgrading: please see UPGRADING.md.

Added

Changed

  • ♻️ Replace custom AllocOp, DeallocOp, ExtractOp, and InsertOp with MLIR-native memref operations (#1211) (@denialhaag)

  • 🚚 Rename MLIR pass ElidePermutations to SwapReconstructionAndElision (#1207) (@taminob)

  • ⬆️ Require LLVM 21 for building the MLIR library (#1180) (@denialhaag)

  • ⬆️ Update to version 21 of clang-tidy (#1180) (@denialhaag)

  • 🚚 Rename MLIR pass CancelConsecutiveInverses to GateElimination (#1140) (@taminob)

  • 🚚 Rename xxminusyy to xx_minus_yy and xxplusyy to xx_plus_yy in MLIR dialects (#1071) (@BertiFlorea, @denialhaag)

  • 🚸 Add custom assembly format for operations in the MLIR dialects (#1139) (@burgholzer)

  • 🚸 Enable InferTypeOpInterface in the MLIR dialects to reduce explicit type information (#1139) (@burgholzer)

  • 🚚 Rename check-quantum-opt test target to mqt-core-mlir-lit-test (#1139) (@burgholzer)

  • ♻️ Update the measure operations in the MLIR dialects to no longer support more than one qubit being measured at once (#1106) (@DRovara)

  • 🚚 Rename XXminusYY to XXminusYYOp and XXplusYY to XXplusYYOp in MLIR dialects (#1099) (@denialhaag)

  • 🚚 Rename MQTDyn MLIR dialect to MQTRef (#1098) (@MatthiasReumann)

Removed

Fixed

3.2.1 - 2025-08-01

Fixed

  • 🐛 Fix usage of std::accumulate by changing accumulator parameter from reference to value (#1089) (@denialhaag)

  • 🐛 Fix erroneous contains check in DD package (#1088) (@denialhaag)

3.2.0 - 2025-07-31

If you are upgrading: please see UPGRADING.md.

Added

Changed

3.1.0 - 2025-07-11

If you are upgrading: please see UPGRADING.md.

Added

Fixed

  • 🐛 Fix bug in MLIR roundtrip passes caused by accessing an invalidated iterator after erasure in a loop (#932) (@flowerthrower)

  • 🐛 Add missing support for sxdg gates in Qiskit circuit import (#930) (@burgholzer)

  • 🐛 Fix bug related to initialization of operations with duplicate operands (#964) (@ystade)

  • 🐛 Open issue for Qiskit upstream test only when the test is actually failing not when it was cancelled (#973) (@ystade)

  • 🐛 Fix parsing of GPhase in the MQTOpt MLIR dialect (#1042) (@ystade, @DRovara)

Changed

  • ⬆️ Bump shared library ABI version from 3.0 to 3.1 (#1047) (@denialhaag)

  • ♻️ Switch from reference counting to mark-and-sweep garbage collection in decision diagram package (#1020) (@MatthiasReumann, [burgholzer], q-inho)

  • ♻️ Move the C++ code for the Python bindings to the top-level bindings directory (#982) (@denialhaag)

  • ♻️ Move all Python code (no tests) to the top-level python directory (#982) (@denialhaag)

  • ⚡ Improve performance of getNqubits for StandardOperations (#959) (@ystade)

  • ♻️ Move Make-State Functionality To StateGeneration (#984) (@MatthiasReumann)

  • ♻️ Outsource definition of standard operations from MLIR dialects to reduce redundancy (#933) (@ystade)

  • ♻️ Unify operands and results in MLIR dialects (#931) (@ystade)

  • ⏪️ Restore support for (MLIR and) LLVM v19 (#934) (@flowerthrower, @ystade)

  • ⬆️ Update nlohmann_json to v3.12.0 (#921) (@burgholzer)

3.0.2 - 2025-04-07

Added

Fixed

3.0.1 - 2025-04-07

Fixed

  • 🐛 Fix doxygen build on RtD to include C++ API docs (#912) (@burgholzer)

3.0.0 - 2025-04-06

If you are upgrading: please see UPGRADING.md.

Added

Changed

Removed

  • Breaking: 🔥 Remove the Teleportation gate from the IR (#882) (@burgholzer)

  • Breaking: 🔥 Remove parsers for .real, .qc, .tfc, and GRCS files (#822) (@burgholzer)

  • Breaking: 🔥 Remove tensor dump functionality (#798) (@burgholzer)

  • Breaking: 🔥 Remove extract_probability_vector functionality (#883) (@burgholzer)

Fixed

2.7.0 - 2024-10-08

📚 Refer to the GitHub Release Notes for previous changelogs.