Files
extism/ruby/GETTING_STARTED.md
zach ddcbeec3de refactor!: Remove context, unify extism-runtime and extism crates (#421)
- Removes the `ExtismContext` type from runtime and all SDKs
- Removed SDK functions: `extism_context_new`, `extism_context_reset`,
`extism_context_free`
  - All SDKs have been updated, but there are still some TODOs below 
- Removes `extism_plugin_update`
- Plugins can no longer be updated - a new plugin should be created
instead
- Adds `extism_plugin_id` to uniquely identify plugins
- Merges the `extism-runtime` and `extism` crates (there is no longer an
`extism-runtime` crate)
- Makes `extism::Manifest` an alias for `extism_manifest::Manifest`
instead of a distinct type
- Adds `MemoryHandle` type to SDKs to refer to blocks of Extism memory
that can be accessed in host functions
- Improves thread-safety of Plugins, adds C++ test to call a single
plugin from multiple threads.
- Expands wasmtime bounds to include 12.0
2023-08-29 13:57:17 -07:00

652 B

Extism

Getting Started

Example

require "extism"
require "json"

manifest = {
  :wasm => [{ :path => "../wasm/code.wasm" }],
}
plugin = Plugin.new(manifest)
res = JSON.parse(plugin.call("count_vowels", "this is a test"))

API

There is just one primary class you need to understand:

Plugin

The Plugin represents an instance of your WASM program from the given manifest. The key method to know here is Extism::Plugin#call which takes a function name to invoke and some input data, and returns the results from the plugin.