WasmKit
WasmKit copied to clipboard
WebAssembly Runtime written in Swift
WasmKit
A WebAssembly runtime written in Swift. Originally developed and maintained by @akkyie.
Implements all of WebAssembly 2.0 binary parsing and execution core spec, with an exclusion of SIMD instructions. The validation and text format parts of the spec are not implemented yet.
It also has rudimentary support for WASI with only a few WASI imports implemented currently, with a goal of eventual full support for wasi_snapshot_preview1. See WASI module for more details.
Usage
Command Line Tool
$ # Usage: wasmkit-cli run <path> <functionName> [<arguments>] ...
$ swift run wasmkit-cli run Examples/wasm/fib.wasm fib i32:10
[I32(89)]
As a Library
Swift Package Manager
Add the URL of this repository to your Package.swift manifest. Then add the WasmKit library product as dependency to the target you'd like to use it with.
Testing
To run the core spec test suite run this:
# Checkout the core spec test suite
$ ./Vendor/checkout-dependency spectest
# Prepare core spec tests and check their assertions with WasmKit
$ make spectest
# Checkout WASI spec test suite
$ ./Vendor/checkout-dependency wasi-testsuite
# Install Python dependencies for running WASI spec tests
$ python3 -m pip install -r ./Vendor/wasi-testsuite/test-runner/requirements.txt
# Run WASI spec tests
$ make wasitest