| ================== |
| The LLVM C Library |
| ================== |
| |
| .. warning:: |
| LLVM-libc is not yet ABI stable; currently only static linking is supported. |
| LLVM-libc developers retain the right to modify the ABI of types used |
| throughout the library. Another libc should be preferred if ABI stability is |
| a requirement. |
| |
| .. note:: |
| LLVM-libc is not fully complete right now. Some programs may fail to build due |
| to missing functions. If you would like to help us finish LLVM-libc, check |
| out "`Contributing to the libc project <contributing.html>`__" in the sidebar |
| or ask on `discord <https://discord.com/channels/636084430946959380/636732994891284500>`__ |
| (`invite link <https://discord.gg/xS7Z362>`__). |
| |
| Introduction |
| ============ |
| |
| LLVM-libc aspires to a unique place in the software ecosystem. The goals are: |
| |
| - Fully compliant with current C23 and POSIX.1-2024 standards. |
| - 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>`__ |
| |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Status & Support |
| |
| headers/index.rst |
| arch_support |
| platform_support |
| compiler_support |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Simple Usage |
| |
| getting_started |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Advanced Usage |
| |
| full_host_build |
| full_cross_build |
| overlay_mode |
| gpu/index.rst |
| uefi/index.rst |
| configure |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Development |
| |
| Maintainers |
| build_and_test |
| dev/index.rst |
| porting |
| contributing |
| |
| .. toctree:: |
| :hidden: |
| :maxdepth: 1 |
| :caption: Useful Links |
| |
| talks |
| 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> |