Implement execution limits for wasmtime#510
Draft
leonm1 wants to merge 15 commits intoproxy-wasm:mainfrom
Draft
Conversation
PiotrSikora
requested changes
Mar 3, 2026
7f75843 to
20f6d8c
Compare
PiotrSikora
reviewed
Mar 12, 2026
Comment on lines
+105
to
+109
| if (engine_ == "v8") { | ||
| EXPECT_TRUE(host->isErrorLogged("TerminationException")); | ||
| } else if (engine_ == "wasmtime") { | ||
| EXPECT_TRUE(host->isErrorLogged("wasm trap: interrupt")); | ||
| } |
Member
There was a problem hiding this comment.
Not a blocker, but perhaps that's a good opportunity to unify error messages to make them engine-agnostic?
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>
There's enough test cases that this warrants being run in parallel via its own test target. Signed-off-by: Matt Leon <mattleon@google.com>
Uses bswap64 by default to handle int64 and uint64 values. For float and doubles, uses appropriate-size bswap operators by first bit-casting floats and doubles to their same-size int types. Otherwise, they will be coerced to an int type before conversion and be returned as int values. Signed-off-by: Matt Leon <mattleon@google.com>
Without first converting to uint32_t, the getters for wasm_val_t for wamr, wasmtime, and wasmedge returned a signed integer type. For uint32 values high enough to be in the negative range, sign extension would be applied when the value was coerced into proxy_wasm::Word. This resulted in Word values that did not match the comment on Word ``` // Represents a Wasm-native word-sized datum. On 32-bit VMs, the high bits are always zero. // The Wasm/VM API treats all bits as significant. ``` nor the exact value returned from the wasm plugin. 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>
Signed-off-by: Matt Leon <mattleon@google.com>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements execution termination (with wasmtime epochs) as well as memory limits.
Based off of #503.