Skip to content

fix(checksum_updater): register binaryen/wrpc/wit-bindgen-wrpc; refresh bytecodealliance registries - #599

Open
avrabe wants to merge 2 commits into
mainfrom
chore/refresh-bytecodealliance-registries
Open

fix(checksum_updater): register binaryen/wrpc/wit-bindgen-wrpc; refresh bytecodealliance registries#599
avrabe wants to merge 2 commits into
mainfrom
chore/refresh-bytecodealliance-registries

Conversation

@avrabe

@avrabe avrabe commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

What

Found while checking bytecodealliance-tool versions: three tools were silently unregistered in tool_config.rs and fell through to create_default_config()'s repo guess — which is wrong for all three. Every update attempt failed with "Failed to get release for X".

tool wrong guess real repo
binaryen bytecodealliance/binaryen WebAssembly/binaryen
wrpc bytecodealliance/wrpc-wasmtime bytecodealliance/wrpc
wit-bindgen-wrpc bytecodealliance/wit-bindgen-wrpc bytecodealliance/wrpc (monorepo)
  • binaryen: PerPlatformAsset, tag version_{version} (bare numeric, no v prefix) — matches tool_registry.bzl's existing binaryen entry.
  • wrpc / wit-bindgen-wrpc: static per-platform binary names (no version embedded, matches filename: "{suffix}" / is_binary=True) — both dropped glibc-linux for musl-only and ship no native Windows MSVC (gnu .exe only) as of v0.16+, matching the existing hand-authored registry values, confirmed current at v0.17.0.

With the fix, refreshed the registry only (checksums/tools/*.json) for all 9 bytecodealliance/upstream tools:

wasm-tools  1.246.2 -> 1.254.0
wit-bindgen         -> 0.60.0   (registry tracking only — see note below)
wac         0.9.0   -> 0.10.1
wasmtime    45.0.1  -> 47.0.2
wkg         0.15.0  -> 0.16.0
wrpc / wit-bindgen-wrpc -> 0.17.0
binaryen    129     -> 131
wasi-sdk    32      -> 33

⚠️ Does NOT move any active build pin

toolchains/tool_versions.bzl is a separate, hand-maintained TOOL_VERSIONS dict that get_tool_version() actually reads — not the registry's latest_version. It intentionally holds some tools back (wit-bindgen is pinned at 0.55.0: "0.58 changes C codegen type names, breaks cpp_component"). This PR is purely a registry/checksum refresh; it does not change what gets built. Bumping the active pins (especially wasm-tools/wasmtime, tied together via TOOL_COMPATIBILITY_MATRIX) is a separate, higher-risk call requiring the compat-matrix + full-pipeline verification the file's own docs mandate — not done here.

Verification

  • validate --tools <all 9>45/45 checksums valid (re-downloaded, recomputed).
  • wasi-sdk's Windows platforms (arm64/amd64, ~650MB tarballs) hit a transient timeout on the first pass and were silently dropped from the written entry — caught it, retried, confirmed all 6 platforms present before committing.
  • Restored the description field the serializer drops (wrpc, wit-bindgen-wrpc).
  • Two new unit tests pin the corrected URLs (test_binaryen_was_unregistered_now_correct_repo, test_wrpc_and_wit_bindgen_wrpc_were_unregistered_now_correct_repo). Full lib suite 26/26 pass.

Deliberately not done

componentize-py stays unregistered — it's pinned to the rolling canary tag, and a versioned release (v0.25.0) now exists upstream, but switching off canary is a MODULE.bazel-level call, not the updater's to make silently. Flagged as a follow-up.

🤖 Generated with Claude Code

avrabe and others added 2 commits July 30, 2026 06:07
…sh bytecodealliance registries

Three tools were silently unregistered in tool_config.rs and falling through to
create_default_config()'s repo guess -- which is WRONG for all three (guesses
bytecodealliance/binaryen, bytecodealliance/wrpc-wasmtime,
bytecodealliance/wit-bindgen-wrpc; real repos are WebAssembly/binaryen and
bytecodealliance/wrpc respectively). Every update attempt for these three
tools failed outright with "Failed to get release for X" -- discovered while
checking bytecodealliance-tool versions and finding the updater couldn't touch
them at all.

- binaryen: WebAssembly/binaryen, PerPlatformAsset, tag `version_{version}`
  (bare numeric version, no `v` prefix) -- matches tool_registry.bzl's binaryen
  entry exactly.
- wrpc + wit-bindgen-wrpc: both live in bytecodealliance/wrpc. Static
  per-platform binary names (no version embedded, matches the toolchain's
  `filename: "{suffix}"` / is_binary=True) -- both dropped glibc-linux for
  musl-only and ship no native Windows MSVC (gnu .exe only) as of v0.16+,
  matching the existing hand-authored registry values, confirmed current at
  v0.17.0.

With the fix, refreshed the registry (checksums/tools/*.json only -- NOT the
active build pins in toolchains/tool_versions.bzl, which are separately
hand-maintained and intentionally hold some tools back, e.g. wit-bindgen at
0.55.0 due to a documented C++ codegen break) for all 9 bytecodealliance/
upstream tools:

  wasm-tools 1.246.2->1.254.0, wit-bindgen ->0.60.0 (registry only, NOT the
  active pin), wac 0.9.0->0.10.1, wasmtime 45.0.1->47.0.2, wkg 0.15.0->0.16.0,
  wrpc/wit-bindgen-wrpc ->0.17.0, binaryen 129->131, wasi-sdk 32->33.

Verified: validate --tools <all 9> -> 45/45 checksums valid (re-downloaded,
recomputed). wasi-sdk's Windows platforms (arm64/amd64, ~650MB tarballs) hit a
transient download timeout on the first pass and were silently dropped from
the written entry; caught it, retried, confirmed all 6 platforms present.
Restored the description field the serializer drops (wrpc, wit-bindgen-wrpc --
the others never had one). Two new unit tests pin the corrected URLs; full lib
suite 26/26 pass.

componentize-py intentionally left unregistered: it's pinned to the rolling
`canary` tag, and switching it to the newly-available versioned release
(v0.25.0) is a MODULE.bazel-level call, not the updater's to make silently --
flagged as a follow-up.

Registry-only change: does not move any active build pin, so it does not by
itself change what gets built. Bumping the active pins in tool_versions.bzl
(especially wasm-tools/wasmtime, which are tied together via
TOOL_COMPATIBILITY_MATRIX, and wit-bindgen, held back for a documented reason)
is a separate, higher-risk decision requiring the compat-matrix + full-pipeline
verification the file's own docs call for -- not done here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts:
#	tools/checksum_updater/src/tool_config.rs
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