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).
1.7 KiB
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
vlibcprofile adds extensions on top of the C and POSIX standards that glibc does not provide. - Spoofing is opt-in. The
--enable-spoofprofile 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.