This file is a list of the people responsible for ensuring that patches for a
particular part of Swift are reviewed, either by themselves or by someone else.
They are also the gatekeepers for their part of Swift, with the final word on
what goes in or not.

The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts.  The fields are: name (N), email (E), web-address
(W), description (D).

N: David Abrahams
E: dabrahams@apple.com
D: Swift standard library

N: David Farler
E: dfarler@apple.com
D: Markup, lib/Syntax, Swift Linux port

N: Doug Gregor
E: dgregor@apple.com
D: AST, Basic, Parse, Sema

N: Joe Groff
E: jgroff@apple.com
D: SIL, SILGen, everything in Swift not covered by someone else

N: Argyrios Kyrzidis
E: kyrtzidis@apple.com
D: IDE, SourceKit, swift-ide-test

N: Luke Larson
E: llarson@apple.com
D: Swift Benchmark Suite

N: John McCall
E: rjmccall@apple.com
D: Demangler, IRGen, Runtime

N: Jordan Rose
E: jordan_rose@apple.com
D: ClangImporter, Serialization, (Objective-)C printer, Driver

N: Erik Eckstein
E: eeckstein@apple.com
D: SILOptimizer

N: Anna Zaks
E: ganna@apple.com
D: SIL diagnostics passes
