Command Palette

Search for a command to run...

coreutils package icon
wasmer/coreutils
Public
wasmer run wasmer/coreutils

coreutils for WASIX

Based on uutils/coreutils main at a6d1eb3835c0f808fa9678e4551df7377bcab8d3 (0.13.0). The Wasmer package version is 1.0.27 to continue the existing wasmer/coreutils release series.

Build with Rustup, Python 3.11+, Wasmer 7.4.2, wasm-tools 1.251.0, and the pinned WASIX tools:

rustup toolchain install 1.96.1 --profile minimal
cargo +1.96.1 install cargo-wasix --version 0.1.33 --locked
cargo wasix download-toolchain v2026-07-07.3+rust-1.96
ln -s "$(rustup which --toolchain 1.96.1 cargo)" "$(rustc +wasix --print sysroot)/bin/cargo"
bash wasix/build.sh
python3 wasix/test.py

The build runs cargo wasix build --release --locked --no-default-features --features feat_wasix --bin coreutils. Cargo-wasix uses Binaryen 130 to convert exceptions for the browser. The committed lockfile resolves through the WASIX registry; source paths are normalized for repeatable builds.

The multicall module exports upstream's WASI utility set plus env and nohup. wasmer.toml is generated from the compiled binary's --list output, and tests execute every exported command. Utilities requiring other platform facilities (for example SELinux, utmp, or Linux mount tables) are not advertised as working commands. nohup uses WASIX signals, descriptor redirection, and spawn-and-wait; tail -f and tail -F use upstream's polling watcher. Wasmer's exec API does not carry ignored signals, so nohup waits for a spawned child and returns its exit code. Tail includes creation time when comparing WASIX file identities because Wasmer derives inodes from paths. Log rotation must happen inside the sandbox; renaming mounted files from outside it does not invalidate Wasmer's cached guest metadata.

Artifacts are .wasix/coreutils.wasm and .wasix/coreutils-1.0.27.webc. Dependency license notices are included in the package. The package contains no shell wrappers.

For a clean reproducibility check, save the first WebC, set CARGO_TARGET_DIR=.wasix/repro-target, run bash wasix/build.sh again, and compare the two WebCs with cmp.

wasmer run .wasix/coreutils-1.0.27.webc --entrypoint tail -- -n 5 /workspace/log
wasmer publish . --registry wasmer.io --wait=container --non-interactive
wasmer publish . --registry wasmer.wtf --wait=container --non-interactive

Package 1.0.27 stores dependency notices at /opt/coreutils/licenses. This keeps license mounts out of /usr, where they interfere with Wasmer command installation. The compiled utility versions are unchanged.

uutils coreutils 0.13.0 for WASIX


Github