sim_lib_plugin_wasm/loader.rs
1//! Capability-checked WebAssembly plugin loading.
2
3use sim_kernel::Result;
4use sim_lib_plugin_core::{AudioPluginCapability, CapabilitySet};
5
6use crate::{WasmPluginProcessor, WasmResourceLimits};
7
8/// Loads a WebAssembly audio plugin after checking the wasm-plugin capability.
9///
10/// # Errors
11///
12/// Returns a capability error when `caps` does not include
13/// [`AudioPluginCapability::WasmPlugin`]. Returns an eval error when the wasm
14/// module is invalid or misses required exports.
15pub fn load_wasm_plugin(
16 caps: &CapabilitySet,
17 wasm_bytes: &[u8],
18 limits: WasmResourceLimits,
19) -> Result<WasmPluginProcessor> {
20 caps.require(AudioPluginCapability::WasmPlugin)?;
21 WasmPluginProcessor::from_bytes_with_limits(wasm_bytes, limits)
22}