Prepare Hew v0.6.0-rc1 - #2857
Conversation
|
Heads-up before this gets rebased: the Windows rpmalloc fix does not survive the toolchain repo move.
The modify/delete is the risky one: it resolves silently in the "take the deletion" direction. Why that matters. Commit
Provenance is not in doubt. If, then: rebasing this PR by taking Suggested resolution: port Noting this is a draft, so it is not a merge block today — it is a pre-merge defect the rebase would otherwise bury. Asset bytes were not downloaded; the claim is about the published build recipe and its provenance chain. |
|
Second heads-up on this RC: the Following up my earlier note about the Windows rpmalloc/toolchain-move interaction. This one is separate and, unlike that one, it is not a rebase hazard — it is red right now at head Two workflow runs exist at this head. Discussion of this RC has centred on
1. 201 raw plus 2. plus 3. Attribution — these are this branch's, not inherited. Read by name on the PR's own base
All three flip success → failure at this head.
Still a draft, so this is not a merge block today — but for a branch whose purpose is to be tagged as |
|
Update on my earlier three-blocker note: two of the three are now clear at Re-read by name against the same checks I attributed last time:
Blocker 3 (release-record tag-readiness) is resolved. Blocker 2 (FreeBSD workflow contract) is also resolved — the What Cause is a prerequisite added to a target that runs in a job with no nextest. On base, corpus-floor-check:
bash scripts/tests/test_corpus_floor.shAt this head, corpus-floor-check: test-leak-oracle-selftestand Worth flagging because of what it masks. This step sits early in the job, so its failure leaves 14 downstream steps Two candidate shapes, both small: add Read-only from the API and job logs; no build or local reproduction. Blocker 1 ( |
|
Following up on Blocker 1, which my last note left as "unchanged and still open" — I measured it rather than assuming, and "unchanged" turns out to be exactly, byte-for-byte true. I diffed the failing-test sets in the
So the four new commits move the workflow/packaging layer only; the test failures are untouched. That is consistent with the delta ( This is a regression against the PR's own base, not inherited. Where the 107 sit, by owning crate: Two signatures dominate and both are ownership/affinity diagnostics fired at compile time, i.e. the fixtures no longer typecheck rather than failing an assertion:
The single largest cluster is Reading these as one class: a tightened extern-ownership/affinity rule landed somewhere in the RC composition and the Note the same suite runs on FreeBSD x86_64 with 681 unique failing tests of 12902, and that job's provisioning is now fine — it reaches and runs the suite at both heads, with an identical failing set. So the FreeBSD gate's remaining red is this same Blocker 1, not a packaging problem. Read-only from the API and job logs; no build or local reproduction, so the single-root-cause reading above is a hypothesis from the diagnostics, not a bisect. |
|
Windows-only blocker: the new capability-gen authority gate is CRLF-fragile (head Following up on the previous review — the Linux MIR regression there still stands. This is a separate, not-yet-reported failure on a different platform, found by reading step-level conclusions rather than check-level ones.
Cause, pinned to one line — let content_start = after_begin + source[after_begin..].strip_prefix('\n').map_or(0, |_| 1);On a Windows checkout the byte following the marker is Why the file is CRLF there: Attribution: this is introduced by the PR, not pre-existing. Both Two candidate fixes (either resolves it; the first is more robust):
I'd lean toward (1): the generator asserts a byte-exact property of a checked-in doc, so making the parser line-ending agnostic keeps the gate honest regardless of checkout config.
Not reported as blockers: the 7 red |
|
Blocker on The rollup is broadly red (12 FAILURE / 2 CANCELLED / 7 SUCCESS), but it is two independent causes, and they need separate handling: 1. Windows only — 2. Linux AND macOS arm64 —
Identical signature on both platforms, so it isn't platform-conditional. Why I think this is branch-introduced rather than inherited:
So this branch carries MIR bytes-ownership fixes that never landed on Please don't green this by touching the tests. Both assertions inspect real emitted LLVM IR ( Suggestion: land the MIR bytes-ownership work on Caveat: read from CI logs (run |
|
Re-checked at head ✅ The FreeBSD provisioning contract is cleared, via the split rather than the duplication — Two reds remain. Rollup is 7 success / 10 failure / 2 cancelled. 1. The
|
ASan gate is red on a test-oracle defect, not a leak in this diff
The fd count went down by 3. A leak is Mechanism. The job runs Why it's worth fixing rather than retrying. The equality is also fail-open in the direction Suggested remedy — snapshot the fd set (the Read-only review; nothing pushed. CI readings are spot readings at head |
|
Thanks, this has been genuinely useful. Worth saying up front that I've been working locally and haven't pushed since Two of yours were new to me and I've verified and tracked both. The CRLF one is exactly right, including the One thing to push back on gently. Annotating the Agreed on the actor bytes IR tests, I won't green those by touching them. The rpmalloc note is tracked, and spotting that the modify/delete would resolve silently toward the deletion was the valuable part of it. More of the per-check base-vs-head attribution please, and more of the unsampled-versus-green flag, since those two are where you're adding the most. I'll push once the ownership work is integrated, which should clear a lot of what you're seeing. |
CI selects change-scoped work through the shared shard set and common cache. Redundant suite entry points, vacuous checks, and duplicate scripts disappear.
The lifecycle matrix imports run_bounded and assert_bounding_contract from scripts/bounded_subprocess. It was removed as an unused entry point, but it is a module nothing executes and everything about it is reached by import, so a scan for callers did not see it.
Five fixtures under tests/hew are bare fn main oracles with no #[test] functions. Running the directory as one invocation ignored them; caching runs each file separately, where hew test exits non-zero with no report and the wrapper read that as a broken fixture. A clean exit with no report now means no tests and the fixture is skipped. The wrapper also stops discarding the exit code with || true, so a genuine failure that still writes a parseable report can no longer pass.
The 600-second floor came from a 234-second run on a warm 16-core developer machine. Hosted runners have far fewer cores and the consumer corpus has grown, so the watchdog killed this gate on CI while it was still healthy and took both Linux jobs down with it. 1800 seconds matches its sibling compiled corpora and still bounds a hang.
Finalize sink classification and rejected-connection EOF behavior, streamline compiled test execution, and repair platform provisioning. Remove the reverted parallel test runner and calibrate bounded checks to measured host capacity.
3cfa690 to
df55886
Compare
Summary
This composes the completed v0.6.0-rc1 closure work into one release candidate branch.
Why
RC1 needs one coherent candidate whose compiler/runtime behavior, platform interoperability, memory floor, and publication machinery are proven together. This branch consolidates the independently reviewed closure lanes and the defects found while composing them, rather than shipping them as a sequence of partial release PRs.
Validation
Completed before publication:
hew-typessuite: 2,872 testshew-runtimelibrary suite: 2,285 testsThe comprehensive macOS preflight/leak authority, Linux/FreeBSD/Windows fleet validation, normal CI, and the dedicated release gate are running against this branch. The PR will be marked ready only after those candidate-wide gates and final Claude Opus acceptance are green.