# 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>
```
