Skip to content

aot: link standalone wrappers against the XLS runtime archive#964

Merged
dank-openai merged 5 commits into
mainfrom
dank/wip/xlsynth-xls-owned-runtime-aot
May 19, 2026
Merged

aot: link standalone wrappers against the XLS runtime archive#964
dank-openai merged 5 commits into
mainfrom
dank/wip/xlsynth-xls-owned-runtime-aot

Conversation

@dank-openai

@dank-openai dank-openai commented May 8, 2026

Copy link
Copy Markdown
Contributor

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

  • Make standalone runtime-AOT wrappers the intended generated form.
  • Replace the Rust-owned shadow runtime with thin integration over the XLS-owned standalone runtime ABI.
  • Keep runtime assertions supported and reject trace-bearing artifacts until the later trace extension lands.
  • Preserve typed wrapper ergonomics while linking generated consumers against the released static runtime archive.

Validation

  • Focused generated-wrapper and standalone-runtime tests passed on macOS and Ubuntu 24.04.
  • Final branch self-review found one constructor leak path in StandaloneRunner::new; the amended head fixes it, and the follow-up review was clean.
  • Broader workspace validation reached the changed AOT suites; unrelated local environment gaps remain recorded in the workstream (pre-commit shim without a real binary on this Mac, and missing /opt/eda-tools/xlsynth/latest/block_to_verilog_main for existing ECO tests).

Landing Order

This wave-1 consumer now follows the landed public producer handoff:

  • xlsynth/xlsynth#8 at 9f60a292e369287f2b8b7be2218dc18dddf23568
  • xlsynth/rules_xlsynth#58 at d560634e4c292ecac0bc499d17173f8984d75ef5

Final product consumers still wait for the later wave-2 producer chain before repinning.

Stack:

⚠️ Part of a stack created by spr-multicommit. Do not merge manually using the UI - doing so may have unexpected results.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread xlsynth/Cargo.toml Outdated
Comment thread xlsynth-aot-runtime/build.rs
@dank-openai dank-openai force-pushed the dank/wip/xlsynth-xls-owned-runtime-aot branch 2 times, most recently from a83d80f to 234d733 Compare May 11, 2026 14:58
@dank-openai dank-openai force-pushed the dank/wip/xlsynth-xls-owned-runtime-aot branch from 234d733 to f73fc29 Compare May 13, 2026 23:52
Comment thread xlsynth/src/rust_bridge_builder.rs Outdated
@dank-openai dank-openai force-pushed the dank/wip/xlsynth-xls-owned-runtime-aot branch 2 times, most recently from 0c54684 to 8ab26a8 Compare May 19, 2026 00:59
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.
@dank-openai dank-openai force-pushed the dank/wip/xlsynth-xls-owned-runtime-aot branch from 8ab26a8 to 6a491ad Compare May 19, 2026 01:17
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.
@dank-openai dank-openai merged commit 3b44125 into main May 19, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants