aot: link standalone wrappers against the XLS runtime archive#964
Merged
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 08c0536cd1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
a83d80f to
234d733
Compare
234d733 to
f73fc29
Compare
meheff
reviewed
May 14, 2026
0c54684 to
8ab26a8
Compare
Make standalone AOT the default generated form, keep assertions supported, move reusable runtime ABI ownership into the XLS-produced static archive, and teach Rust consumers to add the platform support libraries required by the canonical C++ archive. branch:dank/wip/xlsynth-xls-owned-runtime-aot
Ordinary xlsynth builds should not compile xlsynth-aot-runtime just to expose the generator surface; that crate intentionally requires standalone runtime archive wiring. Make the AOT builder opt-in through the standalone-aot feature, keep ABI ownership sourced from xlsynth-aot-runtime when enabled, and update the local AOT fixtures and docs to request the feature explicitly.
Collapse the bridge generator onto the standalone runtime value surface so ordinary bridge output and typed AOT wrappers share one contract. This intentionally removes the generated IrUBits/IrSBits split and the enum-to-IrValue bridge conversion path. Update sample usage and docs to make the new xlsynth-aot-runtime dependency explicit.
8ab26a8 to
6a491ad
Compare
The standalone AOT runtime crate intentionally requires runtime archive configuration. PR #964 made generic clippy --all-features and broad workspace CI jobs enter that runtime-linking path, which broke artifact-less validation lanes. Keep the ordinary CI surface config-free instead: - lint xlsynth with the existing clap feature coverage but without standalone-aot - exclude runtime-archive-dependent workspace members from generic workspace build, test, and bench jobs The dedicated standalone validation path remains responsible for checking the archive-configured AOT surface.
PR #964 added standalone-runtime workspace members that generic CI surfaces must either classify explicitly or skip until runtime archive configuration is present. Keep those invariants consistent: - publish xlsynth-aot-runtime before xlsynth and mark the standalone smoke-test crate as non-publishable - make the valgrind helper use the same artifact-less workspace exclusions as the workflow-level generic jobs This closes the remaining publish-order and nested valgrind cargo-test CI failures without weakening the standalone runtime archive contract.
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.
Problem Solved
The earlier standalone-runtime prototype proved the deployment boundary, but it kept runtime ABI ownership in Rust by mirroring live XLS callback objects. Runtime ABI ownership should come from XLS itself; Rust consumers should only provide generated wrapper glue and link the released runtime artifact.
What Changed
Validation
StandaloneRunner::new; the amended head fixes it, and the follow-up review was clean.pre-commitshim without a real binary on this Mac, and missing/opt/eda-tools/xlsynth/latest/block_to_verilog_mainfor existing ECO tests).Landing Order
This wave-1 consumer now follows the landed public producer handoff:
xlsynth/xlsynth#8at9f60a292e369287f2b8b7be2218dc18dddf23568xlsynth/rules_xlsynth#58atd560634e4c292ecac0bc499d17173f8984d75ef5Final product consumers still wait for the later wave-2 producer chain before repinning.
Stack: