C の歴史
提供: cppreference.com
目次 |
[編集] 初期の C
- 1969年 Unix のためのシステムプログラミング言語として PDP-7 のアセンブラを置き換えるために BCPL をベースとして B が作成される。
- 演算子 ++、--、複合代入の追加。 まだ BCPL と同様の型のない言語でした。
- 1971年 B を PDP-11 に移植するときに NB ("new B") が作成される。
- 型 (int、char、配列およびポインタ)、配列からポインタへの変換、機械語へのコンパイル。
- 1972年 C に改名される。
- 構造体、演算子 && および ||、プリプロセッサ、移植性のある入出力。
- 1973年 Unix が C で書き直される。
- unsigned、long、共用体、列挙型、型の安全性の向上。
- 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 として承認される。 - 1995年
C95
(ISO/IEC 9899 AM1) (online store)
- 大きく拡張されたワイド文字とマルチバイト文字のサポート (wctype.h、 wchar.h、ストリーム入出力の追加と変更など)。
- ダイグラフ、iso646.h。
- 1995年 正誤票 1 (ISO/IEC 9899 TCOR1)
- 1996年 正誤票 2 (ISO/IEC 9899 TCOR2)
- 1999年
C99
(ISO/IEC 9899:1999)
- 新しい機能 bool、long long、stdint.h、inttypes.h、restrict、複合リテラル、可変長配列、フレキシブル配列メンバ、指示付き初期化子、fenv.h、可変長マクロ、複素数、__func__、16進浮動小数点フォーマット(%a)、lconv における金額の書式、isblank、ナロー文字列リテラルとワイド文字列リテラルの連結、列挙子の最後のコンマ、関数形式マクロにおける空の引数、STDC_* プラグマ、va_copy、tmpnam のヌルの戻り値、setvbuf におけるヌルポインタ、printf における長さ修飾子 hh および ll、snprintf、_Exit、tgmath.h、POSIX ライクな strftime の指定子。
- C++ から: inline、宣言とコードの混在、for ループの初期化節における宣言、
//
コメント、ソースコード中のユニバーサル文字名。 - 暗黙の関数と暗黙の int が削除されました。
- 2001年 正誤票 1 (ISO/IEC 9899:1999/Cor.1:2001(E))
- 2004年 正誤票 2 (ISO/IEC 9899:1999/Cor.2:2004(E))
- 2004年 Unicode TR (ISO/IEC TR 19769:2004) (ISO store) (November 7, 2003 draft)
- 2007年 正誤票 3 (ISO/IEC 9899:1999/Cor.3:2007(E)) (September 7, 2007 draft)
- gets が非推奨化されました。
- 2007年 境界チェック付きインタフェース TR (ISO/IEC TR 24731-1:2007) (ISO store) (March 28, 2007 draft)
- 2008年 組み込み TR (ISO/IEC TR 18037:2008) (ISO store) (September 24, 2003 draft)
- 2009年 10進浮動小数点 TR (ISO/IEC TR 24732:2009) (ISO store) (July 5, 2007 draft)
- 2009年 特殊な数学関数 TR (ISO/IEC TR 24747:2009) (ISO store) (August 2, 2006 draft)
- 2010年 動的メモリ確保 TR (ISO/IEC TR 24731-2:2010) (ISO store) (August 15, 2007 draft)
- 2011年
C11
(ISO/IEC 9899:2011) (ISO store) (ANSI store) (April 12, 2011 draft)
- スレッド対応のメモリモデル、stdatomic.h、threads.h、型総称関数、alignas/alignof、noreturn、static assert、解析可能性拡張、複素数型と虚数型の拡張、無名構造体および無名共用体、排他的ファイルオープンモード、quick_exit。
- gets が削除されました。
- 境界チェック付きインタフェース TR から: 境界チェック付きインタフェース。
- Unicode TR から: char16_t、char32_t、uchar.h。
- 2012年 正誤票 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO store)
- DR 411 の修正
- 2013年 セキュアコーディングルール TS (ISO/IEC TS 17961:2013) (ISO store) (June 26, 2012)
- 2014年 FP TS パート1: 2進浮動小数点算術 (ISO/IEC TS 18661-1:2014) (ISO store) (2013 draft )
- IEC 60559:2011 のすべての基本的な要件といくつかの推奨事項をカバーするための C11 (ほとんどは Annex F) への変更を提供します (C11 は IEC 60559:1989 をベースにしていました)。
- 2015年 FP TS パート2: 10進浮動小数点算術 (ISO/IEC TS 18661-2:2015) (ISO store) (2015 draft)
- 10進浮動小数点算術に対する IEC 60559:2011 のすべての要件およびいくつかの基本的な推奨事項をサポートするための C11 への変更を提供します。 これは ISO/IEC TR 24732:2009 に取って代わります。
- 2015年 FP TS パート3: 交換および拡張型 (ISO/IEC TS 18661-3:2015) (ISO store) (2015 draft)
- 算術用および非算術用両方のための、拡張浮動小数点フォーマットおよび交換用フォーマットに対する、 IEC 60559:2011 の推奨事項をサポートするための C11 への変更を提供します。
- 2015年 FP TS パート4: 補助関数 (ISO/IEC TS 18661-4:2015) (ISO store) (2015 draft)
- π単位の三角関数、平方根の逆数、複利などを含む、 IEC 60559:2011 によって推奨されるすべての数学演算をサポートするための C11 への変更を提供します。
- 2016年 FP TS パート5: 補助属性 (ISO/IEC TS 18661-5:2016) (ISO store)(2016 draft)
- IEC 60559:2011 によって推奨されるすべての補助属性 (評価モデル、例外処理、再現性など) をサポートするための C11 への変更を提供します。
- 2018年
C17
(ISO/IEC 9899:2018) (ISO Store) (Final draft)
- ATOMIC_VAR_INIT の非推奨化および以下の欠陥報告に対する修正が含まれます。
[編集] 今後の動向
- 並列処理 TS (Draft n2017 2016-03-10)
- トランザクショナルメモリ TS (Draft n1961 2015-09-23)
-
C2x
(Draft n2479 2020-02-05): 次のメジャーな C 言語標準の改訂
- TS から (言語): 10進浮動小数点型
- C++ から (言語): 引数1個の
_Static_assert
、属性、 u8 文字定数、旧形式の関数宣言および関数定義の削除 - TS から (ライブラリ): 拡張2進浮動小数点算術、10進浮動小数点算術
- POSIX から (ライブラリ): memccpy()、 strdup()、 strndup()、 asctime_r()、 ctime_r()、 gmtime_r()、 localtime_r()
- DR ステータスが与えられていない問題のリスト: n2297 (2018-09-24)
- C11 発行後の欠陥報告のリスト (C2x に予定されているものも含む): n2316 (October 2018)
[編集] 関連項目
C++ の歴史 の C++リファレンス
|
[編集] 参考文献
- The Development of the C Language by Dennis M. Ritchie
- Rationale for the C99 standard