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).
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user