From 31ed55a66f7a57022a069be0007557972238f578 Mon Sep 17 00:00:00 2001 From: wasm-forge <122647775+wasm-forge@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:54:58 +0100 Subject: [PATCH] improve README --- README.md | 42 ++++++++---------------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 6b99f81..2b746c4 100644 --- a/README.md +++ b/README.md @@ -5,60 +5,34 @@ ![Tests](https://github.com/wasm-forge/wasi2ic/actions/workflows/rust.yml/badge.svg?event=push) [![Coverage](https://codecov.io/gh/wasm-forge/wasi2ic/graph/badge.svg?token=XE48Z6JSYS)](https://codecov.io/gh/wasm-forge/wasi2ic) -`wasi2ic` is a tool to convert WebAssembly System Interface (WASI) dependent Wasm module to run on the Internet Computer (IC) computer. +`wasi2ic` is a tool to convert WebAssembly System Interface (WASI) dependent Wasm module for running it on the Internet Computer (IC) computer. The tool reads a Wasm binary and automatically replaces all WASI calls with their corresponding polyfill implementation. -## Compiling wasi2ic +## Installing wasi2ic -* Clone the https://github.com/wasm-forge/wasi2ic: ```bash - git clone https://github.com/wasm-forge/wasi2ic + cargo install wasi2ic ``` -* Enter the `wasi2ic` folder - -* Compile the project with `cargo build` and copy the tool to some executable path or alternatively use `cargo install --path .`, but note that the project is still in the early development. - - ## Usage -To use this tool, navigate to the directory where the WASI-dependent project resides, and run the command: +To use this tool , navigate to the directory where the WASI-dependent binary resides, and run the command: ```bash wasi2ic ``` -This will read the old Wasm file and create a new Wasm file with the WASI dependencies removed. - -**NOTE** - -The tool requires that the polyfill implementation is present in your Wasm binary, to include the polyfill implementation into your canister project you need to add the dependency: - -```bash -cargo add --git https://github.com/wasm-forge/ic-wasi-polyfill -``` - -This will create the polyfill methods in your `.wasm` file, which are needed for `wasi2ic`. +This will read the input Wasm file and produce a new Wasm file with the WASI dependencies removed and and WASI rerouted to their IC-specific implementations. -Also add the call to the init of the polyfill, example: - -```rust -#[ic_cdk::init] -fn init() { - unsafe { - ic_wasi_polyfill::init(&[0u8; 32], &[]); - } -} -``` +The tool requires that the polyfill implementation is present in your Wasm binary, to include the polyfill implementation into your canister project you need to add the polyfill dependency. For more information check out the [examples](https://github.com/wasm-forge/examples) repository. ## Related repositories - -| Repository | Description | +| Repository | Description | | --------------------------------------------- | ----------------------------- | | [ic-wasi-polyfill](https://github.com/wasm-forge/ic-wasi-polyfill) | Polyfill library implementing the low-level WASI calls. | | [stable-fs](https://github.com/wasm-forge/stable-fs) | Simple file system implementation based on the stable structures. The file system implements backend for the ic-wasi-polyfill | -| [examples](https://github.com/wasm-forge/examples) | Repository containing various examplpes of runnig WASI projects on the IC. | \ No newline at end of file +| [examples](https://github.com/wasm-forge/examples) | Repository containing various examplpes of runnig WASI projects on the IC. |