{"id":5363,"date":"2007-11-06T01:44:00","date_gmt":"2007-11-06T01:44:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2007\/11\/06\/iso-c-standard-update\/"},"modified":"2019-02-18T18:54:18","modified_gmt":"2019-02-18T18:54:18","slug":"iso-c-standard-update","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/iso-c-standard-update\/","title":{"rendered":"ISO C Standard Update"},"content":{"rendered":"<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">Hello!<span>&nbsp; <\/span>My name is Arjun Bijanki, and I&rsquo;m the test lead for the Visual C++ compiler.<span>&nbsp; <\/span>I&rsquo;m also Microsoft&rsquo;s representative on the <\/font><a href=\"http:\/\/www.open-std.org\/JTC1\/SC22\/WG14\/\"><font face=\"Calibri\" size=\"3\">ISO C standard committee<\/font><\/a><font size=\"3\"><font face=\"Calibri\">.<span>&nbsp; <\/span>I recently returned from one of the committee&rsquo;s semiannual meetings (this one was in Kona, Hawaii &ndash; tough trip! <\/font><span><span>J<\/span><\/span><font face=\"Calibri\">)<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">These days, the committee is thinking hard about the next revision to the C standard (unofficially termed C1x, where 0&lt;=x&lt;=9).<span>&nbsp; <\/span>At the meeting, the group discussed the <\/font><a href=\"http:\/\/www.open-std.org\/JTC1\/SC22\/WG14\/www\/docs\/n1250.pdf\"><font face=\"Calibri\" size=\"3\">charter<\/font><\/a><font face=\"Calibri\" size=\"3\"> for the next revision.<span>&nbsp; <\/span>For C users, the whole document is interesting reading, but I wanted to draw your attention to the Additional Principles for C1x:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">12. <i>Trust the programmer<\/i>, as a goal, is outdated in respect to the security and safety<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">programming communities. While it should not be totally disregarded as a facet of the<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">spirit of C, the C1Xversion of the C Standard should take into account that programmers<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">need the ability to check their work.<\/font><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Calibri\" size=\"3\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">13. Unlike for C9X, the consensus at the London meeting was that there should be no<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">invention, without exception. Only those features that have a history and are in common<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">use by a commercial implementation should be considered. Also there must be care to<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">standardize these features in a way that would make the Standard and the commercial<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">implementation compatible.<\/font><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Calibri\" size=\"3\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">14. Migration of an existing code base is an issue. The ability to mix and match C89,<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">C99, and C1X based code is a feature that should be considered for each proposal.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">Migration is definitely important &ndash; I&rsquo;d even call it a basic requirement &#8212; but I find the other two principles more interesting.<span>&nbsp; <\/span>#12 reflects the industry&rsquo;s increased focus on security over the last 10 years, and it&rsquo;s great to see the committee embracing that.<span>&nbsp; <\/span>It&rsquo;s not surprising, given the committee&rsquo;s work on <\/font><a href=\"http:\/\/www.open-std.org\/JTC1\/SC22\/WG14\/www\/projects#24731\"><font face=\"Calibri\" size=\"3\">TR 24731<\/font><\/a><font size=\"3\"><font face=\"Calibri\"> (Bounds-checking Interfaces, which includes most of the _s functions available in VS 2005).<span>&nbsp; <\/span><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">The committee has also asked compiler vendors to present their most widely used language extensions for consideration.<span>&nbsp; <\/span>Features like <\/font><a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/dabb5z75(VS.80).aspx\"><font face=\"Calibri\" size=\"3\">extended attributes<\/font><\/a><font face=\"Calibri\" size=\"3\">, and <\/font><a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/9w1sdazb(VS.80).aspx\"><font face=\"Calibri\" size=\"3\">thread local storage<\/font><\/a><font face=\"Calibri\" size=\"3\">, which are shared by multiple implementations (e.g. Visual C++ and GCC) will receive special attention.<span>&nbsp; <\/span>In many cases, implementations will differ on syntax, but the underlying concepts will be similar.<span>&nbsp; <\/span>As principle #13 says, the committee will strive to maintain compatibility.<\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\">Now, the Visual C++ compiler team receives the occasionally question as to why we haven&rsquo;t implemented C99.<span>&nbsp; <\/span>It&rsquo;s really based on interest from our users.<span>&nbsp; <\/span>Where we&rsquo;ve received many requests for certain C99 features, we&rsquo;ve tried to implement them (or analogues).<span>&nbsp; <\/span>A couple examples are variadic macros, long long, __pragma, __FUNCTION__, and __restrict.<span>&nbsp; <\/span>If there are other C99 features that you&rsquo;d find useful in your work, let us know!<span>&nbsp; <\/span>We don&rsquo;t hear much from our C users, so speak up and make yourselves heard <\/font><span><span>J<\/span><\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">I should have another update from the C committee for you after the next meeting in April.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">Until next time,<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Calibri\" size=\"3\">Arjun<\/font><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello!&nbsp; My name is Arjun Bijanki, and I&rsquo;m the test lead for the Visual C++ compiler.&nbsp; I&rsquo;m also Microsoft&rsquo;s representative on the ISO C standard committee.&nbsp; I recently returned from one of the committee&rsquo;s semiannual meetings (this one was in Kona, Hawaii &ndash; tough trip! J) These days, the committee is thinking hard about the [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>Hello!&nbsp; My name is Arjun Bijanki, and I&rsquo;m the test lead for the Visual C++ compiler.&nbsp; I&rsquo;m also Microsoft&rsquo;s representative on the ISO C standard committee.&nbsp; I recently returned from one of the committee&rsquo;s semiannual meetings (this one was in Kona, Hawaii &ndash; tough trip! J) These days, the committee is thinking hard about the [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/5363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=5363"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/5363\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=5363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=5363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=5363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}