Bibliography: Extensions and Tools for the C Programming Language

maintained by Russ Cox

Ace, a syntax-driven preprocessor (Gosling)
http://swtch.com/gosling89ace.pdf

Adding Run-Time Checking to the Portable C Compiler (Steffen).
Software—Practice and Experience, 22(4) (April 1992), pp. 305–316.

C++ adds everything but the kitchen sink (fixed in 3rd edition).
The C++ Programming Language, Bjarne Stroustrup, Addison-Wesley 1997.

Cforall adds overloading, opaque types, and polymorphism.
http://plg.uwaterloo.ca/~cforall

Cilk adds support for large-scale polymorphism.
http://supertech.lcs.mit.edu/cilk/

C99 adds support for complex floating-point numbers and breaks other things.
http://home.tiscalinet.ch/t_wolf/tw/c/c9x_changes.html

Engler et. al describe methods for automatically inferring program invariants.

GNU C adds many extensions.
http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/C-Extensions.html

“Language Support for Regions,” (Gay et al.) from PLDI 2001.
http://citeseer.ist.psu.edu/gay01language.html

Failure-oblivious computing (Rinard et al.) replaces out-of-bounds array accesses with sensible defaults.
http://www.usenix.org/events/osdi04/tech/rinard.html

ISO/IEC DTR 18037 extends C to support embedded processors
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1005.pdf

Meta-compilation for C (Willink)
http://www.ee.surrey.ac.uk/Research/CSRG/fog/FogThesis.pdf

Microsoft Visual C adds a handful of extensions.
http://msdn.microsoft.com/library/en-us/vccore98/HTML/_core_microsoft_extensions_to_c.asp

Objective C adds objects as in Smalltalk.
http://www.faqs.org/faqs/computer-lang/Objective-C/faq/

Programmable Syntax Macros (Weise and Crew) add macros inspired by Lisp.
http://citeseer.ist.psu.edu/weise93programmable.html

The Plan 9 C compiler (Ken Thompson) adds simple inheritance via anonymous structure elements.
http://plan9.bell-labs.com/sys/doc/compiler.pdf

“A Sound Polymorphic Type System for a Dialect of C” (Smith and Volpano).
http://citeseer.ist.psu.edu/smith98sound.html

Sparse is a C compiler that checks extra annotations like pointer sub-types.
http://www.google.com/search?q=sparse+checker+linux