wasi-print

Crates.iowasi-print
lib.rswasi-print
version0.2.2
sourcesrc
created_at2023-02-24 06:19:18.705822
updated_at2023-02-25 07:52:49.48574
descriptionWASI print and panic library for WASM no_std.
homepage
repositoryhttps://github.com/BartMassey/wasi-print
max_upload_size
id793361
size10,311
Bart Massey (BartMassey)

documentation

README

Maintenance CI crates-io api-docs

wasi-print: : implementation of Rust print macros and similar for no_std WASI

Bart Massey 2023 (version 0.2.2)

This crate contains basic niceties for writing no_std modules for WASI. wasi-print provides:

  • An abort() function that raises a WASI exception.
  • A panic_handler that aborts after trying to print panic information.
  • A print_fd() function that prints an &str to a WASI fd.
  • Printing macros print!(), println!(), !eprint() and !eprintln().

Example

This is a full standalone Rust WASM program using wasi_print.

#![no_std]

use wasi_print::*;

#[no_mangle]
pub extern "C" fn math_add(x: i32, y: i32) -> i32 {
    eprint!("guest running math_add({}, {}) …", x, y);
    let result = x + y;
    eprintln!(" and returning {}", result);
    result
}

Features

  • print: Include printing code. This requires nightly for a variety of reasons.
  • panic_handler: Provide a panic handler.

Acknowledgments

Figuring out how to write this was made much easier by this excellent blog post by "James [Undefined]".

License

This work is licensed under the "MIT License". Please see the file LICENSE.txt in this distribution for license terms.

Further Acknowledgments

Thanks to the cargo-readme crate for generation of this README.

Commit count: 14

cargo fmt