The C programming language was first developed in the early 1970s by Dennis Ritchie at Bell Labs for use in the UNIX operating system. Over the years, the language has evolved through several standards, each of which has introduced new features and made various changes to the language syntax and semantics. Here are some of the significant changes and additions in various standards:
C89/C90: This was the first standardized version of the language, published by the American National Standards Institute (ANSI) in 1989 and by the International Organization for Standardization (ISO) in 1990. It included many features of the original language, such as the use of pointers and the ability to define functions, as well as some new features like the const keyword and the void type.
C99: This standard, published in 1999, added several new features to the language, including support for variable-length arrays, flexible array members, inline functions, and the bool type. It also introduced new keywords like restrict and _Bool and made various changes to the language syntax.
C11: This standard, published in 2011, further refined and expanded on the features introduced in C99. It added support for multi-threading programming through the addition of thread-local storage and atomic operations. It also introduced new keywords like _Alignas and _Static_assert and made various changes to the language syntax.
C17: This standard, published in 2018, made only minor changes to the language compared to C11. It added some new library functions and made some clarifications to the language specification.
In addition to these standards, there have been many proposals for new features to be added to the language, some of which have been adopted and others rejected. For example, the C2x standard is currently under development and is expected to include new features like modules, contracts, and coroutines.
Overall, the evolution of the C language has been driven by a desire to improve the language’s expressiveness and maintainability while preserving its performance and low-level control.