Fuchsia's libc started as a fork of musl libc. It has since diverged
significantly, but the approximate source code layout remains the same. The
source can be found in
TODO(ZX-1598) Type more here.
Fuchsia's libc supports most of the C11 standard. This in particular includes the atomic and threading portions of the standard library.
Fuchsia implements a subset of POSIX.
Things at least partially supported include the basics of POSIX I/O (open/close/read/write/stat/...), and pthreads (threads and mutexes).
On Fuchsia, the portion of file paths beginning with a sequence of
.. is resolved locally. See this writeup for more
Similarly, symlinks are not supported on Fuchsia.
Conspicuously not supported are UNIX signals, fork, and exec.
Fuchsia's libc does not directly support I/O operations. Instead it provides weak symbols that another library can override. This is typically done by fdio.so.
Statically linking libc is not supported. Everything dynamically links libc.so.
Dynamic linking and loading
libc.so is also the dynamic linker.