Skip to content

♻️ Own neutral-atom OpenQASM serialization - #1124

Draft
simon1hofmann wants to merge 47 commits into
mainfrom
codex/2098-openqasm-serializer
Draft

♻️ Own neutral-atom OpenQASM serialization#1124
simon1hofmann wants to merge 47 commits into
mainfrom
codex/2098-openqasm-serializer

Conversation

@simon1hofmann

@simon1hofmann simon1hofmann commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🤖 AI text below 🤖

Description

Provide na::serializeOpenQASM in MQT::QMapNAIR for move, bridge, and AOD operations. Core 3.10's qasm3::Serializer handles compounds, conditionals, and register names; QMAP supplies the custom leaf syntax. Remove obsolete operation dump overrides and migrate hybrid mapper output and DataLogger.

This draft targets na-transfer (#1111). The target is Core 3.10. The combined C++ dependency update and integration are in #1144. The Python update requires a QCEC release containing qcec#1060; the dependency pins on this branch remain unchanged.

Validation

  • 42 neutral-atom IR tests passed against Core 3.10, including four exact-output serializer tests.
  • Full uvx nox -s lint passed locally.
  • The combined ⬆️ Update munich-quantum-toolkit/core from v3.9.1 to v3.10.0 #1144 tree passed 1,459 C++ tests and 491 Python tests, with one skip in each suite. Python used local dependency overrides for Core 3.10 and QCEC's merged update.
  • Hosted validation of this stacked branch still requires the companion dependency update.

AI assistance

GPT-6 via Codex assisted with the implementation, regression tests, validation, and this description. A human must review the updated changes.

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.

If PR contains AI-assisted content:

  • Any agent that created, edited, or submitted GitHub content was explicitly authorized for that scope, as required by our AI Usage Guidelines.
  • Every agent-authored or agent-edited public text body begins with the visible disclosure 🤖 *AI text below* 🤖 (titles are exempt).
  • I have disclosed AI assistance in the PR description.
  • I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.

Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex

@denialhaag denialhaag left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This LGTM now as well, and I'll leave the final say to @burgholzer! 😎

Edit: Well, I won't request a review from @burgholzer just yet. This will probably stay open for some weeks.

Comment thread include/hybridmap/AodOperation.hpp Outdated
Comment thread src/na/ir/OpenQASMSerializer.cpp
Signed-off-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com>

@denialhaag denialhaag left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ahh, looks like the build is currently failing. 🤔

@burgholzer burgholzer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This one was small enough to quickly browse through. Besides the CI errors flagged by Daniel, this looks pretty good to me.

@simon1hofmann

Copy link
Copy Markdown
Contributor Author

Ahh, looks like the build is currently failing. 🤔

Will keep failing until MQT Core v4 is released due to the missing header.

@denialhaag

Copy link
Copy Markdown
Member

Ahh, looks like the build is currently failing. 🤔

Will keep failing until MQT Core v4 is released due to the missing header.

That makes a lot of sense. I could have figured that out myself. 🧍

denialhaag and others added 17 commits August 27, 2026 20:54
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Signed-off-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com>
Keep move and bridge operations outside Core's standard gate hierarchy.
Discover neutral-atom devices by registered ID so equal display names do
not hide distinct configurations. Refresh the branch with current main
and regenerate the Python stubs.

Assisted-by: GPT-6 via Codex
Own the extended OpenQASM serializer in the neutral-atom IR target.
Use qasm3::Serializer for Core traversal and retain exact-output tests
for move, bridge, AOD, compound, and conditional operations. Adapt the
custom operation equality interface to Core 3.10 and refresh the parent
neutral-atom port.

Assisted-by: GPT-6 via Codex
@burgholzer burgholzer mentioned this pull request Sep 7, 2026
12 tasks
@burgholzer burgholzer self-assigned this Sep 7, 2026
@burgholzer burgholzer added the fix Anything related to bugfixes label Sep 7, 2026
Base automatically changed from na-transfer to main September 8, 2026 09:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++ Anything related to C++ code dependencies Pull requests that update a dependency file fix Anything related to bugfixes refactor Anything related to code refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants