WG14 N3279 | 2024-02-28 | Jakub Łukasiewicz
This is a quick note mapping the principles from rewritten charter
N3280
to the principles listed in old line of charters, the last one being
N2611.
Most of principles are a rewording, a remix, a generalization, or an evolution of the old ones:
- Uphold the character of the language
- Keep the language small and simple
- 6c. Keep the language small and simple
- 11. Maintain conceptual simplicity
- Facilitate portability
- 2. C code can be portable
- Uphold the potential for high performance
- 6e. Make it fast, even if it is not guaranteed to be portable
- Allow programming freedom
- 2. C code can be non-portable
- 6a. Trust the programmer
- 6b. Don't prevent the programmer from doing what needs to be done
- Codify existing practice to address evident deficiencies
- 8. Codify existing practice to address evident deficiencies
- 13. Unlike for C99, the consensus at the London meeting was that there should be no invention, without exception
- Do not prefer any implementation over others
- 1. Existing code is important, existing implementations are not
- Ease migration to newer language editions
- 1. Existing code is important, existing implementations are not
- 9. Minimize incompatibilities with C90 (ISO/IEC 9899:1990)
- 14. Migration of an existing code base is an issue
- Avoid quiet changes
- Enable secure programming
- 6f. Make support for safety and security demonstrable
- 12. Trust the programmer, as a goal, is outdated in respect to the security and safety programming communities
- 15. Application Programming Interfaces (APIs) should be self-documenting when possible
- Enable functional safety
- 6f. Make support for safety and security demonstrable
- 12. Trust the programmer, as a goal, is outdated in respect to the security and safety programming communities
- 15. Application Programming Interfaces (APIs) should be self-documenting when possible
- Uphold interoperability
- 9. Minimize incompatibilities with C90 (ISO/IEC 9899:1990)
- 10. Minimize incompatibilities with C++
- Follow international standards
- 7. Support international programming
But there are also brand new additions:
- Avoid ambiguities
- Do not leave features in an underdeveloped state
- Ease library independence