Compilers in OpenBSD (2013)
marc.info
marc.info
http://compcert.inria.fr/compcert-C.html
EDIT: See also https://github.com/AbsInt/CompCert
The problem is, nobody wants to pay for its maintenance, hence it does not exist [2].
In the FOSS world, nobody is entitled to a pony.
Also it's rather ironic that it's an OpenBSD developer wanting this, considering http://www.tedunangst.com/flak/post/long-term-support-consid... - how does that reasoning not apply to compilers?
[1] including of course the all-important Motorola 88k back-end!
[2] with very few exceptions: RHEL, SLES
Just try to update a compiler version on a large code base, specially in corporations where developer tools are managed by IT support.
I wonder what it would take to make Rust 1.0 + LLVM into an LTS?
http://en.wikipedia.org/wiki/Long-term_support
The basic idea is that once released, the LTS version of the compiler would continue to receive fixes and updates for several years (at least two according to Wikipedia), no matter how many new versions are released during that time.
Good luck with that. I tried to go on with the Ubuntu's LTS once, and the logic definitely doesn't work. Bugs, even major ones, just pile up faster than the remaining couple developers can fix, and it's was too painful of an experience to repeat. Ubuntu LTS has shelf life of 6-12 months unless if you start paying. Which is unfortunate.
Yep. I see this a lot in the scientific world. Clusters and other high-performance hardware run old versions of Scientific Linux or CentOS (because they are well-supported and the bugs are known). However, a lot of open source project (e.g. in machine learning) expect you to run the latest Ubuntu or OS X version. Result: you usually end up hand-compiling large amounts of software, manually adding '-I' and '-L' flags to oddball build systems that don't pick up CFLAGS or LDFLAGS correctly.
Nobody cares about backwards compatibility, everyone wants the new toys.
So you want something for nothing. Why exactly would Ubuntu (or anybody else) want you as an user?
or miod taking is sherlock holmes hat to solve a GCC bug http://www.onlamp.com/pub/a/bsd/2003/10/02/openbsd_gcc.html
Yes I am a fanboy of miod, and I am not even ashamed.
Wont any LTS compiler be "too old" quickly?
First one: the quality of ports varies from project to project. There's code out there that depends on certain gcc-specific extension, compiler quirks, bugs, you name it. C++ is insanely complex and features just keep piling on. I bet the moment C++17 is available some projects start using certain features because they can. In this case C++ is a moving target and it's hard to imagine LTE C++ compiler for open source projects.
Second one: AFAIK only gcc's standard library has support for all of the wacky constructs C++ requires. You're probably out of luck if you try to compile C++ code with thread local storage intermingled with exceptions and you want to depends on non-GPL musl or bionic (which would be important for projects like OpenBSD). And there's code depending on that in ports, you can bet on it.
Until these problems are solved[1], OpenBSD won't migrate. LLVM could become the LTS compiler for projects that would benefit from using it, but it doesn't look like a complete operating system is a project that would fit.
[1] plus some others, like backends available for more than x86/64, arm, mips, PPC, Sparc and z (or whatever the list is today); OpenBSD supports quite a few esoteric platforms
pccm is naturlly where they're headed. It's just not ready yet.
Users can use a different compiler by specifying it on the command line via e.g.
make CC=clang
Some people set CC=gcc
in their Makefile to force the usage of gcc. Never do this. Do this instead: CC?=gcc
That way users can still override the value of ${CC} on the command line if they want to.This is only relevant if you want portability to other versions of Make. I simply don't care about anybody who's not using GNU Make these days. Try it yourself: command line options override variables in makefiles unless "override" is specified for that assignment.
Why again?