Repository navigation
Conversation
Quest-Claim: 8db415673a8cd2e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e calling file trybuild compiles from inside the target directory, which mbx's managed target moves out of the checkout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ck on the host Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # uniffi/MIGRATE.md
… remains Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
The land gate's
just cibuilds every Rust workspace cold, on every batch. moq's gate builds through mbx in a per-repository cache, so it rebuilds only what changed (A warm gate, decided with the maintainer on 2026-11-01).Approach
Copied from moq's dev shell and its gate:
flake.nix: the dev shell'sshellHookputs mbx's Cargo shim back ahead of the pinned toolchain whenmbx setupinstalled one, as moq's does, and exports its directory asRUST2_CARGO_SHIM. Without mbx on PATH it does nothing.ts/,ffi/,driver/andgo/justfiles: they prepend their nightly to PATH, which would put it ahead of the shim and skip mbx. They keep the shim first.uniffi_macros:generate_and_include_scaffolding!(thetrybuildfeature) resolves its path from the calling file, asinclude_str!does. The UI cases named their UDL as../../../../uniffi/...from trybuild's project insidetarget/, which only works whentarget/is a real directory in the checkout. mbx's managed target lives outside it.bench/build/run.shneeds nothing: it re-enters its ownbuild-benchshell, whose toolchain lands ahead of any shim, so it still measures plain Cargo.Measurements
A whole
just ci(every module, sinceflake.nixchanged) through mbx 1.29.2, in this worktree with an empty, isolated cache,CI=trueand 8 jobs. CPU-seconds come from thequest gatescope's cgroup (cpu.stat). Load average was about 14 on 32 threads.just cithrough mbx 1.29.2go/fix, at dafb487uniffi_uitestspassed in all three. The cold run compiled its trybuild cases (147 s); the warm runs reused them (under 1 s).Earlier, per step, with mbx 1.28.0 at af523c7 (load average 15 to 22, so cold numbers vary by about 20%):
uniffi-dart, a build dependency of 25 fixtures. Cargo itself rebuilds every dependent, so the cache cannot help there.Host changes
The host config is outside this repository. In order:
OUT_DIR(jdx/mr-boxington#896). Rerunmbx setupwherever a shim exists: the shim runs the mbx itsmbx-targetfile names, not the one on PATH, so an old shim keeps running 1.28.0 while that store path exists. The local user shim on this host still names 1.28.0.mbx[cache]: object cache: ...).Decisions needed
uniffi_uitestsfails that way. moq's gate on the same host is pinned to 1.28.0, and I could not confirm from this repository that rust2's runner has no mbx on its PATH.uniffi_uitestsuntil step 1.Settled earlier (2026-11-02): wait for the upstream fix rather than keep
uniffi_uitestsoff mbx. mbx v1.29.2 (2026-11-03) shipped that fix in jdx/mr-boxington#897.Impact
uniffi_macros::generate_and_include_scaffolding!(trybuildfeature only): a relative path now resolves from the calling file, not from rustc's working directory. This is breaking. There is noMIGRATE.mdentry, since docs: drop MIGRATE.md until the first release #571 dropped those until the first release. The fork's README lists it as a carried change.RUST2_CARGO_SHIMis set when an mbx shim exists.Alternatives
CARGO_TARGET_DIRinside the checkout to keep trybuild's relative paths working: that gives up mbx's managed targets, and the paths would still break for anyone who keeps a target elsewhere.Follow-ups
Review
quest review --new), 2 rounds. Head reviewed: dafb487. Round 2: no findings.ffi/tests/api.py:18, restore UTF-8/LF stdout: refuted. The branch never touched that file. The round diffed against an origin/main that had moved past the branch's merge. After merging main again,git diff origin/main -- ffi/tests/api.pyis empty.Checks
just cithrough mbx 1.29.2: passed at 3d0cabc (cold and warm) and at dafb487 (head).just check: passed at 3d0cabc.Bench FFI (Swift)check failed on the old head a6755ce withunknown or missing subcommand 'swift-test'from the bench harness on its fork build. This diff does not touch the bench or Swift.🤖 Generated with Claude Code