# Compiler-rt maintainers

This file is a list of the
[maintainers](https://llvm.org/docs/DeveloperPolicy.html#maintainers) for
LLVM compiler-rt.

## Current Maintainers

The following people are the active maintainers for the project. Please reach
out to them for code reviews, questions about their area of expertise, or other
assistance.

### Builtins Library

Saleem Abdulrasool \
compnerd@compnerd.org (email), [compnerd](https://github.com/compnerd) (GitHub)

### CFI

Peter Collingbourne \
peter@pcc.me.uk (email), [pcc](https://github.com/pcc) (GitHub)

### CMake build

Petr Hosek \
phosek@google.com (email), [petrhosek](https://github.com/petrhosek) (GitHub)

### CRT

Petr Hosek \
phosek@google.com (email), [petrhosek](https://github.com/petrhosek) (GitHub)

### GWP ASAN

Christopher Ferris \
cferris@google.com (email), [cferris1000](https://github.com/cferris1000) (GitHub)

### MemProfiling

Teresa Johnson \
tejohnson@google.com (email), [teresajohnson](https://github.com/teresajohnson) (GitHub)

### SafeStack

Peter Collingbourne \
peter@pcc.me.uk (email), [pcc](https://github.com/pcc) (GitHub)

### Sanitizers

#### Sanitizers not covered by someone else

Vitaly Buka \
vitalybuka@google.com (email), [vitalybuka](https://github.com/vitalybuka) (GitHub) \
Alexander Potapenko \
glider@google.com (email), [ramosian-glider](https://github.com/ramosian-glider) (GitHub)

#### Data Flow Sanitizer

Andrew Browne \
browneee@google.com (email), [browneee](https://github.com/browneee) (GitHub)

#### Numerical Sanitizer (NSAN)

Alexander Shaposhnikov \
alexander.v.shaposhnikov@gmail.com (email), [alexander-shaposhnikov](https://github.com/alexander-shaposhnikov) (GitHub)

#### Realtime Sanitizer (RTSan)

Christopher Apple \
cja-private@pm.me (email), [cjappl](https://github.com/cjappl) (GitHub) \
David Trevelyan \
david.trevelyan@gmail.com (email), [davidtrevelyan](https://github.com/davidtrevelyan) (GitHub)

#### Thread Sanitizer

Dmitry Vyukov \
dvyukov@google.com (email), [dvyukov](https://github.com/dvyukov) (GitHub)

#### Undefined Behavior Sanitizer

Richard Smith \
richard-llvm@metafoo.co.uk (email), [zygoloid](https://github.com/zygoloid) (GitHub)

### ORC

Lang Hames \
lhames@gmail.com (email), [lhames](https://github.com/lhames) (GitHub)

### Profile runtime library

Bill Wendling \
isanbard@gmail.com (email), [isanbard](https://github.com/isanbard) (GitHub)

### SCUDO

Christopher Ferris \
cferris@google.com (email), [cferris1000](https://github.com/cferris1000) (GitHub)

## Inactive Maintainers

The following people have graciously spent time performing maintainer
responsibilities but are no longer active in that role. Thank you for all your
help with the success of the project!

### Inactive or former component maintainers

Kostya Serebryany ([kcc](https://github.com/kcc)) -- Sanitizers \
Evgeniy Stepanov ([eugenis](https://github.com/eugenis)) -- Sanitizers \
Kostya Kortchinsky ([cryptoad](https://github.com/cryptoad)) -- SCUDO \
Mitch Phillips ([hctim](https://github.com/hctim)) -- GWP ASAN
