<story><title>Checked C</title><url>https://github.com/microsoft/checkedc</url></story><parent_chain><item><author>cwfowler</author><text>Non-standard is one of the biggest drawbacks of Rust. If there were a standard and &lt;i&gt;independent&lt;/i&gt; Rust equivalents of gcc, clang, icc and Visual C, then the decision to &lt;i&gt;try out&lt;/i&gt; Rust would be easier.&lt;p&gt;One reference implementation is a lock-in, not only technologically, but also socially in terms of a community that is too monolithic for its own good.</text></item><item><author>pornel</author><text>I don&amp;#x27;t expect it to get traction.&lt;p&gt;• C is valued for being super portable and compatible with every platform, including legacy ones, but this applies to specifically C89 or C90, and nothing else. As soon as you embrace new features, it&amp;#x27;s not your universal C any more. You&amp;#x27;re going to need newer compilers, new tooling, and that&amp;#x27;s almost like starting with a new language.&lt;p&gt;• C users have mostly self-selected themselves to like C the way it is: a small, flexible, zero-overhead language that isn&amp;#x27;t C++. Addition of checked containers, generics, and restrictions on pointer arithmetic, etc. make checked C not feel like C any more.&lt;p&gt;• Checked C still needs refactoring of the code. For large established codebases this is still a lot of work, and still a risk of introducing new bugs. It&amp;#x27;s very tempting to settle on just running one more analyzer, sanitizer or fuzzer instead.&lt;p&gt;And in the end with all this effort, back-compat break, whole-codebase refactoring you&amp;#x27;re still left with the old C, with headers and include paths, sloppy macros, ancient stdlib, painful dependency management, etc.&lt;p&gt;If you&amp;#x27;re going to rewrite C incrementally to a more complex dialect, and require a newer non-standard compiler for it, you may as well run c2rust on it first.</text></item></parent_chain><comment><author>elteto</author><text>I would say give it time, you can&amp;#x27;t measure Rust with this yardstick (yet), Rust is a baby in terms of age.&lt;p&gt;Let&amp;#x27;s not forget that C is ~50 years old and yet having reliable, open-source, high-quality compilers is a thing of the past 20 years or so. Clang was born in the 2000&amp;#x27;s, GCC is much older but it wasn&amp;#x27;t that great of a compiler for some time. Same with VS.</text></comment>
<story><title>Checked C</title><url>https://github.com/microsoft/checkedc</url></story><parent_chain><item><author>cwfowler</author><text>Non-standard is one of the biggest drawbacks of Rust. If there were a standard and &lt;i&gt;independent&lt;/i&gt; Rust equivalents of gcc, clang, icc and Visual C, then the decision to &lt;i&gt;try out&lt;/i&gt; Rust would be easier.&lt;p&gt;One reference implementation is a lock-in, not only technologically, but also socially in terms of a community that is too monolithic for its own good.</text></item><item><author>pornel</author><text>I don&amp;#x27;t expect it to get traction.&lt;p&gt;• C is valued for being super portable and compatible with every platform, including legacy ones, but this applies to specifically C89 or C90, and nothing else. As soon as you embrace new features, it&amp;#x27;s not your universal C any more. You&amp;#x27;re going to need newer compilers, new tooling, and that&amp;#x27;s almost like starting with a new language.&lt;p&gt;• C users have mostly self-selected themselves to like C the way it is: a small, flexible, zero-overhead language that isn&amp;#x27;t C++. Addition of checked containers, generics, and restrictions on pointer arithmetic, etc. make checked C not feel like C any more.&lt;p&gt;• Checked C still needs refactoring of the code. For large established codebases this is still a lot of work, and still a risk of introducing new bugs. It&amp;#x27;s very tempting to settle on just running one more analyzer, sanitizer or fuzzer instead.&lt;p&gt;And in the end with all this effort, back-compat break, whole-codebase refactoring you&amp;#x27;re still left with the old C, with headers and include paths, sloppy macros, ancient stdlib, painful dependency management, etc.&lt;p&gt;If you&amp;#x27;re going to rewrite C incrementally to a more complex dialect, and require a newer non-standard compiler for it, you may as well run c2rust on it first.</text></item></parent_chain><comment><author>bitexploder</author><text>What an interesting take. Go, Python, Ruby and countless other languages only have one implementation and real community. I don’t think this is a real concern for most developers. As long as the language solves their problems and is well maintained with a community that trusts the language maintainers.</text></comment>