Repository navigation
t27b v0.1.0 -- the native AArch64 backend, shipped with the signed corpus receipt of this exact binary
t27b is the native AArch64 backend for t27: .t27 to AArch64 machine code, with an in-process JIT test runner and a Mach-O object emitter, and no LLVM. This is its first release. The binary attached here is the exact binary the t27b lab ran the whole corpus with, and the numbers below come from the lab's signed receipt of that run.
Tag: t27b-v0.1.0 on master 2e06cef59. Tracking issue: #7701. Epics: #6063 (coverage) and #6488 (the compiler sieve, filter C10).
Coverage at this commit (from the signed receipt)
The reference path is t27c gen followed by zig test (Zig 0.16). It passes 1099 of the 1584 corpus specs. On those 1099 specs t27b:
| specs | |
|---|---|
| passes, with runtime checks executed | 899 (81.8%) |
| passes vacuously (no runtime assert ran) | 150 |
| is blocked on a construct it refuses by name | 50 |
| disagrees with the reference, test by test, over 1064 compared files | 0 |
| has a JIT-versus-interpreter mismatch | 0 |
A refused construct is a counted blocker, never a skipped test. The full per-file results are in t27b-0.1.0-corpus-run.json.
Verify it yourself
- The binary is the one that ran.
sha256sum t27b-0.1.0-aarch64-linuxgives
0b43ce8190d39412e9c5946d71eb88e5a753b685235fa68feda03bc23c0d9e91.
This equals thet27b_sha256field oft27b-0.1.0-corpus-receipt.json. - The receipt is signed.
- It is signed with ed25519 under the domain line
t27-corpus-receipt-v1, by keya05db80f53c317f6. The public key is.trinity/keys/a05db80f53c317f6.pub. - From a t27 checkout at this tag,
t27c corpus-receipt compare R R(withRthe receipt) printsEQUIVALENTand exits 0. It checks the signature, and checks that every leaf rehashes to its signed root: inputs, verdicts and outputs. - The trust level is NAMED: whoever holds the t27b lab's key signed these bytes. The signature is not rooted in hardware.
- It is signed with ed25519 under the domain line
- Compare against later runs. Since #7686, the lab signs a receipt for every master run, and on request for a PR head.
t27c corpus-receipt compare BASE HEADreturns:- 0, EQUIVALENT;
- 3, IMPROVED_ONLY;
- 4, NEUTRAL;
- 1, REGRESSED: a file left pass, a new defect appeared, or the reference moved;
- 2, REFUSED.
What changed since the coverage epic began this week
Every lowering decision below lives in a .t27 plan spec, which t27c gen-rust turns into Rust (owner rule "Only t27"). Hand-written glue stays under 40 lines per file and 80 per PR.
- #7614:
@abs,@max,@min,std.math.piande(builtin_plan.t27). - #7627:
@intCastwith an integer result type, as a checked cast (int_cast_plan.t27). - #7645 and #7648: run-time
@expand@log, calling compiler_rt ports written in t27. Results are bit-exact against the reference (libm_plan.t27,libm.t27). - #7657: integer constants wider than 64 bits, up to
u1024, folded at compile time (wide_plan.t27). - #7660, #7670: the last JIT-versus-interpreter mismatch is gone.
- The interpreter was right:
gen_canvasreturned a slice of a dead frame. - t27b now refuses such a return, and the port was fixed so the caller owns the storage.
- The interpreter was right:
- #7671: a stale refusal was removed. t27b's own
macho.t27andcensus.t27now pass. - #7679: the blocker set-cover and the reference-cache hash moved from hand Rust into
blockers.t27, the latest step of the port #6198. - #7686: the lane verdicts for signed base/head receipts.
Not in this release
- No macOS binary. The JIT runs on macOS (MAP_JIT); build it with
cargo build --release -p t27b. - No crates.io package. t27b mounts the t27c front end (
bootstrap/src/compiler.rs) by path. - AArch64 only. On x86_64 Linux, run the binary under
qemu-aarch64, as the lab does. - Blocked constructs. About 50 specs the reference passes are still blocked; #6063 tracks them, one plan spec per family.