1 unstable release

0.1.0 Jun 27, 2024

#802 in WebAssembly

Apache-2.0 WITH LLVM-exception

98KB
2.5K SLoC

WEPL

The WebAssembly Component repl.

Building from Source

You can build wepl from source by running cargo build --release (or cargo build to build in debug mode).

Installing wepl

You can install wepl from crates.io by running cargo install wepl --locked.

You can also install wepl on your local system by running cargo install --path . --locked.

Example

$ wepl mycomponent.wasm
> .exports
uppercase: func(input: string) -> string
> uppercase
uppercase: func(input: string) -> string
> s = "hello"
s: string
> uppercase(s)
"HELLO"

Built-in Functions

Built-in functions can be called by using the . prefix.

Supported functions include:

  • .imports: print a list of all the component's imports
  • .exports: print a list of all the component's exports
  • .link $function $wasm: satisfy the imported function $func with an export from the wasm component $wasm
  • .compose $adapter: satisfy imports with the supplied adapter module (e.g., to compose with WASI-Virt adapter)
  • .type $type: inspect a type's $type definition in scope
  • .help: print help information (? is alias for this built-in)

Features

  • Exported function evaluation
  • Listing imports and exports
  • Variable assignment
  • Type checking
  • Satisfying imports with other WebAssembly Components
  • Basic component composition

Compatibility

wepl is currently tied to the wasmtime 17 release. Components that work with that release should work in wepl.

Dependencies

~42–58MB
~1M SLoC