Comments (8)
Hey - we don't officially support this via Extism, but you can use another tool we make, Modsurfer. Either statically, via the web0 or CLI1, or dynamically in a program using it as an Extism plugin2.
For 2, via an Extism plugin, you would call the export parse_module
, passing it the bytes of your wasm plugin, and in return, the plugin will provide a Module
protobuf.
We provide Go and Rust libraries, but you can also generate your own protobuf library in any language they support using the api.proto
as the definition. See the files here: https://github.com/dylibso/modsurfer/tree/main/proto/v1
from extism.
Awesome thanks for the quick help!
from extism.
For sure! If you have any issues with these approaches, please let us know. I might also add another export to this plugin (would be a new .wasm) which would just list the exports by name in a JSON list ["count_vowels", "etc"]
so you don't need to deal with the protobuf types... would that help?
from extism.
@Somfic -- ok, the Extism plugin0 (new version to download) has an export called list_extism_funcs
, which just returns the exports that you can call from Extism specifically.
The usage is like:
cat plugin.wasm | extism call modsurfer.wasm list_extism_funcs --stdin | jq
["export_1", "export_2", ...]
from extism.
I'd love to see this exposed via the Plugin API. It would be a great way to verify that the module you've been given adheres to a certain contract.
from extism.
I’ll reopen the issue as per slyons’ suggestion
from extism.
I agree it would be convenient, but would recommend using the modsurfer plugin approach for now. Mainly since it could be some time until we decide to implement this especially across all the runtimes and SDKs.
from extism.
Will use the modsurfer
plugin for now then! :)
from extism.
Related Issues (20)
- Add support for multiple arguments
- Pass plug-in ID into `set_log_callback` callback function
- Error: http: request body too large (recovered by wazero) HOT 5
- option for a WASM instr limit per call HOT 1
- look into calling `_initialize` on all linked plugins when initializing the guest runtime, not just the main module HOT 1
- Question about plugin return types HOT 3
- Direct disk/filesystem access HOT 8
- Cost of the function call throught host/guest boundary HOT 8
- Synchronizing the content of `wasm` folder HOT 2
- feat: add manifest field to limit the size of Extism vars HOT 1
- Extism gem fails to load on Ruby 3.3.0 on macOS HOT 6
- Async / Await / Generators / Coroutines in Plugins HOT 3
- How to unload a plugin? HOT 3
- Could we get access to the `id` on `CurrentPlugin`
- add a feature to control which wasm backend is enabled? HOT 4
- wasm files are very slow to load (C# PDK, Rust SDK) HOT 7
- ZMQ with Extism Plugins HOT 6
- allowlist WASI features/interfaces HOT 2
- Improve the libextism story on mac
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from extism.