Files
vlibc/docs/compatibility.md
T
huntedbytheirs 180c1107b6 Add vlibc scaffold, build system, and documentation
Establish the repository layout per Vox guidelines (layouts/C.md,
building/C.md): Autotools build (GCC-only, C23), five compatibility
profiles (--enable-onlyposix/--enable-muslmimic/--enable-muslext/
--enable-spoof, default vlibc), alongside/overwrite install methods,
vlibc-gcc/vlibc-clang drivers, static-linking requirement (except
spoof), benchmark harness, and tooling (.clang-format/.clang-tidy/
.clangd + compile_commands.json).
2026-08-31 17:06:01 -04:00

1.7 KiB

Compatibility

vlibc offers five compatibility profiles, selected at configure time. They are mutually exclusive; the default is vlibc.

Level Flag Profile What it provides
1 --enable-onlyposix onlyposix Pure POSIX, nothing more — the lightest possible build.
2 --enable-muslmimic muslmimic musl-like, still light, with musl-compatible features.
3 --enable-muslext muslext An extension of musl, adding more.
4 --enable-spoof spoof A glibc replica: emulates glibc for drop-in compatibility, higher than muslext or vlibc full.
5 (default) vlibc glibc-extended: glibc minus its baggage, plus extended standard features. High (but not spoof-level) glibc compatibility.

Differences from glibc

  • No legacy baggage. vlibc targets modern, standard-conforming behavior and drops glibc's deprecated and non-standard behaviors unless a profile explicitly restores them.
  • Extended standard features. The vlibc profile adds extensions on top of the C and POSIX standards that glibc does not provide.
  • Spoofing is opt-in. The --enable-spoof profile re-enables the long-standing legacy behaviors that scripts rely on, for drop-in compatibility with existing binaries and build systems.

Full static linking

Every profile except spoof must be able to link fully statically. The spoof profile is exempt: its glibc-emulation layer depends on dynamic facilities (e.g. dlopen-based compatibility shims) that a static build cannot provide.