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, 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

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: Chris Lattner
E: clattner@apple.com
D: Everything in Swift not covered by someone else

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
