Skip to content
This repository was archived by the owner on Nov 10, 2022. It is now read-only.

tweag/wasi-libc

This branch is 4 commits ahead of, 202 commits behind WebAssembly/wasi-libc:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a9e96b8 · Sep 25, 2021
Dec 1, 2020
Mar 18, 2021
Sep 25, 2021
May 25, 2021
Apr 5, 2021
Sep 25, 2021
Nov 22, 2019
Apr 19, 2019
Nov 22, 2019
Oct 3, 2019
Jun 1, 2020
Feb 29, 2020
Feb 29, 2020
Feb 29, 2020
Sep 25, 2021
Mar 10, 2021

WASI Libc

WASI Libc is a libc for WebAssembly programs built on top of WASI system calls. It provides a wide array of POSIX-compatible C APIs, including support for standard I/O, file I/O, filesystem manipulation, memory management, time, string, environment variables, program startup, and many other APIs.

WASI Libc is sufficiently stable and usable for many purposes, as most of the POSIX-compatible APIs are stable, though it is continuing to evolve to better align with wasm and WASI.

Usage

The easiest way to get started with this is to use wasi-sdk, which includes a build of WASI Libc in its sysroot.

Building from source

To build a WASI sysroot from source, obtain a WebAssembly-supporting C compiler (currently this is only clang 8+, though we'd like to support other compilers as well), and then run:

make WASM_CC=/path/to/clang/with/wasm/support \
     WASM_AR=/path/to/llvm-ar \
     WASM_NM=/path/to/llvm-nm

This makes a directory called "sysroot", by default. See the top of the Makefile for customization options.

To use the sysroot, use the --sysroot= option:

/path/to/wasm/supporting/c/compiler --sysroot=/path/to/the/newly/built/sysroot ...

to run the compiler using the newly built sysroot.

Note that Clang packages typically don't include cross-compiled builds of compiler-rt, libcxx, or libcxxabi, for libclang_rt.builtins-wasm32.a, libc++.a, or libc++abi.a, respectively, so they may not be usable without extra setup. This is one of the things wasi-sdk simplifies, as it includes cross-compiled builds of compiler-rt, libc++.a, and libc++abi.a.

Arch Linux AUR package

For Arch Linux users, there's an unofficial AUR package tracking this git repo that can be installed under the name wasi-libc-git.

Packages

No packages published

Languages

  • C 94.2%
  • Assembly 3.7%
  • Rust 0.9%
  • Makefile 0.8%
  • Awk 0.3%
  • Shell 0.1%