Criteria for GCC 4.0
Theodore Papadopoulo
Theodore.Papadopoulo@sophia.inria.fr
Fri Jun 4 19:57:00 GMT 2004
The mere fact that this number topic is so discussed means that
something is missing in the current release numbering scheme.
abraham@dina.kvl.dk said:
> If we never have a 4.0 release, then the major version number is
> redundant, and can be optimized away for space. The next version will
> then be GCC 5 (short for GCC 3.5). 5.x will be bug-fix only releases,
> and the next release with new features will be 6.
If a major number is never useful, one might argue that then the
rules are too stringent...
On the other hand, one expects the major number not to change too often.
I tend to believe that major numbers should be kept stable for at least
6--10 years, and have at least around 10 releases in between. Changing those
more often tend to give the impression of an unstable product, never changing
it gives the impression (wrong sure) that nothing changes...
Another problem is users' perception. Bumping major number is
interpreted in different manners (user perception may vary from one
product to an another):
- Some people consider x.0 releases as unstable and not usable.
- Other consider that it is the first "usable" release (not
yet extremely stable, but enough to work for most people). Usually,
this perception happens with products that had a long x.99 or beta
history (but note that despite several test-release candidates,
no one trusted the 2.6.0 linux kernel to base a distribution upon
it).
These numbers are also for communicating with users.
The rank (major, minor, etc..) of the number change should somehow
show the troubles of doing an upgrade for user joe (not through
upgrading a full (eg linux) distribution).
Assumption: the version number is major.minor.sub.
There are (at least) 5 types of events that need to be communicated
to users (Joe users not distrib managers):
1 Upgrade is simple and brain-less, right now sub is changed and I
think everyone is happy with that rule.
2 Upgrade is not too difficult contains some differences but those
are basically small, and upgrading/recompiling you own code is
estimated to be in the range of a week (put your own limit here,
week is just an indication) on average for one
developer (big codes usually have more than one developer).
It is OK to remove obsolete ports (does not have effects on the
average), change flags, frontend syntax, etc...
Again, the rule adopted by GCC for this case seems appropriate,
and no-one complains.
3 Upgrade is difficult (ABI break, major language change, ...).
But expected quality (whatever that means) still increases
monotonically.
4 Indicate that the quality may be (temporary) lower because a
major piece of development has been made and has not yet received
the same level of testing as the rest of the code. Regressions
(missing ports, missing languages, missing features, slower
compilations times, full redesigns, ...) are allowed.
The release is made to obtain not for use in productions systems
but for testing "in the large" purpose. These are the usual
test-releases or alpha-beta releases... which gcc does not have.
Importantly, this gives developers more time to polish the new
code. Complains of users about decreasing quality (speed of
compilation , size or speed of the code, ...) or stability
can be registered (and treated eventually) but waved with "this is still beta
code".
5 Indicate that after a decrease of quality, the quality level is
now again to the level it was before the decrease.
GCC is doing 1 and 2 very well IMHO, 3 and 4 is unclear to me (basically
all this 3.5/4.0 discussion is because situations 3 and 4 are not
distinguished currently), and 5 simply does not exist.
Back to GCC:
As a standard user, I do not care so much about next version of gcc
to be called 3.4.99.0 (the 99 indicating that it is a beta),
3.5.beta.0 3.5 (test candidate 0) or 3.99.0 or even 4.beta.0 .
What I want is an indication of the risk I take in installing the
new compiler and using it.
----------------------------------------------------------------------
A way of sending all the 5 messages above (an possibly more) through
(extended) version numbers should be designed and published on the web
and then used.
----------------------------------------------------------------------
The next version of GCC with its totally new fortran front-end,
without ada, and with all the ssa work (all of high quality sure, but
much less tested code) seems to fall in category 4 in the current
state of the code and from what I get from reading this list...
Both the 3.5 and 4.0 camps seem to have reasonable arguments. But bumping
to 4.0 now would preclude bumping the major number again soon and I
do not know what is in preparation for the short future that would be
more dramatic than the current change...
What is sure is that I want something that means "This version is somewhat
beta" now, and a message "This is as good (and even better) than 3.4.x was"
when ada will be integrated, f95 and ssa more tested, ....
Another problem is that the message is global for all languages, whereas
their states are really different... One "beta" version for fortran
might be a perfect release candidate for C/C++.
After having considered all this, my silly (and certainly stupid)
proposal would be:
3.5.test.0 and a version string containing also the information
"(c/c++: ok, gfortran: beta, ada: missing)". The 3.5.test series
end up when all the states for the supported languages become ok
and get the 3.5.0 version number. If 4.0 is the decided target for
the version number, the same thing could be applied.
Practically, this basically also means that the normal rules for the test
releases are somewhat relaxed and that for that cycle of development
3.5.test.x might have more radical changes than eg 3.5.x changes (new
languages, new ports, bug corrections, ...).
My 0.0002 euros on the gcc version numbering issue....
Sorry for this very long E-mail...
--------------------------------------------------------------------
Theodore Papadopoulo
Email: Theodore.Papadopoulo@sophia.inria.fr Tel: (33) 04 92 38 76 01
--------------------------------------------------------------------
More information about the Gcc
mailing list