Skip to content

Conversation

@denialhaag
Copy link
Member

Description

This PR prepares the release of v3.4.0.

Checklist:

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

@denialhaag denialhaag self-assigned this Jan 12, 2026
@denialhaag denialhaag added documentation Improvements or additions to documentation extensive-cpp-ci Adding this label indicates that extensive C++ CI runs should be started for this PR. labels Jan 12, 2026
@github-project-automation github-project-automation bot moved this to In Progress in MQT Verification Jan 12, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 12, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Documentation

    • Updated CHANGELOG and UPGRADING documentation for version 3.4.0 release with new upgrade notes and version links.
  • Chores

    • Removed duplicate build configuration include for improved build efficiency.

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

This pull request prepares for the 3.4.0 release by updating documentation files (CHANGELOG.md and UPGRADING.md) with version-specific entries and links, and removes a duplicate build configuration include in CMakeLists.txt.

Changes

Cohort / File(s) Summary
Release Documentation
CHANGELOG.md, UPGRADING.md
Added 3.4.0 release sections with upgrade notes, updated version references from unreleased/v3.3.0 to v3.4.0, and added corresponding version link anchors.
Build Configuration
CMakeLists.txt
Removed duplicate inclusion of ExternalDependencies.cmake by consolidating to a single include earlier in the file, maintaining original behavior.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • qmap#805: Parallel 3.4.0 release preparation updating CHANGELOG.md and UPGRADING.md with matching version entries and links.
  • core#1434: Related 3.4.0 release updates to CHANGELOG.md and UPGRADING.md with similar version reference adjustments.

Suggested reviewers

  • burgholzer

Poem

🐰 A version hop to 3.4!
Changelog and docs shine once more,
Duplicate lines cleared away,
Release notes ready for the day! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically indicates the primary purpose: preparing for v3.4.0 release, which aligns with the changeset modifications to CHANGELOG.md, UPGRADING.md, and CMakeLists.txt.
Description check ✅ Passed The description includes a clear summary explaining this is a v3.4.0 release preparation PR, though several checklist items are marked as intentionally not applicable (struck-through) without explicit explanation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


📜 Recent review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6b64a91 and 0ebd953.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • CMakeLists.txt
  • UPGRADING.md
🧰 Additional context used
🧠 Learnings (13)
📓 Common learnings
Learnt from: burgholzer
Repo: munich-quantum-toolkit/yaqs PR: 212
File: CHANGELOG.md:12-15
Timestamp: 2025-10-14T14:37:38.047Z
Learning: In the munich-quantum-toolkit/yaqs project, changelog entries follow the template: "- $TITLE ([#$NUMBER]($URL)) ([**AUTHOR**](https://github.com/$AUTHOR))". Issue references should not be included in changelog entries; the PR number is sufficient for traceability.
Learnt from: denialhaag
Repo: munich-quantum-toolkit/core PR: 1360
File: .github/workflows/reusable-mlir-tests.yml:40-43
Timestamp: 2025-12-05T17:45:37.602Z
Learning: In the munich-quantum-toolkit/core repository, patch releases of LLVM dependencies don't require documentation updates, changelog entries, or additional tests beyond what's validated by passing CI checks.
📚 Learning: 2026-01-09T17:58:10.350Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/qcec PR: 817
File: pyproject.toml:81-82
Timestamp: 2026-01-09T17:58:10.350Z
Learning: In the Munich Quantum Toolkit projects using nanobind, setting `wheel.py-api = "cp312"` in `[tool.scikit-build]` enables Stable ABI wheels only for Python 3.12+ (where nanobind supports it), while automatically building regular non-ABI3 wheels for earlier Python versions (3.10, 3.11) and free-threading builds (3.14t). This allows a single configuration to appropriately handle both old and new Python versions without forcing incompatible ABI requirements.

Applied to files:

  • UPGRADING.md
  • CHANGELOG.md
📚 Learning: 2025-12-05T17:45:37.602Z
Learnt from: denialhaag
Repo: munich-quantum-toolkit/core PR: 1360
File: .github/workflows/reusable-mlir-tests.yml:40-43
Timestamp: 2025-12-05T17:45:37.602Z
Learning: In the munich-quantum-toolkit/core repository, patch releases of LLVM dependencies don't require documentation updates, changelog entries, or additional tests beyond what's validated by passing CI checks.

Applied to files:

  • UPGRADING.md
  • CHANGELOG.md
  • CMakeLists.txt
📚 Learning: 2025-12-15T01:54:22.129Z
Learnt from: denialhaag
Repo: munich-quantum-toolkit/core PR: 1383
File: bindings/dd/register_matrix_dds.cpp:64-109
Timestamp: 2025-12-15T01:54:22.129Z
Learning: In the munich-quantum-toolkit/core repository, after migrating to nanobind, docstrings for Python bindings are now added directly in the C++ binding code (using R"pb(...)pb" syntax) and stub files (.pyi) are auto-generated using the `bindings/generate-stubs.sh` script. This replaces the previous pybind11 approach where docstrings were manually maintained in stub files.

