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¶
3.10.0 - 2026-09-08¶
If you are upgrading: please see UPGRADING.md.
Added¶
✨ Add hybrid Schrödinger–Feynman checker for approximate equivalence checking with reusable slice decision diagrams and relative output-permutation normalization (#1043) (@TeWas, @denialhaag, @burgholzer)
✨ Add approximate equivalence checking based on the projective Hilbert–Schmidt distance (#443) (@TeWas, @denialhaag)
Changed¶
⬆️ Update
mqt-coreto version 3.10.0 (#1060) (@denialhaag)⬆️ Update
nanobindto version 3.0.1 (#1060) (@denialhaag)💥 Require Python 3.11 or newer (#1041) (@denialhaag)
📦 Publish one split-mode
cp311-abi3wheel for GIL-enabled CPython 3.11 and newer (#1060) (@denialhaag)📦 Publish one
cp315-abi3twheel for free-threaded CPython 3.15 and newer (#1060) (@denialhaag)💥 Raise the minimum Qiskit version from 1.0.0 to 2.1.0 (#1060) (@denialhaag)
♻️ Own single-qubit gate fusion and harden migrated dynamic-circuit transformations for nested compounds, repeated measurements, measurement-mapping validation, and non-contiguous layouts (#1060) (@simon1hofmann)
💥 Drop support for x86 macOS and stop publishing the respective wheels (#1041) (@denialhaag)
⬆️ Raise the macOS deployment target to 13.3 to enable
std::formatin libc++ (#1041) (@denialhaag)♻️ Own the equivalence-checking-specific circuit transformations (#1040) (@simon1hofmann)
Removed¶
🗑️ Remove the
modearguments ofgenerate_profile()andgenerate_profile_name(), theancilla_modeargument ofverify_compilation(), andAncillaMode. Compilation flow profiles now depend only on the optimization level (#1066) (@denialhaag)
Fixed¶
🐛 Make equivalence checker timeout and cancellation signaling thread-safe (#1043) (@denialhaag)
🐛 Preserve an earlier repeated measurement when deferring measurements (#1040) (@simon1hofmann)
3.9.0 - 2026-08-19¶
If you are upgrading: please see UPGRADING.md.
Added¶
🐍 Start building CPython 3.15 wheels (#1008) (@denialhaag)
Changed¶
⬆️ Update
mqt-coreto version 3.9.0 (#1030) (@denialhaag)⬆️ Update
nanobindto version 2.15.0 (#1030) (@denialhaag)➕ Depend on
nlohmann_jsondirectly instead of relying onmqt-coreto provide it (#1021) (@denialhaag)♻️ Use explicit output qubit counts in tests (#1019) (@simon1hofmann)
♻️ Move the ZX-calculus implementation from MQT Core into QCEC and integrate its simplification directly with the equivalence checker (#1018) (@burgholzer)
3.8.0 - 2026-08-02¶
If you are upgrading: please see UPGRADING.md.
Changed¶
⬆️ Update
mqt-coreto version 3.8.0 (#1004) (@denialhaag)
3.7.0 - 2026-07-09¶
If you are upgrading: please see UPGRADING.md.
Added¶
🚸 Add CMake presets to provide a standardized and reproducible way to configure builds (#936) (@denialhaag)
Changed¶
⬆️ Update
mqt-coreto version 3.7.0 (#976) (@denialhaag)⬆️ Update
nanobindto version 2.13.0 (#976) (@denialhaag)⬆️ Update munich-quantum-toolkit/workflows to version
v2.0.1(#936) (@denialhaag)
Removed¶
📝 Remove support for generating LaTeX documentation (#977) (@denialhaag)
3.6.1 - 2026-05-21¶
Fixed¶
🐛 Fix segfaults on permutation mismatches in the ZX checker (#929) (@denialhaag)
3.6.0 - 2026-05-13¶
If you are upgrading: please see UPGRADING.md.
Added¶
✨ Add support for many multi-controlled gates to the ZX-calculus checker (#907) (@burgholzer)
Changed¶
⬆️ Update
mqt-coreto version 3.6.0 (#907) (@burgholzer)⬆️ Update
nanobindto version 2.12.0 (#907) (@burgholzer)
3.5.0 - 2026-02-02¶
If you are upgrading: please see UPGRADING.md.
Changed¶
⬆️ Update
mqt-coreto version 3.4.1 (#837) (@denialhaag)⬆️ Update
nanobindto version 2.11.0 (#837) (@denialhaag)♻️ Auto-generate
pyqcec.pyiviananobind.stubgen(#831) (@denialhaag)🔧 Replace
mypywithty(#775, #825) (@denialhaag)
3.4.0 - 2026-01-13¶
If you are upgrading: please see UPGRADING.md.
Changed¶
♻️ Migrate Python bindings from
pybind11tonanobind(#817) (@denialhaag)📦️ Provide Stable ABI wheels for Python 3.12+ (#817) (@denialhaag)
⬆️ Bump minimum required
mqt-coreversion to3.4.0(#817) (@denialhaag)👷 Stop testing on
ubuntu-22.04andubuntu-22.04-armrunners (#796) (@denialhaag)👷 Stop testing with
clang-19and start testing withclang-21(#796) (@denialhaag)👷 Fix macOS tests with Homebrew Clang via new
munich-quantum-toolkit/workflowsversion (#796) (@denialhaag)👷 Re-enable macOS tests with GCC by disabling module scanning (#796) (@denialhaag)
Removed¶
🔥 Remove wheel builds for Python 3.13t (#796) (@denialhaag)
3.3.0 - 2025-10-14¶
If you are upgrading: please see UPGRADING.md.
Added¶
👷 Enable testing on Python 3.14 (#730) (@denialhaag)
Changed¶
⬆️ Bump minimum required
mqt-coreversion to3.3.1(#735) (@denialhaag)
Removed¶
🔥 Drop support for Python 3.9 (#704) (@denialhaag)
3.2.0 - 2025-08-01¶
If you are upgrading: please see UPGRADING.md.
Added¶
🐍 Start building CPython 3.14 wheels (#665) (@denialhaag)
Changed¶
⬆️ Bump minimum required
mqt-coreversion to3.2.1(#668) (@denialhaag)⬆️ Bump minimum required
mqt-coreversion to3.2.0(#667) (@denialhaag)⬆️ Require C++20 (#667) (@denialhaag)
✨ Expose enums to Python via
pybind11’s new (enum.Enum-compatible)py::native_enum(#663) (@denialhaag)
Fixed¶
🚸 Increase binary compatibility between
mqt-qcecandmqt-core(#662) (@denialhaag)
3.1.0 - 2025-07-11¶
If you are upgrading: please see UPGRADING.md.
Changed¶
⬆️ Bump minimum required
mqt-coreversion to3.1.0(#646) (@denialhaag)⬆️ Bump minimum required
pybind11version to3.0.0(#646) (@denialhaag)♻️ Move the C++ code for the Python bindings to the top-level
bindingsdirectory (#618) (@denialhaag)♻️ Move all Python code (no tests) to the top-level
pythondirectory (#618) (@denialhaag)💥 ZX-calculus checker now reports that it can’t handle circuits with non-garbage ancilla qubits (#512) (@pehamTom)
Deprecated¶
🗑️ Deprecate the
modeargument ofgenerate_profile()and theancilla_modeargument ofverify_compilation()(#626) (@denialhaag)
Fixed¶
3.0.0 - 2025-05-05¶
If you are upgrading: please see UPGRADING.md.
Added¶
✨ Support Qiskit 2.0+ (#571) (@burgholzer)
Changed¶
🚚 Move MQT QCEC to the munich-quantum-toolkit GitHub organization
♻️ Use the
mqt-corePython package for handling circuits (#432) (@burgholzer)♻️ Return counterexamples as decision diagrams instead of dense arrays (#566) (@burgholzer)
♻️ Reduce and restructure public interface of the
EquivalenceCheckingManager(#566) (@burgholzer)⬆️ Bump minimum required CMake version to
3.24.0(#582) (@burgholzer)📝 Rework existing project documentation (#566) (@burgholzer)
Removed¶
🔥 Remove support for
.real,.qc,.tfc, andGRCSfiles (#582) (@burgholzer)🔥 Remove several re-exports from the top-level
mqt-qcecpackage (#566) (@burgholzer)
2.8.2 - 2025-02-18¶
📚 Refer to the GitHub Release Notes for previous changelogs.