Integrate Wasmtime for runtime execution (#3869)
* executor: Use non wasmi-specific execution in tests. * executor: Move all runtime execution tests into tests file. * executor: Use test_case macro to easily execute tests with different Wasm execution methods. * executor: Convert errors to strings with Display, not Debug. * node-executor: Rewrite benchmarks with criterion. They were not passing compilation before and criterion seems to be more widely used in Substrate. * executor: Begin implementation of Wasm runtime. The implementation demonstrates the outline of the execution, but does not link against the external host functions. * executor: Define and implement basic FunctionExecutor. The SandboxCapabilities::invoke is still left unimplemented. * executor: Implement host function trampoline generation. * executor: Instantiate and link runtime module to env module. * executor: Provide input data during wasmtime execution. * executor: Implement SandboxCapabilites::invoke for wasmtime executor. * executor: Integrate and test wasmtime execution method. * executor: Improve FunctionExecution error messages. * Scope the unsafe blocks to be smaller. * Rename TrampolineState to EnvState. * Let EnvState own its own compiler instead of unsafe lifetime cast. * Refactor out some common wasmi/wasmtime logic. * Typos and cosmetic changes. * More trampoline comments. * Cargo.lock update. * cli: CLI option for running Substrate with compiled Wasm execution. * executor: Switch dependency from fork to official wasmtime repo. * Quiet down cranelift logs. * Explicitly catch panics during host calls. We do this to ensure that panics do not cross language boundaries. * Additional checks and clarifications in make_trampoline. * Fixes after merge from master and panic safety for wasmtime instantiation.
Showing
- substrate/Cargo.lock 466 additions, 0 deletionssubstrate/Cargo.lock
- substrate/Cargo.toml 1 addition, 0 deletionssubstrate/Cargo.toml
- substrate/core/cli/Cargo.toml 5 additions, 0 deletionssubstrate/core/cli/Cargo.toml
- substrate/core/cli/src/lib.rs 1 addition, 0 deletionssubstrate/core/cli/src/lib.rs
- substrate/core/cli/src/params.rs 20 additions, 1 deletionsubstrate/core/cli/src/params.rs
- substrate/core/executor/Cargo.toml 20 additions, 0 deletionssubstrate/core/executor/Cargo.toml
- substrate/core/executor/src/error.rs 19 additions, 4 deletionssubstrate/core/executor/src/error.rs
- substrate/core/executor/src/integration_tests/mod.rs 441 additions, 0 deletionssubstrate/core/executor/src/integration_tests/mod.rs
- substrate/core/executor/src/integration_tests/sandbox.rs 363 additions, 0 deletionssubstrate/core/executor/src/integration_tests/sandbox.rs
- substrate/core/executor/src/lib.rs 4 additions, 0 deletionssubstrate/core/executor/src/lib.rs
- substrate/core/executor/src/sandbox.rs 0 additions, 291 deletionssubstrate/core/executor/src/sandbox.rs
- substrate/core/executor/src/wasm_runtime.rs 9 additions, 0 deletionssubstrate/core/executor/src/wasm_runtime.rs
- substrate/core/executor/src/wasm_utils.rs 13 additions, 0 deletionssubstrate/core/executor/src/wasm_utils.rs
- substrate/core/executor/src/wasmi_execution.rs 22 additions, 333 deletionssubstrate/core/executor/src/wasmi_execution.rs
- substrate/core/executor/src/wasmtime/function_executor.rs 387 additions, 0 deletionssubstrate/core/executor/src/wasmtime/function_executor.rs
- substrate/core/executor/src/wasmtime/mod.rs 24 additions, 0 deletionssubstrate/core/executor/src/wasmtime/mod.rs
- substrate/core/executor/src/wasmtime/runtime.rs 398 additions, 0 deletionssubstrate/core/executor/src/wasmtime/runtime.rs
- substrate/core/executor/src/wasmtime/trampoline.rs 329 additions, 0 deletionssubstrate/core/executor/src/wasmtime/trampoline.rs
- substrate/core/executor/src/wasmtime/util.rs 113 additions, 0 deletionssubstrate/core/executor/src/wasmtime/util.rs
- substrate/core/service/Cargo.toml 3 additions, 0 deletionssubstrate/core/service/Cargo.toml
Please register or sign in to comment