wasm-link 0.4.0

A WebAssembly plugin runtime based around Wasmtime intended for building fully modular applications
Documentation
(component
	(type $child-interface (instance
		(type $dispatch-error' (variant
			(case "lock-rejected")
			(case "invalid-interface-path" string)
			(case "invalid-function" string)
			(case "missing-response")
			(case "runtime-exception" string)
			(case "invalid-argument-list")
			(case "unsupported-type" string)
			(case "executor-unavailable")
			(case "resource-table-full")
			(case "resource-handle-conversion-failed")
			(case "invalid-resource-handle")
		))
		(export "dispatch-error" (type (eq $dispatch-error')))
		(type $dispatch-result (result u32 (error 1)))
		(type $get-value (func async (result $dispatch-result)))
		(export "get-value" (func (type $get-value)))
	))
	(import "test:async-validation-child/root" (instance $child (type $child-interface)))
	(alias export $child "dispatch-error" (type $dispatch-error))
	(alias export $child "get-value" (func $get_value))
	(core module $mem_module
		(memory (export "memory") 1)
		(func (export "realloc") (param i32 i32 i32 i32) (result i32) i32.const 256)
	)
	(core instance $mem_inst (instantiate $mem_module))
	(alias core export $mem_inst "memory" (core memory $memory))
	(alias core export $mem_inst "realloc" (core func $realloc))
	(core func $lowered (canon lower (func $get_value) (memory $memory) (realloc $realloc)))
	(core instance $imports (export "get-value" (func $lowered)))
	(core instance $mem_imports (export "memory" (memory $memory)))
	(core module $main
		(import "child" "get-value" (func $get (param i32)))
		(import "mem" "memory" (memory 1))
		(func (export "get-primitive") (result i32)
			(call $get (i32.const 0))
			(i32.store (i32.const 32) (i32.const 1))
			i32.const 32
		)
	)
	(core instance $main_inst (instantiate $main
		(with "child" (instance $imports))
		(with "mem" (instance $mem_imports))
	))
	(alias core export $main_inst "get-primitive" (core func $core_get))
	(func $lifted async (result (result u32))
		(canon lift (core func $core_get) (memory $memory))
	)
	(instance $inst (export "get-primitive" (func $lifted)))
	(export "test:dependant-async-validation/root" (instance $inst))
)