Newer gcc swallow version control keywords
Oleg Goldshmidt
pub at goldshmidt.org
Fri Oct 21 21:46:26 IST 2011
Shachar Shemesh <shachar at shemesh.biz> writes:
> I understand why these keywords were useful for CVS/RCS, where each
> file had its own version number. When working with SVN, however, a
> single number uniquely identifies the entire source tree. Why not
> have that one number and get it done with?
I believe it has been asked and answered, Your Honour ;-).
Having a single number is enough only under a whole bunch of
assumptions: the code must come from a single branch of a single
repository, the build and release systems must be 100% reliable, no
human mistake may occur on the way between develper workstation and
customer deployment, etc., etc.
The same argument is employed by the gcc team who say - either in the
bug trail Nadav quoted or in the mailing list thread Ghiora (I think...
sorry if I am mixing it up) found - that it is enough for their
purposes so it must be enough for everybody.
I say that with all the complexity of gcc their case is conceptually
simple (a single piece of software from a single repository) and their
build/release process is probably better than most. I assume that I do
not have to explain to everybody that the difficulties inherent in
changing processes in an organization are significant, legacy
structures and processes abound, and every device that helps flushing
problems early, quickly, and with minimal pain is worth deploying.
So, my conclusion is that gcc at present has a problem. By applying an
optimization that cannot be turned off it makes an assumption that it
is smarter than the user[1] (isn't this a complaint typically aimed at,
say, Microsoft Office? hmphhh...), and an important use case that is
disabled by said optimization is dismissed, in part, on the grounds
that the gcc team didn't need it in gcc code.
This last paragraph is, of course, me venting. At people who are in no
way to blame. That was easy, and helpful - thanks everybody!
[1] Hey, we see that this variable cannot possibly be used by any
program of which it is a part of, so we'll assume you are either
stupid or careless and we'll just erase it without trace. Well, I
am not stupid, I intended this variable to be used by another
program to which this program is but an input, and you know what:
it's none of the compiler's business to decide that I cannot
possibly want that.
--
Oleg Goldshmidt | pub at goldshmidt.org
More information about the Linux-il
mailing list