Repository navigation
Conversation
…loses #7742) specs/tri/t27b/conformance/pointer_equality.t27 pins what the reference does with the comparisons of gen_hazard_pointers.t27: two optional pointers (`hazard1 != hazard2`, both null and not), a pointer with a bounds-checked index against an optional pointer, either way round (`®istry.hazards[i] == hazard`), and two plain pointers, one with a run-time index. In Zig 0.16 they compare addresses, null being 0. t27c test-report (zig 0.16.0, t27c lab): 3/3 pass, 0 vacuous, 15 runtime asserts. 10 of 10 mutants are killed by the reference and by t27b. Sealed on the t27c lab (seal --save, then --verify: all hashes MATCH). Part of #6063. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ses, from a t27 plan (Closes #7742) The decision is specs/tri/t27b/ptr_eq_plan.t27, mounted through t27c gen-rust (gen/rust/tri/t27b/ptr_eq_plan.rs): `==` / `!=` with a pointer or an optional pointer on each side, one pointee type, compares the addresses. An optional pointer's address is its payload when its flag is set and 0 when not; each operand is pinned in a frame slot in source order, so a bounds check on either side still runs first and once. Every other comparison keeps its path (the optional-of-scalar compare, null_compare, enums, integers). Before, t27b refused all three shapes: ExprBinary(?T) "of two optionals", ExprBinary(?T) "a value that has effects", and type mismatch "`==` on a pointer". Plan: 6/6 pass under t27c test-report, 0 vacuous; 7 of 7 plan mutants killed. gen-rust output is what the lab's t27c prints; sealed (seal --verify: all hashes MATCH). Glue: lower.rs +39 (the mount, the call in the binary operator, ptr_compare, ptr_word). Tests: cli/t27b/tests/source.rs +8 runs the conformance spec. Corpus (t27c lab, qemu-aarch64, master t27b and this branch's over the same tree): only the conformance spec moves (to pass). With #7737's glue as well, gen_hazard_pointers.t27 passes 4/4 under `t27b test --check`. Part of #6063. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From master's side, no conflicts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From master's side, no conflicts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oses #7742) docs/reports/t27b_expectations.json: `tri t27b ratchet --bless --accept-new` over master d42df2b's lab run with this branch's t27b verdicts for the files it changes (t27c lab corpus, master 4d7d2d3's t27b against this branch's over the same tree) and the reference verdicts t27c test-report gave the new specs, composed onto master's ledger with only these rows: conformance/pointer_equality.t27 and ptr_eq_plan.t27, new, pass. pass 898 -> 900, max_not_pass stays 39. gen_hazard_pointers.t27 needs #7737's glue too; whichever of #7744 and this PR lands second moves its row to pass. AGENTS.md: this branch's clause, `wc -l` over master 4d7d2d3: cli/t27b/src/*.rs 14995 -> 15034, src/*/*.rs 1166 (unchanged), cli/t27b/tests/*.rs 7987 -> 7995. Part of #6063. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 8, 2026
Merged
Merged
Merged
Contributor
This was referenced Oct 8, 2026
Merged
Merged
From master's side (#7904's tool-card tests and others; no t27b code changed, the conflict is the ledger only). docs/reports/t27b_expectations.json: master's ledger plus this branch's three rows, recomposed as before (gen_hazard_pointers.t27 -> pass, two new pass rows): pass 942 -> 945, max_not_pass 33 -> 32. AGENTS.md: master's remainder plus this branch's clause, re-measured with `wc -l` over master 4daabae: src/*.rs 15227 -> 15266, src/*/*.rs unchanged, tests/*.rs 8164 -> 8172. Merged-tree checks on the t27c lab: cargo test --release -p t27b 130 passed, 0 failed; under `t27b test --check` gen_hazard_pointers.t27 (4/4), pointer_equality.t27, ptr_eq_plan.t27 and opaque_pointer.t27 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
PR DashboardGenerated at: 2026-10-08 22:40:15 UTC
Summary
Seal Status
|
This was referenced Oct 8, 2026
This branch has not been deployed
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.
Closes #7742. Part of #6063 (t27b coverage, item C10 of #6488). Split from #7737 (#7744).
Decision
In Zig 0.16,
==and!=between two pointers, two optional pointers, or one of each, to one pointee type, compare the addresses, null being 0. Both operands are evaluated, left first. t27b now does the same. An optional pointer's address is its payload when its flag is set and 0 when not. Each operand is pinned in a frame slot in source order, so a bounds check on either side still runs first and once. Every other comparison keeps its path: the optional-of-scalar compare,null_compare, enums and integers.Before this, t27b refused all three shapes:
ExprBinary(?T)"of two optionals",ExprBinary(?T)"a value that has effects", andtype mismatch"==on a pointer". The corpus case isgen_hazard_pointers.t27(hazard1 != hazard2,®istry.hazards[i] == hazard). Its reference pass is for the right reason:HazardRegistry_acquirereturns an element of the caller's registry.Evidence
All on the t27c Railway lab (zig 0.16.0, t27c from master).
t27c test-reportgives 3/3 pass, 15 runtime asserts onconformance/pointer_equality.t27, and 6/6 onptr_eq_plan.t27. Both have 0 vacuous passes.seal --save, then--verify: all hashes MATCH).conformance/pointer_equality.t27moves (ExprBinary(?T)-> pass). The new plan passes under both. Nothing else changes: lifting the plain-pointertype mismatchunblocks no other corpus file.t27b test --check, with 16 runtime asserts.cargo test --release -p t27b(t27c lab, x86_64 interpreter): 119 passed, 0 failed on the lane head; 127 passed, 0 failed on the merge with master 1083135.Lines by file
cli/t27b/src/lower.rsptr_compare,ptr_word)cli/t27b/tests/source.rsgen/rust/tri/t27b/ptr_eq_plan.rsspecs/tri/t27b/ptr_eq_plan.t27specs/tri/t27b/conformance/pointer_equality.t27.trinity/seals/docs/reports/t27b_expectations.jsonAGENTS.mdHand-written total +47 (budget 80; at most 40 per file). Master's
check_budget()andcheck_all()fromgen/c/policy/own_language.cboth exit 0 on this diff.wc -lover master 1083135:cli/t27b/src/*.rs15191 -> 15230,cli/t27b/src/*/*.rs1202 (unchanged),cli/t27b/tests/*.rs8119 -> 8127.Ledger
Only the rows that move: gen_hazard_pointers.t27 goes from blocked to pass (with #7744, now on master), and
conformance/pointer_equality.t27andptr_eq_plan.t27are new rows that pass. On master 1083135's ledger: pass 921 -> 924, max_not_pass 36 -> 35.Receipt
Signed lane receipt from the t27b lab (#7686), compared on the lab from
/work/t27with/work/t27c-master corpus-receipt compare BASE HEAD --challenge-head <mine>:lane improvedfor pointer_equality.t27 and ptr_eq_plan.t27. No other file changed. The head run has 0 mismatches and 0 reference disagreements, cargo test passes 139 with 0 failed, and there are no ratchet findings on these files.Masters 14e1c7b (#7447, the bit_cast plan), 81da894 (#7769), bbb77f0 (#7744, this lane's sibling) and 1083135 (the f32 rounding ports) were merged in after that. With #7744's glue in the tree, gen_hazard_pointers.t27 now passes, and its row moves to pass here. On the t27c lab, the merge with bbb77f0 gave cargo test 126 passed, 0 failed, and gen_hazard_pointers.t27 4/4 under
t27b test --check. The corpus run, master bbb77f0's t27b against that merge's over the same tree, moves exactly gen_hazard_pointers.t27 and pointer_equality.t27 (ExprBinary(?T)-> pass). The merge with 1083135 gives cargo test 127 passed, 0 failed, and the same--checkresults. A receipt for that head is requested from the lab.Generated with Claude Code