blob: 3f8345b88b8885c101fab784628f114344629276 [file] [log] [blame] [view]
# Fuchsia's libc
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.
## Standards
### C11
Fuchsia's libc supports most of the [C11][c11std] 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][dotdot] 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].
## Linking
Statically linking libc is not supported. Everything dynamically links
## Dynamic linking and loading is also the dynamic linker.
[dotdot]: /docs/concepts/filesystems/
[fdio]: /sdk/lib/fdio