blob: 0e4546aaec2ece5607e003c4a4574f14e15c802f [file] [view] [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}
:caption: Using LLVM-libc
:hidden: true
:maxdepth: 1
getting_started
build_concepts
overlay_mode
full_host_build
full_cross_build
configure
hand_in_hand
```
```{toctree}
:caption: Platforms
:hidden: true
:maxdepth: 1
gpu/index
uefi/index
```
```{toctree}
:caption: Implementation Status
:hidden: true
:maxdepth: 1
headers/index
arch_support
platform_support
compiler_support
```
```{toctree}
:caption: Development
:hidden: true
:maxdepth: 1
contributing
build_and_test
dev/index
porting
Maintainers
```
```{toctree}
:caption: Links
:hidden: true
:maxdepth: 1
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>
```