Applied to files:

  • CHANGELOG.md
📚 Learning: 2025-10-14T14:37:38.047Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/yaqs PR: 212
File: CHANGELOG.md:12-15
Timestamp: 2025-10-14T14:37:38.047Z
Learning: In the munich-quantum-toolkit/yaqs project, changelog entries follow the template: "- $TITLE ([#$NUMBER]($URL)) ([**AUTHOR**](https://github.com/$AUTHOR))". Issue references should not be included in changelog entries; the PR number is sufficient for traceability.

Applied to files:

  • CHANGELOG.md
📚 Learning: 2025-11-03T23:09:26.881Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1287
File: test/qdmi/dd/CMakeLists.txt:9-21
Timestamp: 2025-11-03T23:09:26.881Z
Learning: The CMake functions `generate_device_defs_executable` and `generate_prefixed_qdmi_headers` used in QDMI device test CMakeLists.txt files are provided by the external QDMI library (fetched via FetchContent from https://github.com/Munich-Quantum-Software-Stack/qdmi.git), specifically in the cmake/PrefixHandling.cmake module of the QDMI repository.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2025-12-07T09:10:31.836Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1355
File: src/qdmi/sc/Device.cpp:97-102
Timestamp: 2025-12-07T09:10:31.836Z
Learning: In the munich-quantum-toolkit/core repository, duplication of QDMI-related macros (such as IS_INVALID_ARGUMENT) across device implementations (e.g., in src/qdmi/sc/Device.cpp and src/qdmi/dd/Device.cpp) is acceptable as a temporary measure. The preferred long-term solution is to upstream these macros to the QDMI repository rather than creating local shared headers, so they can be reused across all dependent projects.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2026-01-04T23:01:47.734Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1356
File: mlir/CMakeLists.txt:13-15
Timestamp: 2026-01-04T23:01:47.734Z
Learning: In the munich-quantum-toolkit/core repository's MLIR directory (mlir/CMakeLists.txt), the MSVC compile definition `_SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING` is necessary to suppress warnings triggered by MLIR/LLVM internal headers, not because the project code uses non-floating complex types. This suppression is needed to avoid warnings from third-party MLIR/LLVM header includes.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2025-12-28T17:14:53.890Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1403
File: src/qdmi/na/CMakeLists.txt:31-38
Timestamp: 2025-12-28T17:14:53.890Z
Learning: In the munich-quantum-toolkit/core repository, the NA device generator target (mqt-core-qdmi-na-device-gen) is intentionally propagated to MQT_CORE_TARGETS via list(APPEND) because it's publicly linked to the NA device library (the NA device uses a public function from the generator). The SC device generator is not propagated because it has no such dependency with the SC device library.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2025-12-05T15:57:39.701Z
Learnt from: flowerthrower
Repo: munich-quantum-toolkit/core-plugins-catalyst PR: 3
File: lib/Conversion/CatalystQuantumToMQTOpt/CMakeLists.txt:22-25
Timestamp: 2025-12-05T15:57:39.701Z
Learning: The munich-quantum-toolkit projects (core and core-plugins-catalyst) use `file(GLOB_RECURSE ...)` patterns in CMakeLists.txt files to collect header files, following an established convention in the parent repository for consistency across the codebase.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2026-01-04T23:54:33.540Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1356
File: src/qdmi/na/CMakeLists.txt:179-184
Timestamp: 2026-01-04T23:54:33.540Z
Learning: In the munich-quantum-toolkit/core repository, MSVC link-time code generation (LTCG) must be disabled for the NA device dynamic library target (mqt-core-qdmi-na-device-dyn) on Windows to avoid link errors and missing symbols. This issue affects both release-only builds and debug/release mixed builds, not just debug/release mixing scenarios.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2025-12-05T15:54:56.385Z
Learnt from: flowerthrower
Repo: munich-quantum-toolkit/core-plugins-catalyst PR: 3
File: lib/Conversion/CatalystQuantumToMQTOpt/CMakeLists.txt:19-20
Timestamp: 2025-12-05T15:54:56.385Z
Learning: The munich-quantum-toolkit/core-plugins-catalyst project does not support Windows builds, so MSVC-specific compiler options or cross-platform compatibility with MSVC is not required.

Applied to files:

  • CMakeLists.txt
📚 Learning: 2025-10-10T08:09:54.528Z
Learnt from: burgholzer
Repo: munich-quantum-toolkit/core PR: 1246
File: bindings/CMakeLists.txt:0-0
Timestamp: 2025-10-10T08:09:54.528Z
Learning: In the Munich Quantum Toolkit (MQT) Core project, scikit-build-core is configured with `wheel.install-dir = "mqt/core"` in pyproject.toml, which automatically prefixes all CMake `DESTINATION` paths with `mqt/core/` during wheel installation. Therefore, CMake install destinations are relative to the `mqt/core` package namespace, not `site-packages`.

Applied to files:

  • CMakeLists.txt
🪛 LanguageTool
CHANGELOG.md

[typographical] ~12-~12: To join two clauses or introduce examples, consider using an em dash.
Context: ...ng changes. ## [Unreleased] ## [3.4.0] - 2026-01-13 _If you are upgrading: pleas...

(DASH_RULE)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: 🇨‌ Test (Extensive) 🍎 (macos-15, gcc-15, Release) / 🍎 macos-15 gcc-15 Release
  • GitHub Check: 🇨‌ Test (Extensive) 🍎 (macos-15, gcc-14, Release) / 🍎 macos-15 gcc-14 Release
  • GitHub Check: 🇨‌ Test (Extensive) 🍎 (macos-15, clang, Release) / 🍎 macos-15 clang Release
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-11-arm, clang, Release) / 🏁 windows-11-arm clang Release
  • GitHub Check: 🇨‌ Test (Extensive) 🐧 (ubuntu-24.04, clang-21, Release) / 🐧 ubuntu-24.04 clang-21 Release
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-11-arm, msvc, Release) / 🏁 windows-11-arm msvc Release
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-11-arm, clang, Debug) / 🏁 windows-11-arm clang Debug
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-2022, msvc, Debug) / 🏁 windows-2022 msvc Debug
  • GitHub Check: 🇨‌ Test (Extensive) 🐧 (ubuntu-24.04, clang-20, Debug) / 🐧 ubuntu-24.04 clang-20 Debug
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-2025, msvc, Release) / 🏁 windows-2025 msvc Release
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-2022, clang, Release) / 🏁 windows-2022 clang Release
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-11-arm, msvc, Debug) / 🏁 windows-11-arm msvc Debug
  • GitHub Check: 🐍 Test (macos-15-intel) / 🐍 macos-15-intel
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-2025, msvc, Debug) / 🏁 windows-2025 msvc Debug
  • GitHub Check: 🇨‌ Test (Extensive) 🏁 (windows-2022, msvc, Release) / 🏁 windows-2022 msvc Release
  • GitHub Check: 🐍 Test (ubuntu-24.04-arm) / 🐍 ubuntu-24.04-arm
  • GitHub Check: 🐍 Test (macos-14) / 🐍 macos-14
  • GitHub Check: 🐍 Test (windows-2022) / 🐍 windows-2022
  • GitHub Check: 🐍 Test (ubuntu-24.04) / 🐍 ubuntu-24.04
  • GitHub Check: 🇨‌ Coverage / 📈 Coverage
