watr
TypeScript icon, indicating that this package has built-in type declarations

2.2.5 • Public • Published

watr test npm bundle size

Bare minimum wasm text compiler & formatter, light & fast alternative for wat2wasm.
Useful for hi-level languages or dynamic (in-browser) compilation.

  Size (gzipped) Performance (op/s)
watr 3.8 kb 6000
wat-compiler 6 kb 348
wabt 300 kb 574

Usage

import wat from 'watr'

// compile text to binary
const buffer = wat(`(func
  (export "double") (param f64) (result f64)
  (f64.mul (local.get 0) (f64.const 2))
)`)

// create instance
const module = new WebAssembly.Module(buffer)
const instance = new WebAssembly.Instance(module)

// use API
const {double} = instance.exports
double(108) // 216

API

Compile

Compiles wasm text or syntax tree into wasm binary.

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

Print

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

  • [x] wasm core
  • [x] multiple values
  • [x] bulk memory ops (0 index)
  • [ ] func/ref types
  • [ ] multiple memories

Useful links

Alternatives

🕉

Dependents (0)

Package Sidebar

Install

npm i watr

Weekly Downloads

43

Version

2.2.5

License

MIT

Unpacked Size

30.1 kB

Total Files

9

Last publish

Collaborators

  • dy