Go to file
Andrew Brown 4362b1885f
threads: change wasm32-wasi-pthread to wasm32-wasi-threads (#381)
* Change `wasm32-wasi-pthread` to `wasm32-wasi-threads`

After some thought, I think that we should rename the `THREAD_MODEL=posix` build to avoid confusion. Why? Though in this project the use of this target does involve pthreads, it will not be so in other standard libraries or languages (see, e.g., https://github.com/rust-lang/compiler-team/issues/574). I think it would be preferable to emphasize the "threads" Wasm-level proposal and the "wasi-threads" proposal rather than the specific details of which threading API is being exposed.

* fix: rename the `expected` output directory as well
2023-01-12 18:56:52 -08:00
.github/workflows test: run a subset of tests using libc-test (#346) 2022-12-02 18:27:42 -08:00
dlmalloc Don't use sbrk(0) to determine the initial heap size (#377) 2023-01-09 08:33:05 -08:00
emmalloc Port emmalloc to wasi-libc. 2022-11-01 12:54:26 -07:00
expected threads: change wasm32-wasi-pthread to wasm32-wasi-threads (#381) 2023-01-12 18:56:52 -08:00
libc-bottom-half Use __BIGGEST_ALIGNMENT__ instead of max_align_t (#375) 2023-01-09 08:33:58 -08:00
libc-top-half __init_tp: Initialize TID to non-zero value (#360) 2023-01-06 11:35:27 -08:00
test test: run a subset of tests using libc-test (#346) 2022-12-02 18:27:42 -08:00
tools/wasi-headers build: update WASI and partially regenerate api.h 2022-04-20 13:39:57 -07:00
.gitattributes Correct the version of #136 on master (#141) 2019-11-21 20:55:26 -08:00
.gitignore gitignore build 2019-04-19 11:16:25 -07:00
.gitmodules Correct the version of #136 on master (#141) 2019-11-21 20:55:26 -08:00
CODE_OF_CONDUCT.md Add a CODE_OF_CONDUCT.md file. (#101) 2019-10-03 14:15:49 +02:00
LICENSE Beginning porting Emscripten's emmalloc to wasi-libc. 2022-11-01 12:54:26 -07:00
LICENSE-APACHE Multi-license wasi-libc under Apache and MIT licenses. (#174) 2020-02-29 10:52:28 +01:00
LICENSE-APACHE-LLVM Multi-license wasi-libc under Apache and MIT licenses. (#174) 2020-02-29 10:52:28 +01:00
LICENSE-MIT Multi-license wasi-libc under Apache and MIT licenses. (#174) 2020-02-29 10:52:28 +01:00
Makefile threads: change wasm32-wasi-pthread to wasm32-wasi-threads (#381) 2023-01-12 18:56:52 -08:00
README.md Fix make THREAD_MODEL=posix (#311) 2022-08-09 08:08:37 -07:00

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. For example, pthread support is still a work in progress.

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 10+, though we'd like to support other compilers as well), and then run:

make CC=/path/to/clang/with/wasm/support \
     AR=/path/to/llvm-ar \
     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.