rwasm 0.4.3

ZK-friendly WebAssembly runtime optimized for blockchain and zero-knowledge applications
Documentation
mod block_fuel;
mod compiled_expr;
mod config;
mod control_flow;
mod drop_keep;
mod error;
mod func_builder;
mod func_type_registry;
pub mod intrinsic;
mod labels;
mod locals_registry;
mod parser;
mod segment_builder;
mod snippets;
mod translator;
mod utils;
mod value_stack;

pub use self::{
    config::{CompilationConfig, StateRouterConfig},
    error::CompilationError,
    parser::ModuleParser,
};
use crate::RwasmModule;
use alloc::vec::Vec;

pub struct RwasmCompilationResult {
    pub rwasm_bytecode: Vec<u8>,
    pub constructor_params: Vec<u8>,
}

pub fn compile_wasm_to_rwasm(
    wasm_binary: &[u8],
    compilation_config: CompilationConfig,
) -> Result<RwasmCompilationResult, CompilationError> {
    let (module, params) = RwasmModule::compile(compilation_config, wasm_binary)?;
    Ok(RwasmCompilationResult {
        rwasm_bytecode: module.serialize(),
        constructor_params: params.into_vec(),
    })
}