Пространства имён
Варианты
Действия

История C

Материал из cppreference.com

Ранний C

  • 1969: создан B, основанный на BCPL, для замены ассемблера PDP-7 в качестве языка программирования для Unix
  • добавлены операторы ++, --, составное присваивание, оставался безтиповым языком как BCPL
  • 1971: создан NB ("новый B") при переносе на PDP-11
  • типы (int, char, массивы и указатели), преобразование массивов к указателям, компиляция в машинный код
  • 1972: язык переименован в C
  • struct, операторы && и ||, препроцессор, переносимый ввод/вывод
  • 1973: Unix переписана на C
  • unsigned, long, union, перечисления, улучшена безопасность типов
  • 1978: Язык программирования C, 1-е издание

Стандартизированный C

  • 1983: ANSI учредил комитет X3J11
  • 1988: Язык программирования C, 2е издание
  • 1989: C89, опубликован стандарт ANSI C
  1. закреплена существующая практика
  2. новые возможности: volatile, enum, signed, void, локали
  3. Из C++: const, прототипы функций
  • 1990: C90, стандарт ANSI C принят как ISO/IEC 9899:1990
  • 1994: Техническая поправка 1 (ISO/IEC 9899:1990/Cor.1:1994)
  1. значительно улучшена поддержка широких и многобайтовых символов (<wctype.h>, <wchar.h>, дополнения и изменения в потоке ввода/вывода и т. д.)
  2. диграфы, <iso646.h>,
  • 1996: Техническая поправка 2 (ISO/IEC 9899:1990/Cor.2:1996)
  • 1999: C99 (ISO/IEC 9899:1999)
  1. новые возможности: bool, long long, <stdint.h>, <inttypes.h>, restrict, составные литералы, массивы переменной длины, 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 length-specifiers in printf, snprintf, _Exit, <tgmath.h>, POSIX-like strftime specifiers
  2. из C++: inline, mix declarations and code, declarations in the init-clause of the for loop, // comments, universal character names in source code
  3. удалены неявные функции и неявный int
  • 2001: Техническая поправка 1 (ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: Техническая поправка 2 (ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: Unicode TR (ISO/IEC TR 19769:2004) (ISO store) (N1040 черновик от 7 ноября 2003)
  • 2007: Техническая поправка 3 (ISO/IEC 9899:1999/Cor.3:2007) (N1256 September 7, 2007 draft)
  • 2007: Bounds-checking interfaces TR (ISO/IEC TR 24731-1:2007) (ISO store) (N1225 March 28, 2007 draft)
  • 2008: Embedded TR (ISO/IEC TR 18037:2008) (ISO store) (N1021 September 24, 2003 draft)
  • 2009: Decimal floating-point TR (ISO/IEC TR 24732:2009) (ISO store) (N1241 July 5, 2007 draft)
  • 2009: Mathematical special functions TR (ISO/IEC TR 24747:2009) (ISO store) (N1182 August 2, 2006 draft)
  • 2010: Dynamic allocations functions TR (ISO/IEC TR 24731-2:2010) (ISO store) (N1388 June 1, 2009 draft)
  • 2011: C11 (ISO/IEC 9899:2011) (ISO store) (ANSI store) (N1570 April 12, 2011 draft)
  1. 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
  2. removed gets
  3. from Bounds-checking interfaces TR: bounds-checking interfaces,
  4. from Unicode TR: char16_t, char32_t, and <uchar.h>
  • 2012: Technical corrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO store)
  • 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) (ISO store) (N1718 May 30, 2013)
  • 2014: FP TS part 1: Binary floating-point arithmetic (ISO/IEC TS 18661-1:2014) (ISO store) (N1778 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) (N1912 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) (N1945 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) (N1950 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) (N2004 2016 draft)
  1. provides changes to C11 to support all supplementary attributes (evaluation model, exception handling, reproducibility, etc) recommended by IEC 60559:2011
Main Article: C17

Будущее развитие

  • ТС параллелизма (черновик от N2017 10.03.2016)
  • ТС транзакционной памяти (черновик от N1961 23.09.2015)
  • C23 (Latest draft n2912 2022-06-07)
  1. List of issues that were not granted DR status: (N2556 2020-08-02)
Main Article: C23
Next major C language standard revision
Отчёты об ошибках, исправленные в C23 (? ошибок)

См. также

Документация C++ по истории C++

Внешние ссылки

1.  Денис М. Ритчи "Разработка языка программирования C"
2.  Основа стандарта C99