pub(crate) mod abi;
mod alloc_policy;
mod emitter;
mod expr;
mod runtime;
mod types;
pub(crate) mod value;
pub(crate) use alloc_policy::WasmAllocPolicy;
pub use runtime::{build_aver_to_wasi_wasm, build_runtime_wasm};
use crate::codegen::CodegenContext;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum WasmAdapter {
#[default]
Aver,
Wasi,
Fetch,
}
pub fn emit_wasm(ctx: &CodegenContext) -> Result<Vec<u8>, String> {
emit_wasm_with_adapter(ctx, WasmAdapter::default(), None)
}
pub fn emit_wasm_with_adapter(
ctx: &CodegenContext,
adapter: WasmAdapter,
handler: Option<&str>,
) -> Result<Vec<u8>, String> {
emitter::build_wasm_module(ctx, adapter, handler)
}