/wasm-cairo

A suite of development tools and a WASM-Runtime environment for Cairo. All based on WebAssembly. By Caironautes, for Caironautes.

Primary LanguageRustApache License 2.0Apache-2.0

WASM runtime for Cairo language and Starknet

WASM-Cairo

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

Homepage

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 output/module/pkg --out-name wasm-cairo

No Modules

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

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

Pack & Publish

With Modules

wasm-pack pack output/module
wasm-pack publish  

No Modules

wasm-pack pack output/no_module 

🛠️ 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

Run Tests

./wasmtime_test.sh runTests ./cairo_files/Test.cairo

Compile Contract

./wasmtime_test.sh compileStarknetContract ./cairo_files/storage.cairo ./cairo_files/storage.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.