def test_deserialize(): store = Store() serialized_module = Module( store, """ (module (func (export "function") (param i32 i64))) """).serialize() module = Module.deserialize(store, serialized_module) del serialized_module exports = module.exports assert len(module.exports) == 1 assert exports[0].name == "function" assert isinstance(exports[0].type, FunctionType) assert exports[0].type.params == [Type.I32, Type.I64] assert exports[0].type.results == []
def test_deserialize(): serialized_module = Module(TEST_BYTES).serialize() module = Module.deserialize(serialized_module) del serialized_module assert module.instantiate().exports.sum(1, 2) == 3
# Second step, deserialize the compiled Wasm module, and execute it, # for example with Wasmer without a compiler. from wasmer import engine, Store, Instance, Module # We create a headless Dylib engine, i.e. an engine without a # compiler. engine = engine.Dylib() # Create a store, as usual. store = Store(engine) # Here we go. # # Deserialize the compiled Wasm module. This code is unsafe because # Wasmer can't assert the bytes are valid, so be careful. module = Module.deserialize(store, serialized_module_file.read()) # Congrats, the Wasm module has been deserialized! Now let's execute # it for the sake of having a complete example. # Let's instantiate the Wasm module. instance = Instance(module) # The Wasm module exports a function called `sum`. results = instance.exports.sum(1, 2) assert results == 3 print(results)
def bench(): deserialized = Module.deserialize(store, serialized) _ = Instance(deserialized)