A Provenance-aware Memory Object Model for C [pdf]
This proposal, specifically it&#x27;s decision not to use the &quot;concrete semantics&quot;, violates several of the stated principles in the C2X charter [0]<p>Specifically &quot;1. Existing code is important, existing implementations are not&quot; the document relies heavily on what mainstream compilers currently do and making things easier to work with current implementations.<p>&quot;3. C code can be non-portable&quot; the proposed document seems to preclude the use of C as a &quot;high-level assembler&quot; in that it makes it seemingly undefined to do many simple conversions between a machine word and a pointer.<p>&quot;4. Avoid “quiet changes.”&quot; This seems to be a quiet change, depending on how one interprets the current ambiguity.<p>&quot;6. Keep the spirit of C&quot; Specifically (a) Trust the programmer. (b) Don&#x27;t prevent the programmer from doing what needs to be done. (c) Keep the language small and simple.<p>&quot;8. Codify existing practice to address evident deficiencies.&quot; The document acknowledges that existing code and compiler behavior have diverged.<p>&quot;11. Maintain conceptual simplicity.&quot; This is clearly much more complicated than the &quot;concrete semantics&quot; discussed and previously assumed given the prior ambiguity.<p>In contrast, I don&#x27;t see anything in the charter indicating the standards committee should try to retrofit existing implementations&#x27; overzealous optimizations onto the language spec. The closest are 6(e) &quot;make it fast&quot;, but the explanation there is talking about something different than opportunistic optimizations on a fixed architecture; and &quot;5. A standard is a treaty between implementor and programmer&quot;, but that appears to be talking about just the minimum sizes of various integer types.<p>[0] <a href="http:&#x2F;&#x2F;www.open-std.org&#x2F;jtc1&#x2F;sc22&#x2F;wg14&#x2F;www&#x2F;docs&#x2F;n2086.htm" rel="nofollow">http:&#x2F;&#x2F;www.open-std.org&#x2F;jtc1&#x2F;sc22&#x2F;wg14&#x2F;www&#x2F;docs&#x2F;n2086.htm</a>