2.4.1 • Published 10 months ago
watr v2.4.1
watr

Bare minimum wasm text compiler/formatter. A light & fast alternative to wat2wasm. Useful for hi-level languages or dynamic (in-browser) compilation.
Usage
Compile
Compile wasm text or syntax tree into wasm binary.
import compile from 'watr' // or `import { compile } from 'watr'`
const buffer = compile(`(func (export "double")
(param f64) (result f64)
(f64.mul (local.get 0) (f64.const 2))
)`)
const module = new WebAssembly.Module(buffer)
const instance = new WebAssembly.Instance(module)
const {double} = instance.exports
double(108) // 216
Format input wasm text or syntax tree into minified or pretty form.
import { print } from 'watr'
const src = `(func (export "double")
(param f64) (result f64)
(f64.mul (local.get 0) (f64.const 2))
)`
// pretty-print (default)
print(src, {
indent: ' ',
newline: '\n',
})
// (func (export "double")
// (param f64) (result f64)
// (f64.mul
// (local.get 0)
// (f64.const 2)))
// minify
print(src, {
indent: false,
newline: false
})
// (func (export "double")(param f64)(result f64)(f64.mul (local.get 0)(f64.const 2)))
Parse
Parse input wasm text into syntax tree.
import { parse } from 'watr'
parse(`(func (export "double") (param f64) (result f64) (f64.mul (local.get 0) (f64.const 2)))`)
// [
// 'func', ['export', '"double"'], ['param', 'f64'], ['result', 'f64'],
// ['f64.mul', ['local.get', 0], ['f64.const', 2]]
// ]
Status
Alternatives
Size (gzipped) | Performance (op/s) | |
---|---|---|
watr | 5 kb | 6000 |
wat-compiler | 6 kb | 348 |
wabt | 300 kb | 574 |
<!-- wassemble | ? kb | ? --> |
Useful links
- watlings – learn Wasm text by examples.
- MDN: control flow
- WASM reference manual
- WASM binary encoding
2.4.1
10 months ago
2.4.0
10 months ago
2.3.0
11 months ago
2.3.1
11 months ago
1.4.1
2 years ago
1.3.2
2 years ago
1.4.0
2 years ago
1.3.1
2 years ago
1.3.0
2 years ago
2.2.1
2 years ago
2.1.2
2 years ago
2.2.0
2 years ago
2.1.1
2 years ago
2.2.3
2 years ago
2.1.4
2 years ago
2.2.2
2 years ago
2.1.3
2 years ago
2.2.5
2 years ago
2.2.4
2 years ago
2.1.0
2 years ago
2.0.0
2 years ago
1.2.0
3 years ago
1.1.1
3 years ago
1.1.0
3 years ago
1.0.0
3 years ago
0.0.0
3 years ago