wasm-tools 1.0.49

CLI tools for interoperating with WebAssembly files
Documentation
;; With this, we can define a component that imports a string and computes a new exported string, all at instantiation time:

(component
  (import "name" (value $name string))
  (import "libc" (core module $Libc
    (export "memory" (memory 1))
    (export "realloc" (func (param i32 i32 i32 i32) (result i32)))
    (export "free" (func (param i32 i32 i32)))
    (export "canonical_abi_realloc" (func (param i32 i32 i32 i32) (result i32)))
  ))
  (core instance $libc (instantiate $Libc))
  (core module $Main
    (import "libc" "memory" (memory 1))
    (func (export "start") (param i32 i32) (result i32)
      ;;... general-purpose compute
      unreachable
    )
    (func (export "start-post-return") (param i32))
  )
  (core instance $main (instantiate $Main (with "libc" (instance $libc))))
  (alias core export $main "start" (core func $main_func))
  (func $start (param "p1" string) (result string)
    (canon lift (core func $main_func)
      (memory $libc "memory")
      (realloc (func $libc "canonical_abi_realloc"))
      (post-return (func $main "start-post-return"))
    )
  )
  (start $start (value $name) (result (value $greeting)))
  (export "greeting" (value $greeting))
)