xref: /llvm-project-15.0.7/libc/docs/index.rst (revision aa8feeef)
1===============================================
2llvm-libc: An ISO C-conformant Standard Library
3===============================================
4
5**llvm-libc library is not complete.  If you need a fully functioning libc right
6now, you should continue to use your standard system libc.**
7
8.. contents:: Table of Contents
9  :depth: 4
10  :local:
11
12Introduction
13============
14
15The libc aspires to a unique place in the software ecosystem.  The goals are:
16
17- Fully compliant with current C standards (C17 and upcoming C2x) and POSIX.
18- Easily decomposed and embedded: Supplement or replace system C library
19  functionality easily.  This is useful to get consistent math precision across
20  systems, or updated memory operations for newer microarchitectures.  These
21  pieces will work on Linux, MacOS, Windows, and Fuchsia.
22- The creation of fully static binaries without license implications.
23- Increase whole program optimization opportunities for static binaries through
24  ability to inline math and memory operations.
25- Reduce coding errors by coding in modern C++ through the use of lightweight
26  containers during coding that can be optimized away at runtime.
27- Permit fuzzing and sanitizer instrumentation of user binaries including the
28  libc functions.
29- A complete testsuite that tests both the public interface and internal
30  algorithms.
31- `Fuzzing`__
32
33.. __: https://github.com/llvm/llvm-project/tree/main/libc/fuzzing
34
35Platform Support
36================
37
38Most development is currently targeting x86_64 and aarch64 on Linux.  Several
39functions in llvm-libc have been tested on Windows.  The Fuchsia platform is
40slowly replacing functions from its bundled libc with functions from llvm-libc.
41
42ABI Compatibility
43=================
44
45llvm-libc is written to be ABI independent.  Interfaces are generated using
46LLVM's tablegen, so supporting arbitrary ABIs is possible.  In it's initial
47stages llvm-libc is not offering ABI stability in any form.
48
49Other Interesting Documentation
50===============================
51
52.. toctree::
53
54    build_system
55    clang_tidy_checks
56    entrypoints
57    fuzzing
58    ground_truth_specification
59    header_generation
60    implementation_standard
61    api_test
62    layering
63    mechanics_of_public_api
64    redirectors
65    source_layout
66    strings
67    runtimes_build
68    stdio
69    math
70