STeve Andre' [and...@msu.edu] wrote: > On 07/07/11 15:12, Amit Kulkarni wrote: > >>The developers don't adopt new things just because they're new. > >>If something isn't reasonable, useful and secure it isn't used. This > >>is one reason why each new release of OpenBSD doesn't have the > >>currently released version of gcc, for example. > >Wrong. It is because of GPL v3. Gcc in base won't be updated AFAIK. > No, this has always been the case. I remember back around 2.5 or > so, seeing that OpenBSD hadn't upgraded to the latest gcc, wondering > why. > > The GPL 3 issue of today is relevant, but it extends beyond that. >
For GCC after 4.2.1, the license is the problem. That is why OpenBSD has 4.2.1+fixes instead of something newer "import of gcc-4.2.1, the last gcc release under GPLv2". Same thing is happening right now with binutils 2.17. When OpenBSD went to 2.95.3, to 3.3.5, and again to 4.2.1, the problem each time was the amount of effort required to make it work. When the behavior in GCC changes, or when you run into new compiler bugs, it's a time-consuming problem that disrupt work going on in the system. With the 4.2.1 upgrade, problems with GCC store re-ordering "optimization" extended into 4.8 release, affecting critical areas like bus_dmamap_sync(). Of course the bulk of the compiler upgrade problems were solved before 4.8. (Solved because people took time to track down, identify and fix those problems.) It's a pain in the ass to swich compilers. It ends up forcing people to troubleshoot code that isn't broken, slowing down other work until the actual compiler problem is identified and workaround applied. OpenBSD historically didn't upgrade compilers until the pain of sticking with the existing compiler met or exceeded the pain of upgrading the compiler. There were plenty of reasons to look at GCC 4 in base for several years now, but the increase in compile time (each generation of GCC is slower than the last) made a switch to GCC 4 less attractive. No consensus to move to GCC 4 was possible. What finally pushed GCC 3.3.5 over the edge was the broken C++ compiler (also not ABI compatible with G++ 4, so everything that linked to a G++ 4 program had to also be compiled with G++ 4. But people want their complex C++ ports to work) Four or five years from now when GCC 4.2.1+fixes becomes too painful, OpenBSD may adopt something new, who knows, maybe llvm or pcc will support more architectures by then? Maybe the GPL 3 will become OK? GCC 4.2.1 is working pretty damn well now.