binaryen-sys 0.13.0

Bindings to the binaryen library
Documentation
;; Instrument the module
;; RUN: wasm-split --instrument %s -o %t.instrumented.wasm -g

;; Generate profiles
;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.foo.prof foo
;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.foo.bar.prof foo bar
;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.bar.baz.prof bar baz

;; Merge profiles
;; RUN: wasm-split --merge-profiles -v %t.foo.prof %t.foo.bar.prof %t.bar.baz.prof -o %t.merged.prof 2>&1 \
;; RUN:   | filecheck %s --check-prefix MERGE

;; Split the module
;; RUN: wasm-split %s --profile %t.merged.prof -o1 %t.1.wasm -o2 %t.2.wasm -g -v \
;; RUN:   | filecheck %s --check-prefix SPLIT

;; MERGE: Profile {{.*}}foo.prof only includes functions included in other profiles.
;; MERGE: Profile {{.*}}foo.bar.prof only includes functions included in other profiles.
;; MERGE-NOT: Profile {{.*}}bar.baz.prof only includes functions included in other profiles.

;; SPLIT: Keeping functions: bar, baz, foo{{$}}
;; SPLIT-NEXT: Splitting out functions: qux{{$}}

(module
  (memory $m 0 0)
  (export "memory" (memory $m))
  (export "foo" (func $foo))
  (export "bar" (func $bar))
  (export "baz" (func $baz))
  (export "qux" (func $qux))
  (func $foo
    (nop)
  )
  (func $bar
    (nop)
  )
  (func $baz
    (nop)
  )
  (func $qux
    (nop)
  )
)