Repository navigation
♻️ Use LLVM streams for DD input and output - #2840
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
burgholzer
force-pushed
the
codex/dd-llvm-io
branch
from
October 25, 2026 13:03
6eab2a7 to
a2e9d20
Compare
10 tasks done
burgholzer
commented
Oct 25, 2026
burgholzer
left a comment
Member
Author
There was a problem hiding this comment.
@denialhaag @simon1hofmann FYI: also extracted from #2545. I love to see all the standard library iostream stuff gone and replaced by cleaner and faster stream APIs from LLVM. There may be even more places where we could make such a change.
C++'s iostreams are notorious for causing a substantial amount of build time and general slowness.
burgholzer
enabled stacked auto-merge (squash)
October 25, 2026 13:16
10 tasks done
burgholzer
disabled stacked auto-merge
October 25, 2026 14:26
burgholzer
added this pull request to stack #2847
October 25, 2026 14:26
Replace DD iostreams with LLVM output streams and borrowed byte input. Use LLVM file and process facilities for serialization and Graphviz, and update Python and worker consumers without intermediate stream copies. Preserve direct throwing I/O contracts and existing exception/RTTI policy. Keep the native binary representation and text grammar, including finite subnormal weights, and clean up output descriptors during unwinding. Co-authored-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Signed-off-by: Lukas Burgholzer <burgholzer@me.com> Assisted-by: GPT-6 via Codex
Describe the new precision argument on printFormatted so Doxygen's parameter check passes. Use the same documented defaults on toString. Reproduce the RTD warning locally and validate the complete executable Sphinx/Doxygen documentation, generated links and rendered API entry. Signed-off-by: Lukas Burgholzer <burgholzer@me.com> Assisted-by: GPT-6 via Codex
burgholzer
force-pushed
the
codex/dd-llvm-io
branch
from
October 25, 2026 15:56
7cc21e7 to
f1e45d3
Compare
burgholzer
enabled stacked auto-merge (squash)
October 25, 2026 16:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 AI text below 🤖
Description
Replace DD iostreams with LLVM output streams and borrowed byte input. Python serialization and worker state transport no longer copy payloads into input stringstreams. File input uses LLVM buffers, and Graphviz launching uses LLVM's process API instead of platform-specific code.
Preserve the existing throwing parsing/file APIs and exception/RTTI build policy. Borrowed output streams remain the caller's responsibility; file overloads check writes and close their descriptors, including during unwinding. Binary data keeps its native representation. Text serialization preserves the existing grammar and uses locale-independent decimal conversion, including finite subnormal values.
C++ callers must replace
std::ostreamsinks withllvm::raw_ostreamand pass byte ranges toPackage::deserialize; filenames usePackage::deserializeFile. Python signatures remain unchanged. InstalledMQT::CoreDDpropagates its LLVM include and link requirements.This is the DD I/O extraction from #2545, based on main after #2839 merged. The broader owned-error APIs and exception/RTTI changes remain in #2545.
Validation
Rebased on main
dedaa13f5f, retaining itsexportToDotrename throughout the LLVM export implementation, bindings, and tests. The range-diff contains only the corresponding rename and formatting adaptations.Local validation is on Linux. Windows/macOS execution and hosted CI are unverified; no performance claim is made.
AI assistance: Codex implemented, independently reviewed and locally validated this extraction. Human review remains required.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).