History of C
From cppreference.com
                    
                                        
                    
                    
                                                            
                    
Contents | 
[edit] Early C
- 1969: B created, based on BCPL, to replace PDP-7 assembler as the system programming language for Unix
 
- 
- added operators ++, --, compound assignment, remained a typeless language like BCPL
 
 
- 1971: NB ("new B") created when porting B to PDP-11
 
- 
- types (int, char, arrays and pointers), array-to-pointer conversion, compilation to machine code
 
 
- 1972: Language renamed to C
 
- 
- structs, operators && and ||, preprocessor, portable I/O
 
 
- 1973: Unix re-written in C
 
- 
- unsigned, long, unions, enumerations, increased type safety
 
 
- 1978: The C Programming Language, 1st edition
 
[edit] Standard C
- 1983: ANSI established X3J11 committee
 - 1988: The C Programming Language, 2nd edition
 -  1989: 
C89, the ANSI C standard published 
- codified existing practices
 - new features: volatile, enum, signed, void
 - From C++: const, function prototypes
 
- 1990: the ANSI standard accepted as ISO/IEC 9899-1990
 -  1995: 
C95(ISO/IEC 9899 AM1) 
- multibyte character support (wchar_t and all wide and multibyte character functions, wchar.h, wctype.h, and those added to existing headers and corresponding changes to stream I/O, etc)
 - digraphs, iso646.h,
 
- 1995: Technical corrigendum 1 (ISO/IEC 9899 TCOR1)
 
- 1996: Technical corrigendum 2 (ISO/IEC 9899 TCOR2)
 
-  1999: 
C99(ISO/IEC 9899:1999) 
- new features: bool, long long, stdint.h, inttypes.h, restrict, compound literals, variable length arrays, flexible array members, designated initializers, fenv.h, variadic macros, complex numbers, __func__, hexadecimal floating point format (%a), monetary formatting in lconv, isblank, concatenation of narrow and wide string literals, trailing comma in enumerations, empty arguments in function-like macros, STDC_* pragmas, va_copy, null return of tmpnam, null pointer in setvbuf, hh and ll lengthspecifiers in printf, snprintf, _Exit, tgmath.h, POSIX-like strftime specifiers
 -  from C++: inline, mix declarations and code, declarations in the init clause of the for loop, 
//comments, universal character names in source code - removed implicit functions and implicit int
 
- 2001: Technical corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E))
 
- 2004: Technical corrigendum 2 (ISO/IEC 9899:1999/Cor.2:2004(E))
 - 2004: Unicode TR (ISO/IEC TR 19769:2004)
 - 2007: Technical corrigendum 3 (ISO/IEC 9899:1999/Cor.3:2007(E)) (September 7, 2007 draft)
 
- 
- deprecated gets
 
 
- 2007: Bounds-checking interfaces TR (ISO/IEC TR 24731-1:2007)
 - 2009: Decimal floating-point TR (ISO/IEC TR 24732:2009)
 - 2010: Dynamic allocations functions TR (ISO/IEC TR 24731-2:2010)
 -  2011: 
C11(ISO/IEC 9899:2011) (April 12, 2011 draft) 
- thread-aware memory model, stdatomic.h, threads.h, type-generic functions, alignas/alignof, noreturn, static assert, analyzability extensions, extensions to complex and imaginary types, anonymous structures and unions, exclusive file open mode. quick_exit
 - removed gets
 - from Bounds-checking interfaces TR: bounds-checking interfaces,
 - from Unicode TR: char16_t, char32_t, and uchar.h
 
- 2012: Technical corrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012)
 
- 
- 2 minor bug fixes
 
 
- 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) (2012 draft)
 
[edit] Future development
- Floating-point extensions TS (ISO/IEC TS 18661, supersedes ISO/IEC TR 24732:2009). 2013/2014 drafts:
 
[edit] References
- The Development of the C Language by Dennis M. Ritchie
 - Rationale for the C99 standard