| ================== |
| The LLVM C Library |
| ================== |
| |
| .. note:: |
| LLVM-libc is not fully complete right now. Some programs may fail to build due |
| to missing functions (especially C++ ones). If you would like to help us |
| finish LLVM-libc, check out "Contributing to the libc project" in the sidebar |
| or ask on discord. |
| |
| Introduction |
| ============ |
| |
| LLVM-libc aspires to a unique place in the software ecosystem. The goals are: |
| |
| - Fully compliant with current C standards (C17 and upcoming C2x) and POSIX. |
| - Easily decomposed and embedded: Supplement or replace system C library |
| functionality easily. This is useful to get consistent math precision across |
| systems, or updated memory operations for newer microarchitectures. These |
| pieces will work on Linux, MacOS, Windows, and Fuchsia. |
| - The creation of fully static binaries without license implications. |
| - Increase whole program optimization opportunities for static binaries through |
| ability to inline math and memory operations. |
| - Reduce coding errors by coding in modern C++ through the use of lightweight |
| containers during coding that can be optimized away at runtime. |
| - Permit fuzzing and sanitizer instrumentation of user binaries including the |
| libc functions. |
| - A complete testsuite that tests both the public interface and internal |
| algorithms. |
| - `Fuzzing`__ |
| |
| .. __: https://github.com/llvm/llvm-project/tree/main/libc/fuzzing |
| |
| Platform Support |
| ================ |
| |
| Most development is currently targeting Linux on x86_64, aarch64, arm, and |
| RISC-V. Embedded/baremetal targets are supported on arm and RISC-V, and Windows |
| and MacOS have limited support (may be broken). The Fuchsia platform is |
| slowly replacing functions from its bundled libc with functions from this |
| project. |
| |
| ABI Compatibility |
| ================= |
| |
| The libc is written to be ABI independent. Interfaces are generated using |
| headergen, so supporting arbitrary ABIs is possible. In it's initial |
| stages there is no ABI stability in any form. |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 2 |
| :caption: Using |
| |
| usage_modes |
| overlay_mode |
| fullbuild_mode |
| configure |
| gpu/index.rst |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Status |
| |
| compiler_support |
| date_and_time |
| math/index.rst |
| strings |
| stdio |
| stdbit |
| fenv |
| libc_search |
| c23 |
| ctype |
| complex |
| signal |
| threads |
| setjmp |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Development |
| |
| build_and_test |
| dev/index.rst |
| porting |
| contributing |
| talks |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: External Links |
| |
| Source Code <https://github.com/llvm/llvm-project/tree/main/libc> |
| Bug Reports <https://github.com/llvm/llvm-project/labels/libc> |
| Discourse <https://discourse.llvm.org/c/runtimes/libc> |
| Join the Discord <https://discord.gg/xS7Z362> |
| Discord Channel <https://discord.com/channels/636084430946959380/636732994891284500> |
| Buildbot <https://lab.llvm.org/buildbot/#/builders?tags=libc> |