Namespaces
Variants

History of C

From cppreference.net

Contenidos

C Temprano

  • 1969: B creado, basado en BCPL, para reemplazar el ensamblador del PDP-7 como lenguaje de programación del sistema para Unix
  • operadores añadidos ++ , -- , asignación compuesta, permaneció como un lenguaje sin tipos como BCPL
  • 1971: NB ("nuevo B") creado al portar B a PDP-11
  • tipos ( int , char , arreglos y punteros), conversión de arreglo a puntero, compilación a código máquina
  • 1972: El lenguaje renombrado a C
  • struct , operadores && y || , preprocesador, E/S portable
  • 1973: Unix reescrito en C
  • unsigned , long , union , enumeraciones, mayor seguridad de tipos
  • 1978: El Lenguaje de Programación C, 1ª edición

C Estándar

  • 1983: Comité X3J11 establecido por ANSI
  • 1988: The C Programming Language, 2ª edición
  • 1989: C89 , estándar ANSI C publicado
  1. codificó prácticas existentes
  2. nuevas características: volatile , enum , signed , void , locales
  3. De C++: const , prototipos de función
  • 1990: C90 , el estándar ANSI C aceptado como ISO/IEC 9899:1990
  • 1994: Corrección técnica 1 (ISO/IEC 9899:1990/Cor.1:1994)
  1. soporte ampliamente expandido para caracteres anchos y multibyte ( <wctype.h> , <wchar.h> , adiciones y cambios a E/S de flujos, etc.)
  2. dígrafos, <iso646.h> ,
  • 1996: Enmienda técnica 2 (ISO/IEC 9899:1990/Cor.2:1996)
  • 1999: C99 (ISO/IEC 9899:1999)
  1. nuevas características: bool , long long , <stdint.h> , <inttypes.h> , restrict , literales compuestos, arreglos de longitud variable, miembros de arreglo flexibles, inicializadores designados, <fenv.h> , macros variádicas, números complejos, __func__ , formato hexadecimal de punto flotante ( % a ), formato monetario en lconv , isblank , concatenación de literales de cadena estrechos y anchos, coma final en enumeraciones, argumentos vacíos en macros tipo función, STDC_ * pragmas, va_copy , retorno nulo de tmpnam , puntero nulo en setvbuf , hh y ll especificadores de longitud en printf , snprintf , _Exit , <tgmath.h> , especificadores strftime estilo POSIX
  2. de C++: inline , mezcla de declaraciones y código, declaraciones en la cláusula de inicialización del bucle for, // comentarios, nombres de caracteres universales en código fuente
  3. eliminadas funciones implícitas e int implícito
  • 2001: Enmienda técnica 1 (ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: Enmienda técnica 2 (ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: Informe técnico Unicode (ISO/IEC TR 19769:2004) ( Tienda ISO ) ( N1040 borrador del 7 de noviembre de 2003)
  • 2007: Enmienda técnica 3 (ISO/IEC 9899:1999/Cor.3:2007) ( N1256 borrador del 7 de septiembre de 2007)
  • 2007: TR de interfaces de verificación de límites (ISO/IEC TR 24731-1:2007) ( Tienda ISO ) ( N1225 borrador del 28 de marzo de 2007)
  • 2008: TR para sistemas embebidos (ISO/IEC TR 18037:2008) ( Tienda ISO ) ( N1021 borrador del 24 de septiembre de 2003)
  • 2009: TR de coma flotante decimal (ISO/IEC TR 24732:2009) ( Tienda ISO ) ( N1241 borrador del 5 de julio de 2007)
  • 2009: TR de funciones matemáticas especiales (ISO/IEC TR 24747:2009) ( Tienda ISO ) ( N1182 borrador del 2 de agosto de 2006)
  • 2010: TR de funciones de asignación dinámica (ISO/IEC TR 24731-2:2010) ( Tienda ISO ) ( N1388 borrador del 1 de junio de 2009)
  • 2011: C11 (ISO/IEC 9899:2011) ( Tienda ISO ) ( Tienda ANSI ) ( N1570 borrador del 12 de abril de 2011)
  1. modelo de memoria consciente de hilos, <stdatomic.h> , <threads.h> , funciones genéricas de tipo, alignas / alignof , noreturn , static_assert , extensiones de analizabilidad, extensiones a tipos complejos e imaginarios, estructuras y uniones anónimas, modo de apertura exclusivo de archivos, quick_exit
  2. eliminada gets
  3. del TR de interfaces con verificación de límites: interfaces con verificación de límites,
  4. del TR de Unicode: char16_t , char32_t , y <uchar.h>
  • 2012: Corregimiento técnico 1 (ISO/IEC 9899:2011/Cor 1:2012) ( Tienda ISO )
  • 2013: Especificación Técnica de Reglas de Codificación Segura (ISO/IEC TS 17961:2013) ( Tienda ISO ) ( N1718 30 de mayo de 2013)
  • 2014: Especificación Técnica FP parte 1: Aritmética binaria de punto flotante (ISO/IEC TS 18661-1:2014) ( Tienda ISO ) ( N1778 borrador 2013)
  1. proporciona cambios a C11 (principalmente al Anexo F) que cubren todos los requisitos básicos y algunas recomendaciones de IEC 60559:2011 (C11 se basó en IEC 60559:1989)
  • 2015: FP TS parte 2: Decimal floating-point arithmetic (ISO/IEC TS 18661-2:2015) ( Tienda ISO ) ( N1912 borrador 2015)
  1. proporciona cambios a C11 para admitir todos los requisitos, más algunas recomendaciones básicas, de IEC 60559:2011 para aritmética de punto flotante decimal. Esto reemplaza a ISO/IEC TR 24732:2009.
  • 2015: FP TS parte 3: Tipos extendidos e intercambiables (ISO/IEC TS 18661-3:2015) ( Tienda ISO ) ( N1945 borrador 2015)
  1. proporciona cambios a C11 para admitir las recomendaciones de IEC 60559:2011 para formatos de punto flotante extendidos y los formatos de intercambio, tanto aritméticos como no aritméticos.
  • 2015: FP TS parte 4: Funciones suplementarias (ISO/IEC TS 18661-4:2015) ( Tienda ISO ) ( N1950 borrador 2015)
  1. proporciona cambios a C11 para soportar todas las operaciones matemáticas recomendadas por IEC 60559:2011, incluyendo trigonometría en unidades π, raíz cuadrada inversa, interés compuesto, etc.
  • 2016: FP TS parte 5: Atributos suplementarios (ISO/IEC TS 18661-5:2016) ( Tienda ISO ) ( N2004 borrador 2016)
  1. proporciona cambios a C11 para admitir todos los atributos suplementarios (modelo de evaluación, manejo de excepciones, reproducibilidad, etc) recomendados por IEC 60559:2011
Artículo Principal: C17
Informes de Defectos corregidos en C17 (54 defectos)
  • 2023 C23 (ISO/IEC 9899:2024). C23 es la revisión actual del estándar C.
Artículo Principal: C23
Informes de Defectos corregidos en C23 (? defectos)

Desarrollo futuro

  • TS de Paralelismo (Borrador N2017 2016-03-10)
  • TS de Memoria Transaccional (Borrador N1961 2015-09-23)
  • C (Borrador más reciente n3550 2025-05-04)
  1. Lista de problemas a los que no se les concedió el estatus DR: ( N2556 2020-08-02)
Artículo Principal: C29 ?
Próxima revisión principal del estándar del lenguaje C

Véase también

Documentación de C++ para Historia de C++

Enlaces externos

1. El Desarrollo del Lenguaje C por Dennis M. Ritchie
2. Fundamentos del estándar C99