A crate that provides means of executing/dispatching calls into the runtime.
There are a few responsibilities of this crate at the moment:
- It provides an implementation of a common entrypoint for calling into the runtime, both wasm and compiled.
- It defines the environment for the wasm execution, namely the host functions that are to be provided into the wasm runtime module.
- It also provides the required infrastructure for executing the current wasm runtime (specified
by the current value of
:codein the provided externalities), i.e. interfacing with wasm engine used, instance cache.
- Rust executor possible errors.
- A generic
CodeExecutorimplementation that uses a delegate to determine wasm code equivalence and dispatch to native code when possible, falling back on
- The version of the native runtime.
- Runtime version. This should not be thought of as classic Semver (major/minor/tiny). This triplet have different semantics and mis-interpretation could cause problems. In particular: bug fixes should result in an increment of
authoring_version, absolutely not
impl_versionsince they change the semantics of the runtime.
- An abstraction over Wasm code executor. Supports selecting execution backend and manages runtime cache.
- Defines the heap pages allocation strategy the wasm runtime should use.
- Specification of different methods of executing the runtime Wasm code.
- The instantiation strategy to use for the WASM executor.
- Default heap allocation pages.
- Default heap allocation strategy.
- Trait that allows zero-copy read/write of value-references to/from slices in LE format.
- Delegate for dispatching a CodeExecutor call.
- Extracts the runtime version of a given runtime code.
- Take the runtime blob and scan it for the custom wasm sections containing the version information and construct the
- Set up the externalities and safe calling environment to execute runtime calls.