Skip to content

List the Embree headers individually in binding.yml - #7

Merged
jcant0n merged 1 commit into
mainfrom
fix/binding-sources-per-file
Aug 11, 2026
Merged

List the Embree headers individually in binding.yml#7
jcant0n merged 1 commit into
mainfrom
fix/binding-sources-per-file

Conversation

@jcant0n

@jcant0n jcant0n commented Aug 11, 2026

Copy link
Copy Markdown
Member

The first CD run refused to publish, and it was right to:

- vendored: v4.4.1
- resolved: v4.4.1 (up to date)
- EmbreeGen/Headers/embree4 (c-header): updated
Result: sources changed.

::error::upstream moved and Evergine.Bindings.Embree/runtimes exists, but no native
artifacts were supplied. Committing now would ship a managed layer built from one
revision against libraries built from another.

The release had not moved. The directory source had. A directory is compared by hashing
everything under its path, and this tree can never match upstream's for two reasons:
include/embree4 also carries eight .isph files for ISPC that this binding does not use, and
it carries a rtcore_config.h that upstream does not have at all, because CMake generates it.

The visible cost was a CD that could not publish. The quieter one is that binding-updater
would have read that same report every month, concluded upstream had moved, and opened a pull
request that regenerated nothing.

Listing one entry per header makes each source hash as a single file, so what is not listed is
simply not compared — rtcore_config.h included. Verified all nine match upstream at v4.4.1
byte for byte.

The first CD run refused to publish:

    - vendored: v4.4.1
    - resolved: v4.4.1 (up to date)
    - EmbreeGen/Headers/embree4 (c-header): updated
    Result: sources changed.

    ::error::upstream moved and Evergine.Bindings.Embree/runtimes exists, but no
    native artifacts were supplied

The release had not moved; the directory source had. A directory is compared by
hashing everything under its path, and this tree can never match upstream's:
include/embree4 also carries eight .isph files for ISPC that this binding does
not use, and it carries a rtcore_config.h that upstream does not have at all,
because CMake generates it.

So the comparison reported a change on every run with the release sitting still.
The visible cost is a CD that cannot publish. The quieter one is that
binding-updater would have read the same report every month, concluded upstream
moved, and opened a pull request regenerating nothing.

Listed one per header, each source is hashed as a single file, so what is not
listed is not compared. Verified all nine match upstream at v4.4.1.
@github-actions

Copy link
Copy Markdown

API gate: additive

Every symbol that existed still exists, unchanged. Nothing that compiled before stops compiling.

Target framework Added Removed
net10.0 +0 -0

Enum and constant values are part of the measured surface: a renumbering keeps compiling and sends the wrong number to the driver, so it counts as a removal.

@jcant0n
jcant0n merged commit ca6089b into main Aug 11, 2026
4 checks passed
@jcant0n
jcant0n deleted the fix/binding-sources-per-file branch August 11, 2026 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant