Libc discussion

April 27, 2021 ยท View on GitHub

VisualOS is unique in the fact that the kernel needs a special kernel libc (which calls syshandler_get) to link against as well as userspace programs being linked against the normal libc (which performs syscall instructions)
I'm not going to make my own libc since userspace components will need a libc regardless.

Libc checklist

These are things a libc must have in order to be qualified to be a VOS-compliant

  • No convoluted configuration scripts or needlessly complex ways to generate build files
  • Build files must be relatively simple since I'll be translating it into a special Makefile. Bonus points for a plain makefile
  • Can't be too OS dependent. Any OS dependence must be easily stripped out or altered to conform to VisualOS.
  • Needs additional libraries (math and threading)
  • Bonus points for having a permissive license

Libc checklist

OSDev Wiki

  • Glibc
    • Convoluted configuration script
    • Inseparably linux dependent
  • Musl
    • Linux dependent, but is separable
    • Has a configuration script, but can be disregarded
  • Newlib
    • Convoluted configuration script
  • PDCLib
    • Uses CMake, but is relatively simple
    • Does not have additional libraries
  • uLibc
    • Makefiles seems needlessly large. I could distill just the parts I need.
    • Non-permissive license (LGPL)
  • Diet Libc
    • Non-permissive license (GPL2)
  • Google's Bionic
    • Needlessly complex build process
    • Inseparably andrioid dependent
  • Sortix Libc
    • Inseparably sortix dependent
  • Libc11
    • Convoluted configuration script
  • mlibc
    • Needlessly complex build process

Wikipedia

  • BSD libc
    • Inseparably FreeBSD dependent
  • klibc
    • Inseparably linux dependent