Repository navigation
t27b: glass_window.t27 lowers -- rem_pio2f pointer call fixed, refusals name both types, @sin/@cos f32 wired (Closes #11788) - #11813
Conversation
…O undefined symbols + BRANCH26 (#8946) A fn whose body is @extern("sym") imports the C symbol sym. lower names it @sym (a name t27 source cannot declare), passes a str or slice argument as its bytes' address, and codegen emits each call's bl as a tagged data ref that only macho.t27 resolves: one ARM64_RELOC_BRANCH26 against an undefined _sym nlist, distinct names shared, sorted after the externals. Images without imports are byte-identical (reloc_slot is 2*i). The Rust glue nets negative by compacting the a64.rs disassembler tables. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…8946) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l-11788-extern-boundary # Conflicts: # gen/rust/tri/t27b/macho.rs # specs/tri/t27b/macho.t27
…2_large with pointers, and the reject named nothing (Closes #11788) The chain that blocked make t27os on master: glass_window.t27 pulls specs/tri/t27b/libm.t27 through any libm builtin; lowering the spliced module reached t27b_libm_rem_pio2f, whose large branch still called t27b_libm_rem_pio2_large as (x*, y*, e0, nx, prec) after that routine had been ported to (x0, x1, x2, e0, nx) -> (n, y0, y1). A *[1]f64 reached the f64 coercion and the reject read 'type mismatch at line 1730 (expected f64, found a pointer)', naming nothing actionable. - libm.t27: rem_pio2f returns (n, y) by the file's own port convention; its large branch passes the x pieces as values (nx = 1 reads only x0); sinf and cosf destructure. The stray top-level 'return' after cosf (already on master, never lowered through the splice) is gone. New sweeps hold sinf and cosf to @sin/@cos of an f32 bit for bit across every branch, into rem_pio2f's large one: 32/32 under the reference and under t27b, 0 vacuous. - libm_plan.t27: @sin and @cos of an f32 wire to __t27b_libm_sinf and __t27b_libm_cosf -- the ports sat unwired behind REFUSE_NO_F32. has_f32, routine, the why text and the plan's tests follow; the plan sweep now walks all twenty-one builtins where it stopped at nineteen (18/18 both sides). - lower.rs (+10/-10): the pointer arms of coerce and cond_val name the pointee ('expected f64, found a pointer to *[1]f64'), so a refusal carries both conflicting types next to the line, and the redundant Val::P enum special cases fold into type_name -- the foreign debt does not grow (owner rule 2026-10-09). source.rs pins the new text. Evidence: make t27os builds T27OS.app and t27os-pty here (build 7215); the window launches. cargo test -p t27b 162/162. Seals re-stamped for both specs (check_seal_currency: the five stale rows left are the t27f ones master already carries; check_seal_coverage exits 0).
Summary by t27-beesChecked by the t27 compilert27c parse, parse-complete and typecheck on each changed .t27 file at
Read by the modelThis PR fixes a Worth a look
Read: 11 files, +516 -282, the whole diff up to 60000 characters (the rest was not read). Head |
…dth, opaque black #000000 in the full window and full screen Owner, 2026-10-23, said directly: the matte glass was in the compact (docked) mode, and in the full one black #000000 -- isolate it and do not break it. Until today the decision lived in a full-screen bool threaded through backdrop_alpha, tint_alpha and the surface family, so the full 960x540 window rendered as glass. The rule now lives in exactly one pure fn, on_glass(sw): the docked panel is PANEL_W wide, the full window W_PT, so the scene width the frames already carry decides, and docking resizes the window -- the material follows the dock with no second state to keep in step (a module var is impossible here: the Mach-O object has no writable data section, VarDecl(module, object file)). The readers are backdrop_alpha, backdrop_clears, tint_alpha, surface_alpha_with and draw_ground's frost; every draw path that needed the width now carries sw (the card chain, the side rows, the lane tail, the plate and the page fns) -- t27b typechecks the whole file, no decision left outside on_glass. Tests pin the mapping both ways: glass at PANEL_W (backdrop 0.0, tint 0.55, surfaces their tints, frost on), opaque #000000 at W_PT (backdrop 1.0, tint 1.0, every surface 1.0, the same as the frame and the layer). 62/62 under t27b test. The reference test-report block on this file is master's (the master text blocks the same way at spec.zig:217) -- the window's gate is t27b, and make t27os builds and launches (build 7216).
… (owner, 2026-10-23) The avatar picture and the name come from the GitHub user after the sign-in that already exists (share.t27's device flow): the host fetches the signed-in user and writes both through the existing atomic profile.t27p / avatar.png contract. Nothing manual. The recorded decision lives in profile.t27's header with what stays as the fallback until the sign-in slice of #11560 is wired.
PR DashboardGenerated at: 2026-10-23 13:27:16 UTC
Summary
Seal Status
|
…ncy, the reference boundary - libm_trigf.t27 (conformance, the libm_logf shape): @sin and @cos of an f32 held to the reference bit for bit -- 3000+2990-point sweeps over both bit patterns (every exponent, both signs), 300 points inside rem_pio2f's large branch, dense near one, the kernel bands, fixed reference bits extracted from this repository's own reference via the assert_eq prelude, signed zero on the bits, inf/NaN held to 'is a NaN' per side. 5/5 under t27c test-report and under t27b test, 0 vacuous. - seal currency: compiler/cli/git.t27 and the three t27f page specs re-sealed where master's merge train moved the specs after sealing -- check_seal_currency reports 0 STALE again; check_seal_coverage 0 with the new spec's seal (3046 seals). - glass_window.t27 header: the reference block on this file is by construction -- gen-zig renders @extern verbatim and Zig takes two arguments (master's text blocks the same way). The gates that hold it are t27b and make t27os; the extern-stub slice for gen-zig is filed with evidence on #5980.
…aster's copy # Conflicts: # .trinity/seals/cli_git_commands.json # .trinity/seals/git_commands.json # .trinity/seals/t27f_T27fWorkGraph.json # .trinity/seals/t27f_display_list.json # .trinity/seals/t27f_export_video.json
PR DashboardGenerated at: 2026-10-23 13:44:47 UTC
Summary
Seal Status
|
Closes #11788.
Root cause
glass_window.t27pullsspecs/tri/t27b/libm.t27through any libm builtin; lowering the spliced module reachedt27b_libm_rem_pio2f, whose large branch still calledt27b_libm_rem_pio2_largeas(x*, y*, e0, nx, prec)after that routine had been ported to(x0, x1, x2, e0, nx) -> (n, y0, y1). A*[1]f64reached the f64 coercion and the reject readtype mismatch at line 1730 (expected f64, found a pointer)-- a merged line that moved with nothing and named no construct. The line did not map to the source becauseself.linewas stale: the construct lived inside the spliced libm closure.What changed
rem_pio2freturns(n, y)by the file's own port convention; the large branch passes the x pieces as values (nx = 1reads onlyx0);sinf/cosfdestructure. The stray top-levelreturnaftercosf(already on master, never lowered through the splice) is deleted. New sweeps holdsinf/cosfto@sin/@cosof an f32 bit for bit across every branch, intorem_pio2f's large one.@sin/@cosof an f32 wire to__t27b_libm_sinf/__t27b_libm_cosf-- the ports existed and sat unwired behindREFUSE_NO_F32(the why-text also claimedtanhunported; it is wired). The plan sweep now walks all twenty-one builtins where it stopped at nineteen, soSIN/TANHare covered for the first time.coerceandcond_valname the pointee --expected f64, found a pointer to *[1]f64-- so a refusal carries both conflicting types next to the line (t27b: glass_window.t27 fails on master -- type mismatch (expected f64, found a pointer) blocks make t27os #11788's requirement); the redundantVal::Penum special cases fold intotype_name.source.rspins the new text. Replacement plan for this glue stays on port epic epic: t27b in t27 -- port the backend and its tooling from Rust/Python into .t27 #6198.Evidence
make t27osbuildstarget/t27os/T27OS.appandt27os-pty(build 7215, ad hoc signed); the window launches.libm.t27: 32/32 undert27c test-reportAND undert27b test, 0 vacuous.libm_plan.t27: 18/18 both sides.cargo test -p t27b: 162/162.check_seal_currencyleaves only the five t27f rows master already carries;check_seal_coverageexits 0.Follow-ups (not in this PR)
specs/tri/t27b/conformance/libm_trigf.t27, in thelibm_logf.t27shape) once the reference bits are measured on the lab.#000000-- to be isolated as the single material switch inglass_window.t27with tests pinning it.