Skip to content

📦 Remove nlohmann_json from the public package contract #2099

Description

@burgholzer

🤖 AI text below 🤖

Goal

Stop exposing and distributing nlohmann_json as part of MQT Core's public API and installed CMake package while retaining it privately for QDMI JSON parsing.

Current public exposure

  • JSON-valued CoreDD statistics APIs.
  • Neutral-atom configuration and FoMaC headers.
  • An unnecessary public dependency of the SC configuration target.

Scope

  1. Prepare QCEC, DDSIM, and QUSAT to own their JSON dependency or remove their JSON-facing APIs. QMAP already discovers nlohmann itself.
  2. Remove nlohmann::json from public DD statistics; retain primitive counters and useful string/stream reporting.
  3. Delete DDSIM's duplicate unused statistics serializer or make DDSIM own it.
  4. Fold NA public-JSON cleanup into the QMAP transfer.
  5. Make the SC configuration dependency private.
  6. Remove Core's unconditional find_dependency(nlohmann_json), MQT_CORE_JSON_INSTALL, and custom header/CMake/natvis installation machinery.

Acceptance criteria

  • No installed Core header exposes a nlohmann type.
  • Installed shared and static Core targets contain no unresolved nlohmann target reference.
  • QDMI JSON discovery and SC configuration retain robust private parsing.
  • QCEC, DDSIM, QUSAT, QMAP, source installs, and wheels pass dependency inspection.

Metadata

Metadata

Assignees

Labels

DDAnything related to the DD packageQDMIAnything related to QDMIdependenciesPull requests that update a dependency filemajorMajor version updatepackagingAnything related to Python packagingrefactorAnything related to code refactoring

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions