You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 38549b4
Browse filesBrowse the repository at this point in the historyBrowse files
tools-island: a seam has two halves, and scan is where they are compared
The generator served one island. A seam has two implementations of one
`extern "C"` boundary -- a device island and a host fallback -- and exactly
one of them is in any link, which is the arrangement every example under
`examples/09-heterogeneous` has. Handed only the device half, the generator
produced an empty boundary in a `--no-accel` build and the C++ side failed
on an unresolved name.
`scan` now merges entries by name, so a build program hands it both files
unconditionally: both exist on disk in either build, and which one is
compiled is the manifest's decision rather than a condition the build
program repeats.
Two definitions of one name that declare it differently are refused there,
naming both files and both signatures. Nothing else catches that. The two
halves are never in one translation unit and never in one link, and C
language linkage does not mangle, so a build with disagreeing halves is
clean and the artifact reads its arguments by whichever signature it was
compiled with. `scan` is the only point at which both texts exist at once.
The fixture gains the host half under `cfg(not(accelerator = "vulkan"))`,
so both legs are built and run, and a CI step perturbs one signature and
asserts the refusal names both files. The README paragraph claiming the two
could not disagree under `scan` was true only while `scan` took one file.
0 commit comments