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 опубликован
- кодифицировал существующие практики
- новые возможности: volatile , enum , signed , void , локали
- Из C++: const , прототипы функций
- 1990: C90 , стандарт ANSI C принят как ISO/IEC 9899:1990
- 1994: Техническое исправление 1 (ISO/IEC 9899:1990/Cor.1:1994)
- 1995: C95 (ISO/IEC 9899:1990/Amd.1:1995) ( онлайн-магазин )
- значительно расширенная поддержка широких и многобайтовых символов ( <wctype.h> , <wchar.h> , дополнения и изменения в потоковом вводе-выводе и т.д.)
- диграфы, <iso646.h> ,
- 1996: Техническое исправление 2 (ISO/IEC 9899:1990/Cor.2:1996)
- 1999: C99 (ISO/IEC 9899:1999)
-
новые возможности:
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 - из C++: inline , смешивание объявлений и кода, объявления в инициализирующем выражении цикла for, // комментарии, универсальные символьные имена в исходном коде
- удалены неявные функции и неявный 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 года)
-
- устаревшая gets
- 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)
- потокобезопасная модель памяти, <stdatomic.h> , <threads.h> , обобщённые функции, alignas / alignof , noreturn , static_assert , расширения анализируемости, расширения для комплексных и мнимых типов, анонимные структуры и объединения, эксклюзивный режим открытия файлов, quick_exit
- удалена gets
- из TR по интерфейсам с проверкой границ: интерфейсы с проверкой границ,
- из TR по Unicode: char16_t , char32_t , и <uchar.h>
- 2012: Техническое исправление 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO store )
-
- Исправляет DR 411
- 2013: Техническая спецификация по безопасному программированию (ISO/IEC TS 17961:2013) ( Магазин ISO ) ( N1718 30 мая 2013)
- 2014: ТС по ЧП часть 1: Двоичная арифметика с плавающей запятой (ISO/IEC TS 18661-1:2014) ( Магазин ISO ) ( N1778 черновик 2013)
- предоставляет изменения к C11 (в основном к Приложению F), которые охватывают все основные требования и некоторые рекомендации IEC 60559:2011 (C11 был основан на IEC 60559:1989)
- 2015: FP TS часть 2: Десятичная арифметика с плавающей запятой (ISO/IEC TS 18661-2:2015) ( Магазин ISO ) ( N1912 2015 черновик)
- предоставляет изменения к C11 для поддержки всех требований, а также некоторых базовых рекомендаций, стандарта IEC 60559:2011 для десятичной арифметики с плавающей запятой. Это заменяет ISO/IEC TR 24732:2009.
- 2015: FP TS часть 3: Обменные и расширенные типы (ISO/IEC TS 18661-3:2015) ( Магазин ISO ) ( N1945 черновик 2015)
- предоставляет изменения к C11 для поддержки рекомендаций IEC 60559:2011 для расширенных форматов с плавающей точкой и форматов обмена, как арифметических, так и неарифметических.
- 2015: FP TS часть 4: Дополнительные функции (ISO/IEC TS 18661-4:2015) ( Магазин ISO ) ( N1950 черновик 2015 года)
- предоставляет изменения к C11 для поддержки всех математических операций, рекомендованных IEC 60559:2011, включая тригонометрию в единицах π, обратный квадратный корень, сложные проценты и т.д.
- 2016: FP TS часть 5: Дополнительные атрибуты (ISO/IEC TS 18661-5:2016) ( Магазин ISO ) ( N2004 2016 черновик)
- предоставляет изменения в C11 для поддержки всех дополнительных атрибутов (модель вычислений, обработка исключений, воспроизводимость и т.д.), рекомендованных стандартом IEC 60559:2011
- 2018: C17 (ISO/IEC 9899:2018) ( Магазин ISO ) ( Финальный черновик )
| Отчёты о дефектах, исправленные в C17 (54 дефекта) |
|---|
|
- 2023 C23 (ISO/IEC 9899:2024). C23 — текущая редакция стандарта C.
| Отчёты о дефектах, исправленные в C23 (? дефектов) |
|---|
Будущее развитие
- Parallelism TS (Черновик N2017 2016-03-10)
- Transactional Memory TS (Черновик N1961 2015-09-23)
- C (Последний черновик n3550 2025-05-04)
- Список вопросов, которым не был предоставлен статус DR: ( N2556 2020-08-02)
- Основная статья: C29 ?
- Следующая крупная ревизия стандарта языка C
Смотрите также
|
Документация C++
для
Истории C++
|
Внешние ссылки
| 1. | Развитие языка C Деннис М. Ричи |
| 2. | Обоснование стандарта C99 |