時は2016年、プログラミング言語Cの言語仕様は2度のメジャーバージョンアップを経て、"ISO/IEC 9899:2011"(通称 C11)にたどり着きました。ところで誰か使ってるの?
もちろん、これでC言語の進化が止まったわけではありません。次世代標準 C2x に向けた検討が始まっているのです。C2xリリーススケジュールとして、2021年末までの検討作業、2022年末までの国際標準(IS)発行が予定されています。
C2x憲章
ISO/IEC JTC1/SC22/WG14 N2086 "Programming Language C - C2x Charter"より、プログラミング言語Cの 次世代標準 C2x に向けて、基本原則として考慮される15項目のリストを訳出しました。各項目では冒頭の要約文のみを訳出しているため、詳細について知りたければ原文を参照ください。
オリジナル原則
1. Existing code is important, existing implementations are not.
1. 既存コードは重要だが、既存の処理系は重要でない。
2. C code can be portable.
2. Cコードはポータブルであるべき。
3. C code can be non-portable.
3. Cコードはポータブルでなくてもよい。
4. Avoid “quiet changes.”
4.「静かなる変更」は避ける。
5. A standard is a treaty between implementor and programmer.
5. 標準とは処理系1実装者とプログラマ間の約定である。
6. Keep the spirit of C.
6. 「Cの精神2」を維持する。
C99で追加された原則
7. Support international programming.
7. 国際化プログラミングをサポートする。
8. Codify existing practice to address evident deficiencies.
8. 明白な欠陥を扱う既存プラクティスを成文化する。
9. Minimize incompatibilities with C90 (ISO/IEC 9899:1990).
9. C90(ISO/IEC 9899:1990)との非互換性を最小化する。
10. Minimize incompatibilities with C++.
10. C++との非互換性を最小化する。
11. Maintain conceptual simplicity.
11. 概念の単純さを維持する。
C11で追加された原則
12. Trust the programmer, as a goal, is outdated in respect to the security and safety programming communities.
12. セキュリティと安全なプログラミング・コミュニティに関して、目的としての「プログラマを信頼する3」は時代遅れである。
13. Unlike for C99, the consensus at the London meeting was that there should be no invention, without exception.
13. C99とは異なり、ロンドン会合4の総意として発明をすべきでない。例外はない。
14. Migration of an existing code base is an issue.
14. 既存コードベースのマイグレーションは争点となる。
C2xで追加された原則
15. Application Programming Interfaces (APIs) should be self-documenting when possible.
15.アプリケーション・プログラミング・インタフェース(API)は可能な限り自己記述的であるべき。