owi is a toolchain to work with WebAssembly. It is written in OCaml.
Owi provides many tools: a formatter, an optimizer, a concrete interpreter, a script interpreter and a symbolic interpreter. It also allows to do bug finding on C code by compiling it to Wasm and running the symbolic interpreter.
To get started, have a look at the README which contains pointers to general documentation and examples.
Here you will only find the API documentation which is written towards people using the OCaml library directly or people trying to understand the code of Owi such as its developpers. :-)
Owi.Parse
Module providing functions to parse a wasm script from various kind of inputs.Owi.Types
Owi.Compile
Utility functions to compile a module until a given step.Owi.Check
Initial check done on a module.Owi.Typecheck
Module to typecheck a simplified module.Owi.Optimize
Optimize moduleOwi.Link
Module to link a binary/extern module and producing a runnable module along with a link state.Owi.Log
Module to enable or disable the printing of debug logs.Owi.Interpret
Owi.Script
Module to execute a full Wasm script.You shouldn't have to use any of these modules, they're used internally only. Nonetheless, some modules should maybe move to the public API, open an issue on the repository if you believe a mistake has been done.
Owi.Assigned
Owi.C_instrumentor
Owi.C_share
Owi.C_share_site
Owi.Choice_intf
Owi.Cmd_c
Owi.Cmd_fmt
Owi.Cmd_opt
Owi.Cmd_run
Owi.Cmd_script
Owi.Cmd_sym
Owi.Concrete
Owi.Concrete_choice
Owi.Concrete_global
runtime globalOwi.Concrete_memory
Owi.Concrete_table
runtime tableOwi.Concrete_value
Module to define externref values in OCaml. You should look in the `example` directory to understand how to use this before reading the code...Owi.Convert
Various conversion functions between i32, i64, f32 and f64.Owi.Env_id
Owi.Float32
Custom Float32 module for Wasm.Owi.Float64
Custom Float64 module for Wasm.Owi.Format
Owi.Func_id
Owi.Func_intf
Owi.Grouped
Owi.Imported
Owi.Indexed
Owi.Int32
Custom Int32 module for Wasm.Owi.Int64
Custom Int64 module for Wasm.Owi.Interpret_intf
Owi.Lexer
Owi.Link_env
Owi.Menhir_parser
Owi.Named
Owi.Result
Owi.Rewrite
Owi.Runtime
Owi.Simplified
Owi.Simplified_types
Owi.Symbolic
Owi.Symbolic_choice
Owi.Symbolic_global
Owi.Symbolic_memory
Owi.Symbolic_table
Owi.Symbolic_value
Owi.Spectest
The `spectest` module, to run script from the official test suite.Owi.Stack
Owi.String_map
Owi.Syntax
Owi.Text
Owi.Thread
Owi.Tracing
Owi.Trap
Owi.Typecheck
Module to typecheck a simplified module.Owi.Value_intf
Owi.V
Owi.Wutf8
Utility functions to work with utf8.