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