Skip to content

Implement execution limits for wasmtime#510

Draft
leonm1 wants to merge 15 commits intoproxy-wasm:mainfrom
leonm1:limits/wasmtime
Draft

Implement execution limits for wasmtime#510
leonm1 wants to merge 15 commits intoproxy-wasm:mainfrom
leonm1:limits/wasmtime

Conversation

@leonm1
Copy link
Contributor

@leonm1 leonm1 commented Mar 2, 2026

Implements execution termination (with wasmtime epochs) as well as memory limits.

Based off of #503.

Args... args) -> R {
const bool log = cmpLogLevel(LogLevel::trace);
SaveRestoreContext saved_context(context);
store_->context().set_epoch_deadline(1);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sets deadline before trace logging, while the other one sets deadline after trace logging and directly before the function call.

Let's be consistent and set in just before the function call in both places.

leonm1 added 11 commits March 11, 2026 16:14
Always uses prefixed wasmtime-c-api-impl, otherwise the prefixed
implementation bitrots. Prefixes the headers in the repo rule to allow
for globbing, which is not possible in a genrule.

The crates_vendor-provided wasmtime-c-api-impl provided build allows us
to upgrade wasmtime solely by changing the version number in the
Cargo.toml file (and the corresponding repo in bazel/repositories.bzl
for the C headers).

Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
CMake is used by the wasm-c-api crate's build.rs.

Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
@leonm1 leonm1 force-pushed the limits/wasmtime branch 2 times, most recently from 8518deb to 7f75843 Compare March 12, 2026 02:14
leonm1 added 4 commits March 11, 2026 22:32
Updating wasmtime updated a dependency used by wasmsign to an incompatible version. They're not used as part of the same build, so separate their dependency graphs by giving wasmsign its own repo name.

Signed-off-by: Matt Leon <mattleon@google.com>
Signed-off-by: Matt Leon <mattleon@google.com>
Hides many of the implementation details of the wasm-c-api.

Note: adds `wat` feature to wasmtime c headers to fix the following build error, but note that `wat` support is not enabled in the wasmtime build, this just adds the headers to allow the cpp api to compile.

```
external/com_github_bytecodealliance_wasmtime/crates/c-api/include/wasmtime/module.hh:39:17: error: use of undeclared identifier 'wat2wasm'
   39 |     auto wasm = wat2wasm(wat);
      |                 ^
1 error generated.
```

Signed-off-by: Matt Leon <mattleon@google.com>
Implements execution termination (with [wasmtime epochs](https://docs.wasmtime.dev/examples-interrupting-wasm.html)) as well as memory limits.

Signed-off-by: Matt Leon <mattleon@google.com>
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.

2 participants