Skip to content

Implement execution limits for wasmtime#510

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

Implement execution limits for wasmtime#510
leonm1 wants to merge 14 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.

leonm1 added 14 commits March 2, 2026 14:22
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>
This reverts commit c19e738.

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

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