From owner-freebsd-questions@FreeBSD.ORG Wed Jun 20 17:40:08 2012 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3351F1065672 for ; Wed, 20 Jun 2012 17:40:08 +0000 (UTC) (envelope-from perrin@apotheon.com) Received: from oproxy7-pub.bluehost.com (oproxy7.bluehost.com [IPv6:2605:dc00:100:2::a7]) by mx1.freebsd.org (Postfix) with SMTP id E85DB8FC15 for ; Wed, 20 Jun 2012 17:40:07 +0000 (UTC) Received: (qmail 13092 invoked by uid 0); 20 Jun 2012 17:40:07 -0000 Received: from unknown (HELO box543.bluehost.com) (74.220.219.143) by oproxy7.bluehost.com with SMTP; 20 Jun 2012 17:40:07 -0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=apotheon.com; s=default; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:Subject:To:From:Date; bh=ImNSEzlSkglcXe6dU6uG8/uaD8RSxUtPWC8vHox1CQo=; b=eqiJrZEX2W71QLmMKoRRUWVUAfMqPapA35c5GMRloPfn3CYlGoIPqweNr27SX0S/PaabFLw0IcfiXPmRX+RQbaWNiFdXMwGuk7bvbdYmlBu6iM65eWvVNrZrEFh77IcF; Received: from [24.8.180.234] (port=63895 helo=localhost) by box543.bluehost.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.76) (envelope-from ) id 1ShOsw-00073W-9d for freebsd-questions@freebsd.org; Wed, 20 Jun 2012 11:40:06 -0600 Date: Wed, 20 Jun 2012 11:40:05 -0600 From: Chad Perrin To: freebsd-questions@freebsd.org Message-ID: <20120620174005.GC23095@hemlock.hydra> Mail-Followup-To: freebsd-questions@freebsd.org References: <854D02B1-CA89-4F5E-8773-DB05F2868D74@lpthe.jussieu.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Identified-User: {2737:box543.bluehost.com:apotheon:apotheon.com} {sentby:smtp auth 24.8.180.234 authed with perrin@apotheon.com} Subject: Re: CLANG vs GCC tests of fortran/f2c program X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 17:40:08 -0000 On Wed, Jun 20, 2012 at 11:09:23AM +0200, Wojciech Puchar wrote: > >1. gcc will still be available through the ports system. > > As well as clang is available in ports. not an argument. No, it's not an argument all by itself. It's *part* of an argument. > > > >2. The move to clang/llvm as a default compiler will reduce the amount > >of GPL code in the base system, eventually reducing distribution > >issues (especially for 3rd parties). > > true. But JUST reducing GPL code should be a target per se. > FreeBSD is about performance and quality not politics or religion. FreeBSD needs to be able to keep up with bug fixes and support for C and C++ language standards to maintain quality. It needs to avoid licensing that discourages use to maintain relevance, development resources, and productive value, all of which contribute to quality. Performance differences between Clang and GCC are at present so minor as to be considered negligible except for the most pathological edge cases, and Clang performance is improving at a rapid pace that suggests it will soon be a clear performance improvement over GCC. The Clang codebase is more modular and less of a tangled mess, by all accounts, which improves maintainability, extensibility, fixability, and advance-ability, which may be why "In LLVM/Clang [a char type incrementation bug] was not known but was fixed in less than 24 hours," while "In GCC the bug is known and has existed for some time." http://blog.regehr.org/archives/482 In short, as FreeBSD as a whole is to something like Microsoft Windows with regard to stability, bug fixing, and ease of maintenance, so it seems Clang is to GCC. That's not "politics or religion." That's a very real-world, practical benefit to using Clang, to say nothing of the benefit of not having to jump through political, religious, or legal hoops to redistribute something distributed under a copyfree license like Clang, as contrasted with something distributed under a copyleft license like GCC. > > > >3. clang/llvm provides better error and warning messages, as well as > >good static code analysis, which helps reduce some classes of bugs and > >eventually will result in a more reliable FreeBSD system. > > as with 1 - you may use clang when developing. Thank you for such permission. I didn't need it, and I doubt anyone else did, either. > > > >4. clang/llvm is improving quickly. > > When/If it WILL actually improve to be better than gcc it should be > imported to FreeBSD. not sooner. Looking to the future helps ensure that we can choose something that will be better in the long run now, get involved early, and thus help it improve more quickly as well as helping ensure that its "improvements" are to some extent suitable to our uses. Stop thinking about a fiscal period obsessed CEO, and start thinking long-term. > > > >5. clang/llvm is more modular than gcc, although there are plans for > >gcc to become as modular, it will take time. > > Doesn't matter how it is written, but how it performs. How it is written matters for purposes of ensuring faster and less problematic fixes when problems arise. Think long-term for a change. > > > >6. gcc produces faster code, but clang/llvm will eventually (soon > >enough) get there. > > This is your prediction. Not definite fact, mine and other > predictions are different. By the same token, GCC getting greater modularity is not a definite fact, and I would prefer a compiler it will be easier to maintain for future stability, security, and correctness, over one with a generally negligible performance advantage. > > > >7. From the reasons above, it makes sense to complete a task sooner > >rather than later, especially that clang/llvm isn't showing any signs > >of weakness (lack of development power, etc). > > NOBODY prevent you and FreeBSD developers to fix things already - so > FreeBSD and ports would compile with both compilers. > > Actually it is good to fix it already, as making programs compile > with both means usually fixing non-portability bug which would help > using third compiler that may possibly emerge. > > But this DO NOT require clang to be a part of main system. As well > as making it default. It also does not require GCC to be part of the base system, or to be the default, so this point in your argument is moot. > > > >8. There might be more reasons for or against, but I couldn't think of any. > > Against: > > All "for" arguments assumes clang WILL be better. This is a change > as less than 2 days before it was stated to already be better. It is, in many respects, already better. It produces more-correct output than GCC; it does not pollute the base system with copyleft licensing; it does not pollute "intermediate code" representations combined or transformed by other tools during compilation with copyleft licensing; it has a better architecture for maintenance, which bears directly on the ability of FreeBSD developers to contribute to its development and on the likelihood of the compiler maintaining stability, currency, and correctness in the future; it shows far greater beneficial improvement over time than GCC, suggesting much better development support; upstream development is much more responsive to the needs of downstream users and redistributors, including the FreeBSD project; it includes interesting project initiatives, including one that may ultimately obviate the need for Oracle's troublesome JVM; et cetera. If nothing else, the more-correct output should trump negligible performance differences that are likely to evaporate in the near future, especially considering how long GCC has had to clean up its output problems and consistently failed to do so. > > As a comparision - DragonFly BSD is stated to have better ideas that > would result in better performing system in a future. > > But FOR NOW it is much worse performer than FreeBSD that's why i > (and lots of other people) does not switch to DragonFly but of > course will when(and if) DragonFly BSD will actually be better. And > i don't really think this "IF" will happen at all, but i wish to > DragonFly BSD i am wrong. > > Same should be used for clang. AS LONG as it is not better it should > not be imported into base system or worse - used as default. It is better. It just isn't better for the specific cases *you* consider important, even when those cases are of questionable value in the vast majority of circumstances and the ways in which it is better that you ignore are far more broadly applicable. > > Making decision based on wishes and personal likes instead of > technical facts isn't something that anyone should be proud about. So . . . stop doing it. Wishing away other factors does not mean they do not exist. > > As for your words about doing decision good for FreeBSD, not me - it > is pure nonsense attacks because anything that is good for FreeBSD > quality is good for me, and the reverse. That's only true if everyone else measures "quality" the same way you do. Saving three seconds per day on specific tasks is not likely to be the sole factor in most people's determinations of quality. > > The decision of switching to clang now it shows that ideologic and > "religious" arguments won over technical arguments. > > The agressive and data-manipulationg reactions of many people on > that list shows that above sentence is true. When you refuse to assume good faith at first encounter in discussion, you just make everyone into your enemy. This pretty well ensures that the majority of people will ignore your concerns, no matter how valid they may (or may not) be. Try approaching a discussion with the attitude that it is an opportunity for both you and the other party to each learn something from the other, rather than with the attitude that if anyone starts out disagreeing with you that person must be a malevolent entity bent on the destruction of all that is good and right in the world. > > This IMHO much change. What does that H stand for? It sure as hit ain't "humble". -- Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]