Namespaces
Variants

History of C

From cppreference.net

Содержание

Ранний C

  • 1969: Создан язык B, основанный на BCPL, для замены ассемблера PDP-7 в качестве языка системного программирования для Unix
  • добавлены операторы ++ , -- , составные присваивания, оставался нетипизированным языком как BCPL
  • 1971: NB ("новый B") создан при портировании 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 , составные литералы, массивы переменной длины, гибкие элементы массивов, назначенные инициализаторы, <fenv.h> , вариативные макросы, комплексные числа, __func__ , шестнадцатеричный формат чисел с плавающей точкой ( % a ), денежное форматирование в lconv , isblank , конкатенация узких и широких строковых литералов, завершающая запятая в перечислениях, пустые аргументы в функциональных макросах, STDC_ * прагмы, va_copy , нулевой возврат tmpnam , нулевой указатель в setvbuf , hh и ll спецификаторы длины в printf , snprintf , _Exit , <tgmath.h> , POSIX-подобные спецификаторы strftime
  2. из C++: inline , смешивание объявлений и кода, объявления в инициализирующем выражении цикла for, // комментарии, универсальные символьные имена в исходном коде
  3. удалены неявные функции и неявный int
  • 2001: Техническое исправление 1 (ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: Техническое исправление 2 (ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: Технический отчет по Unicode (ISO/IEC TR 19769:2004) ( Магазин ISO ) ( N1040 черновик от 7 ноября 2003 года)
  • 2007: Техническое исправление 3 (ISO/IEC 9899:1999/Cor.3:2007) ( N1256 черновик от 7 сентября 2007 года)
  • 2007: TR по интерфейсам проверки границ (ISO/IEC TR 24731-1:2007) ( Магазин ISO ) ( N1225 черновик от 28 марта 2007)
  • 2008: TR для встраиваемых систем (ISO/IEC TR 18037:2008) ( Магазин ISO ) ( N1021 черновик от 24 сентября 2003)
  • 2009: TR по десятичной плавающей точке (ISO/IEC TR 24732:2009) ( Магазин ISO ) ( N1241 черновик от 5 июля 2007)
  • 2009: TR по математическим специальным функциям (ISO/IEC TR 24747:2009) ( Магазин ISO ) ( N1182 черновик от 2 августа 2006)
  • 2010: TR по функциям динамического выделения памяти (ISO/IEC TR 24731-2:2010) ( Магазин ISO ) ( N1388 черновик от 1 июня 2009)
  • 2011: C11 (ISO/IEC 9899:2011) ( Магазин ISO ) ( Магазин ANSI ) ( N1570 черновик от 12 апреля 2011)
  1. потокобезопасная модель памяти, <stdatomic.h> , <threads.h> , обобщённые функции, alignas / alignof , noreturn , static_assert , расширения анализируемости, расширения для комплексных и мнимых типов, анонимные структуры и объединения, эксклюзивный режим открытия файлов, quick_exit
  2. удалена gets
  3. из TR по интерфейсам с проверкой границ: интерфейсы с проверкой границ,
  4. из TR по Unicode: char16_t , char32_t , и <uchar.h>
  • 2012: Техническое исправление 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO store )
  • 2013: Техническая спецификация по безопасному программированию (ISO/IEC TS 17961:2013) ( Магазин ISO ) ( N1718 30 мая 2013)
  • 2014: ТС по ЧП часть 1: Двоичная арифметика с плавающей запятой (ISO/IEC TS 18661-1:2014) ( Магазин ISO ) ( N1778 черновик 2013)
  1. предоставляет изменения к C11 (в основном к Приложению F), которые охватывают все основные требования и некоторые рекомендации IEC 60559:2011 (C11 был основан на IEC 60559:1989)
  • 2015: FP TS часть 2: Десятичная арифметика с плавающей запятой (ISO/IEC TS 18661-2:2015) ( Магазин ISO ) ( N1912 2015 черновик)
  1. предоставляет изменения к C11 для поддержки всех требований, а также некоторых базовых рекомендаций, стандарта IEC 60559:2011 для десятичной арифметики с плавающей запятой. Это заменяет ISO/IEC TR 24732:2009.
  • 2015: FP TS часть 3: Обменные и расширенные типы (ISO/IEC TS 18661-3:2015) ( Магазин ISO ) ( N1945 черновик 2015)
  1. предоставляет изменения к C11 для поддержки рекомендаций IEC 60559:2011 для расширенных форматов с плавающей точкой и форматов обмена, как арифметических, так и неарифметических.
  • 2015: FP TS часть 4: Дополнительные функции (ISO/IEC TS 18661-4:2015) ( Магазин ISO ) ( N1950 черновик 2015 года)
  1. предоставляет изменения к C11 для поддержки всех математических операций, рекомендованных IEC 60559:2011, включая тригонометрию в единицах π, обратный квадратный корень, сложные проценты и т.д.
  • 2016: FP TS часть 5: Дополнительные атрибуты (ISO/IEC TS 18661-5:2016) ( Магазин ISO ) ( N2004 2016 черновик)
  1. предоставляет изменения в C11 для поддержки всех дополнительных атрибутов (модель вычислений, обработка исключений, воспроизводимость и т.д.), рекомендованных стандартом IEC 60559:2011
Основная статья: C17
Отчёты о дефектах, исправленные в C17 (54 дефекта)
  • 2023 C23 (ISO/IEC 9899:2024). C23 — текущая редакция стандарта C.
Основная статья: C23
Отчёты о дефектах, исправленные в C23 (? дефектов)

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

  • Parallelism TS (Черновик N2017 2016-03-10)
  • Transactional Memory TS (Черновик N1961 2015-09-23)
  • C (Последний черновик n3550 2025-05-04)
  1. Список вопросов, которым не был предоставлен статус DR: ( N2556 2020-08-02)
Основная статья: C29 ?
Следующая крупная ревизия стандарта языка C

Смотрите также

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

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

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