Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache interface { // Get is called when the runtime is trying to get the cached compiled functions. // Implementations are supposed to return compiled function in io.Reader with ok=true // if the key exists on the cache. In the case of not-found, this should return // ok=false with err=nil. content.Close() is automatically called by // the caller of this Get. // // Note: the returned content won't go through the validation pass of Wasm binary // which is applied when the binary is compiled from scratch without cache hit. Get(key Key) (content io.ReadCloser, ok bool, err error) // // Add is called when the runtime is trying to add the new cache entry. // The given `content` must be un-modified, and returned as-is in Get method. // // Note: the `content` is ensured to be safe through the validation phase applied on the Wasm binary. Add(key Key, content io.Reader) (err error) // // Delete is called when the cache on the `key` returned by Get is no longer usable, and // must be purged. Specifically, this is called happens when the wazero's version has been changed. // For example, that is when there's a difference between the version of compiling wazero and the // version of the currently used wazero. Delete(key Key) (err error) }
Cache allows the compiler engine to skip compilation of wasm to machine code where doing so is redundant for the same wasm binary and version of wazero.
This augments the default in-memory cache of compiled functions, by decoupling it from a wazero.Runtime instance. Concretely, a runtime loses its cache once closed. This cache allows the runtime to rebuild its in-memory cache quicker, significantly reducing first-hit penalty on a hit.
See New for the example implementation.
Click to show internal directories.
Click to hide internal directories.