Update to the latest WASI libc, define `AT_FDCWD`, update the signature
for __wasilibc_find_relpath, and add declarations for various
`__wasilibc_` utility functions.
This adds various WASI libc definitions to the Rust libc bindings that I
needed while porting some applications to WASI.
It also removes the `pause` binding since newer versions of WASI libc
have removed this function as well. (WASI currently has no syscall with
this functionality.)
This commit performs a number of updates for libc with the `wasm32-wasi`
target:
* Updates the `wasi-libc` repository commit used (previously known as
`wasi-sysroot`)
* Updates the container to Ubuntu 19.10 which has Clang 9 packaged which
is all we need.
* Avoids building `wasmtime` and instead downloads a precompiled binary.
* Updates bindings in `src/wasi.rs` to match the current upstream state.
Remove WASI Core API
Closes#1434
This change does not break the backwards compatibility promise since WASI Core API is unstable right now. If applications or libraries want to use Core API directly they should use [`wasi`](https://crates.io/crates/wasi) instead of `libc`.
Blocked by: rust-lang/rust#63676
cc @sunfishcode
- Rename `wasm32-unknown-wasi` to `wasm32-wasi`.
- `__wasilibc_rmfileat` was renamed to `__wasilibc_unlinkat`
- Add bindings for a few more functions and typedefs.
This target is [being proposed][LINK] int he rust-lang/rust repository
and this is intended to get coupled with that proposal. The definitions
here all match the upstream reference-sysroot definitions and the
functions all match the reference sysroot as well. The linkage here is
described more in detail on the Rust PR itself, but in general it's
similar to musl.
Automatic verification has been implemented in the same manner as other
targets, and it's been used locally to develop this PR and catch errors
in the bindings already written (also to help match the evolving sysroot
of wasi). The verification isn't hooked up to CI yet though because
there is no wasi target distributed via rustup just yet, but once that's
done I'll file a follow-up PR to execute verification on CI.
[LINK]: