/wasm-cairo

A suite of development tools and an environment for Cairo 1, all based on WebAssembly. By Caironautes, for Caironautes.

Primary LanguageRustApache License 2.0Apache-2.0

WASM-Cairo

A suite of development tools and an environment for Cairo, all based on WebAssembly.

Github

Built with 🦀🕸 by cryptonerdcn from Starknet Astro

🚴 Usage

🛠️ Build WASM-bindgen's WASM-Cairo Toolkit

With Modules

wasm-pack build --release --target web --out-dir ./pkg/module --out-name wasm-cairo

No Modules

wasm-pack build --release --target no-modules --out-dir ./pkg/no_module --out-name wasm-cairo

You will find wasm-cairo_bg.wasm and wasm-cairo.js in pkg folder.

🛠️ Build WASMTIME's WASM-Cairo Toolkit

cargo build --target wasm32-wasi --release

You can test it by using:

Compile Cairo

./wasmtime_test.sh compileCairoProgram ./cairo_files/HelloStarknetAstro.cairo ./cairo_files/HelloStarknetAstro.sierra

Run

./wasmtime_test.sh runCairoProgram ./cairo_files/HelloStarknetAstro.cairo

Compile Contract

./wasmtime_test.sh compileStarknetContract ./cairo_files/erc20.cairo ./cairo_files/erc20.json

🔋 Batteries Included

  • wasm-bindgen for communicating between WebAssembly and JavaScript.
  • console_error_panic_hook for logging panic messages to the developer console.
  • wee_alloc, an allocator optimized for small code size.
  • Cairo for Cairo-lang support.
  • LICENSE-APACHE and LICENSE-MIT: most Rust projects are licensed this way, so these are included for you

License

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.