🔇 Additional comments (5)
CHANGELOG.md (2)

12-28: LGTM!

The 3.4.0 release section is well-structured with proper changelog entries following the project's established format. The upgrade link correctly references UPGRADING.md#340, and all PR entries follow the expected template with PR links and author references. Based on learnings, the changelog entries correctly use only PR numbers for traceability without issue references.


113-114: Version links are correctly updated.

The unreleased comparison now points from v3.4.0...HEAD and the new 3.4.0 release link is properly added.

UPGRADING.md (2)

7-27: LGTM!

The 3.4.0 upgrade section clearly documents the two breaking changes to Python wheel distribution:

  1. Removal of Python 3.13t wheels
  2. Introduction of Stable ABI wheels for Python 3.12+

The explanation is thorough and the final wheel list is helpful for users planning their upgrade.


88-89: Version links correctly updated.

The unreleased comparison now points from v3.4.0...HEAD and the 3.4.0 comparison link correctly shows changes from v3.3.0...v3.4.0.

CMakeLists.txt (1)

53-54: LGTM!

The consolidation of ExternalDependencies.cmake include to a single location after the bindings option block is clean. This ensures external dependencies are available before any subdirectories (src, bindings, test) are processed.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@denialhaag denialhaag removed the extensive-cpp-ci Adding this label indicates that extensive C++ CI runs should be started for this PR. label Jan 12, 2026
@denialhaag denialhaag force-pushed the prepare-release-3-4-0 branch from 0ebd953 to e956b76 Compare January 12, 2026 23:11
Copy link
Member

@burgholzer burgholzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fine for a release now 🚀

@denialhaag denialhaag merged commit 7df841c into main Jan 12, 2026
20 checks passed
@denialhaag denialhaag deleted the prepare-release-3-4-0 branch January 12, 2026 23:42
@github-project-automation github-project-automation bot moved this from In Progress to Done in MQT Verification Jan 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants