Red Hat engineers write about GCC, C++ internals, Docker storage, NTP and other Linux systems topics.
HN links it for compiler and storage explainers, such as GCC's RTL internals and Docker storage scalability, including a post whose author joined the discussion.
You've absolutely misrepresented the problem, presumably for effect. It's a far more subtle problem; the question is whether compiler writers should not only make their analyses and transformations be safe in the presence of valid code, but also safe in the presence of invalid code.
This is ironically mainly a problem because older compilers acted normally on some undefined code. So more modern optimising compilers will expect defined behaviour and so forth, leading to new bugs reported in old code. These bugs were always present, they just appear only now.
It's not the compiler trying to exploit the undefined behaviour deliberately; it's that the compiler is expecting the behaviour to be defined and behaving accordingly. So if you have
int x = *foo;
if (foo == NULL) {
ERROR();
}
then clearly in valid C, the if statement will never be taken, so it's safe to remove it. This is something you'd want to happen in most cases, it just so happens that in the above case you might not want it to.
In terms of whether the fraction of a percent is worth it, well the people who do most of the development of the compilers is large companies like Google, and they don't do it out of the goodness of their hearts, they do it because the benefit of having high performance compilers is worth the expenditure.
In terms of whether other languages are better, of course they are for many tasks, but C is king of the embedded world, where implementing a full…
since you got no response:
- scrapers, spider/crawler and content extractor for NLP analysis
- analyze your hard drive for old, duplicate etc files
- Arduino/raspberry pi (challenging, very little RAM, can't use c++11, stdlib, etc
- CUDA
_____________
also you want to look at VC++, clang and gnu toolsets, e.g. "#pragma once" and the C++14 refinements. Meyers Modern Effective and Effective 3rd ed books are great for that. Also Lippman et al's primer
_________________
compiler blogs: http://blogs.msdn.com/b/vcblog/
http://blog.llvm.org/
http://developerblog.redhat.com/tag/c/
You also could run your own DNS resolver on your local device and do the DNSSEC validation there.
One example of this bundled up in a way that is easy to install is DNSSEC-Trigger: https://nlnetlabs.nl/projects/dnssec-trigger/
More info in this blog post from Red Hat: http://developerblog.redhat.com/2015/04/14/writing-an-application-that-supports-dnssec-in-rhel-and-fedora/
Given that Redhat is beginning to backport a larger number of newer platforms [1], I'd expect them to eventually include newer Apache & mod_ssl editions. Hopefully the CentOS folks will be able to pick this stuff up, or duplicate the functionality if RH isn't open-sourcing the bits that make it work.
1: http://developerblog.redhat.com/2013/09/17/shared-dev-rhscl/
I don't think there was anything specific about C++11 that would have forced every implementation to change their ABI.
IIRC, one of the most significant was a change that made copy-on-write an invalid (or at least much more difficult) implementation for std::string, and gcc's std::string was CoW.
http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/
[author of the article]
The RTL dump format does look a lot like Lisp, FWIW; see: https://gcc.gnu.org/onlinedocs/gccint/RTL.html
or this article I wrote a while back on it:
http://developerblog.redhat.com/2014/09/16/improving-gccs-internals/
(This aspect of GCC is probably the oldest, written by RMS back in the late 1980s, I believe).