c/language/history

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 (,, arrays and pointers), array-to-pointer conversion, compilation to machine code


 * 1972: Language renamed to C
 * , operators and, preprocessor, portable I/O


 * 1973: Unix re-written in C
 * ,, , enumerations, increased type safety


 * 1978: The C Programming Language, 1st edition

Standard C

 * 1983: ANSI established X3J11 committee
 * 1988: The C Programming Language, 2nd edition
 * 1989: C89, the ANSI C standard published
 * 1) codified existing practices
 * 2) new features:, , , , locales
 * 3) From C++:, function prototypes
 * 1990: C90, the ANSI C standard accepted as ISO/IEC 9899:1990
 * 1994: Technical corrigendum 1 (ISO/IEC 9899:1990/Cor.1:1994)


 * 1995: C95 (ISO/IEC 9899:1990/Amd.1:1995) (online store)
 * 1) greatly expanded wide and multibyte character support (,, additions and changes to stream I/O, etc)
 * 2) digraphs, ,
 * 1996: Technical corrigendum 2 (ISO/IEC 9899:1990/Cor.2:1996)


 * 1999: C99 (ISO/IEC 9899:1999)
 * 1) new features:, , , , , compound literals, variable length arrays, flexible array members, designated initializers, , variadic macros, complex numbers, , hexadecimal floating point format , monetary formatting in lconv, isblank, concatenation of narrow and wide string literals, trailing comma in enumerations, empty arguments in function-like macros,  pragmas, va_copy, null return of tmpnam, null pointer in setvbuf,  and  length-specifiers in printf, snprintf, _exit, , POSIX-like strftime specifiers
 * 2) from C++:, mix declarations and code, declarations in the init-clause of the for loop,  comments, universal character names in source code
 * 3) removed implicit functions and implicit
 * 2001: Technical corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001)


 * 2004: Technical corrigendum 2 (ISO/IEC 9899:1999/Cor.2:2004)
 * 2004: Unicode TR (ISO/IEC TR 19769:2004) (ISO store) ( November 7, 2003 draft)
 * 2007: Technical corrigendum 3 (ISO/IEC 9899:1999/Cor.3:2007) ( September 7, 2007 draft)
 * deprecated gets


 * 2007: Bounds-checking interfaces TR (ISO/IEC TR 24731-1:2007) (ISO store) ( March 28, 2007 draft)
 * 2008: Embedded TR (ISO/IEC TR 18037:2008) (ISO store) ( September 24, 2003 draft)
 * 2009: Decimal floating-point TR (ISO/IEC TR 24732:2009) (ISO store) ( July 5, 2007 draft)
 * 2009: Mathematical special functions TR (ISO/IEC TR 24747:2009) (ISO store) ( August 2, 2006 draft)
 * 2010: Dynamic allocations functions TR (ISO/IEC TR 24731-2:2010) (ISO store) ( June 1, 2009 draft)
 * 2011: C11 (ISO/IEC 9899:2011) (ISO store) (ANSI store) ( April 12, 2011 draft)
 * 1) thread-aware memory model,, , type-generic functions, /, , , analyzability extensions, extensions to complex and imaginary types, anonymous structures and unions, exclusive file open mode, quick_exit
 * 2) removed gets
 * 3) from Bounds-checking interfaces TR: bounds-checking interfaces,
 * 4) from Unicode TR:, , and
 * 2012: Technical corrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO store)
 * Fixes


 * 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) (ISO store) ( May 30, 2013)
 * 2014: FP TS part 1: Binary floating-point arithmetic (ISO/IEC TS 18661-1:2014) (ISO store) ( 2013 draft)
 * 1) provides changes to C11 (mostly to Annex F) that cover all basic requirements and some recommendations of IEC 60559:2011 (C11 was built on IEC 60559:1989)
 * 2015: FP TS part 2: Decimal floating-point arithmetic (ISO/IEC TS 18661-2:2015) (ISO store) ( 2015 draft)
 * 1) provides changes to C11 to support all the requirements, plus some basic recommendations, of IEC 60559:2011 for decimal floating-point arithmetic. This supersedes ISO/IEC TR 24732:2009.
 * 2015: FP TS part 3: Interchange and extended types (ISO/IEC TS 18661-3:2015) (ISO store) ( 2015 draft)
 * 1) provides changes to C11 to support the recommendations of IEC 60559:2011 for extended floating‐point formats and the interchange formats, both arithmetic and non-arithmetic.
 * 2015: FP TS part 4: Supplementary functions (ISO/IEC TS 18661-4:2015) (ISO store) ( 2015 draft)
 * 1) provides changes to C11 to support all mathematical operations recommended by IEC 60559:2011, including trigonometry in π units, inverse square root, compounded interest, etc.
 * 2016: FP TS part 5: Supplementary attributes (ISO/IEC TS 18661-5:2016) (ISO store) ( 2016 draft)
 * 1) provides changes to C11 to support all supplementary attributes (evaluation model, exception handling, reproducibility, etc) recommended by IEC 60559:2011


 * 2018: C17 (ISO/IEC 9899:2018) (ISO Store) (Final draft)
 * Main Article: C17

Future development

 * Parallelism TS (Draft 2016-03-10)
 * Transactional Memory TS (Draft 2015-09-23)
 *  (Latest draft )


 * 1) List of issues that were not granted DR status: ( 2020-08-02)
 * Main Article: C23
 * Next major C language standard revision