bazelbuild/bazel

Loaded wasm modules are not shareable between module extension and instantiated repository rules

Open

#26974 opened on Sep 12, 2025

View on GitHub
 (5 comments) (0 reactions) (0 assignees)Java (25,384 stars) (4,465 forks)batch import
P2help wantedteam-ExternalDepstype: bug

Description

Description of the bug:

I have a wasm module that converts toml to json. It's used in rules_rs in the hub-and-spokes pattern ("hub" @cargo repo provides aliases to targets in "spoke" repos, 1 repo for each crate). The module extension needs to parse the Cargo.lock toml file, and each spoke repo needs to parse the Cargo.toml in the downloaded crate. Since the download is triggered in the spoke repo via rctx.download_and_extract, the parsing must also occur in the spoke repo.

repository_ctx.load_wasm is intended to allow loading the module once and executing it repeatedly, but it's not clear how to pass the reference to the loaded module from the module extension to the spoke repos, and It seems wasteful to load the module repeatedly. (Not sure how to get the timing here, but loading this module into wazero, a different wasm runtime, takes around 70ms).

This hub-and-spoke model is a common pattern for rulesets that mirror package-manager dependency trees into Bazel (cargo, pnpm/rules_js, pypi/rules_python, etc.)

Which category does this issue belong to?

No response

What's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

No response

Which operating system are you running Bazel on?

No response

What is the output of bazel info release?

No response

If bazel info release returns development version or (@non-git), tell us how you built Bazel.

No response

What's the output of git remote get-url origin; git rev-parse HEAD ?

If this is a regression, please try to identify the Bazel commit where the bug was introduced with bazelisk --bisect.

No response

Have you found anything relevant by searching the web?

No response

Any other information, logs, or outputs that you want to share?

No response

Contributor guide