blob: 61472da0c593705b1063233d49e596a3a612fbe0 [file] [log] [blame] [edit]
==================
The LLVM C Library
==================
LLVM-libc is a from-scratch implementation of the C standard library, built as
part of the LLVM project. It is designed to be **modular** (any piece can be
used independently), **multiplatform** (Linux, GPU, baremetal embedded, UEFI,
macOS, Windows), and written in modern C++ for correctness, performance, and
safety.
What Works Today
================
LLVM-libc is **actively used in production** for a targeted set of use cases,
though coverage is still growing and many programs that depend on the full C
standard library (regex, locale, wide-character I/O, etc.) will not yet compile
against it:
* **Static-linked Linux servers and containers** — used in production at Google
(servers and Pixel Buds) on x86-64 and AArch64.
* **GPU compute (AMDGPU, NVPTX)** — libc functions available in GPU kernels
via LLVM's offloading runtime. :doc:`GPU docs <gpu/index>`
* **Baremetal embedded (ARM, RISC-V, AArch64)** — minimal footprint builds
for microcontrollers and custom hardware.
* **UEFI applications** — experimental support for firmware development.
:doc:`UEFI docs <uefi/index>`
* **LLVM ecosystem internals** — libc++ and the offloading runtime consume
LLVM-libc directly via :doc:`Hand-in-Hand <hand_in_hand>`.
* **Toolchain integrations** — pieces of LLVM-libc are used in Android Bionic,
Fuchsia, Emscripten, and the ARM embedded toolchain.
Coverage is still growing. See the :doc:`implementation status <headers/index>`
pages for per-header detail, and the
:doc:`platform support <platform_support>` page for OS/architecture coverage.
Getting Started
===============
If you are new to LLVM-libc, :doc:`getting_started` is the right first stop.
It covers cloning, building, testing, and verifying your installation in one
place.
Want to use LLVM-libc *alongside* your system libc instead of replacing it?
See :doc:`overlay_mode`.
Get Involved
============
LLVM-libc is an active project and welcomes contributors of all experience
levels. See :doc:`contributing` to learn how to help.
* `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>`__
* `Discord <https://discord.com/channels/636084430946959380/636732994891284500>`__
(`invite <https://discord.gg/xS7Z362>`__)
* `Buildbot <https://lab.llvm.org/buildbot/#/builders?tags=libc>`__
.. toctree::
:hidden:
:maxdepth: 1
:caption: Using LLVM-libc
getting_started
build_concepts
overlay_mode
full_host_build
full_cross_build
configure
hand_in_hand
.. toctree::
:hidden:
:maxdepth: 1
:caption: Platforms
gpu/index.rst
uefi/index.rst
.. toctree::
:hidden:
:maxdepth: 1
:caption: Implementation Status
headers/index.rst
arch_support
platform_support
compiler_support
.. toctree::
:hidden:
:maxdepth: 1
:caption: Development
contributing
build_and_test
dev/index.rst
porting
Maintainers
.. toctree::
:hidden:
:maxdepth: 1
:caption: 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>