Clang version numbers

Trunk is always “the next version”, 3.6 is whatever is built from 3.6
branch.

Trunk is always "the next version", 3.6 is whatever is built from 3.6
branch.

> Why is the current build calling itself 3.7.0? Since 3.6 was just
> released, it seems it should be called 3.6.0 or something less confusing.
>
> Thanks!
> Robert
>

As a user, I find this confusing. The next version could easily be 3.6.1.
If someone gave me the current release today and I wanted to see what
features this 3.7 contained, I would quickly discover that 3.6 was the
current version, and would find this version suspect (unless it came from a
Time Lord). If I searched after the formal release of 3.7, I would expect
the 3.7 features listed and bugs corrected shown in the release notes to
exist in this version. What would be less confusing to me would something
like calling the current version 3.6.1, where an odd last digit implied an
interim version, and an even last digit an actual release.

3.6.1 is branched off off 3.6, not off trunk - what's happening on trunk
will only ever be seen in 3.7, not in any point release, etc. (well, not
quite the whole story, of course - bug fixes in 3.6.1 are generally
backported to trunk for 3.7 if they're still applicable (in some cases
trunk has diverged/fixed the bug in some other way instead))

3.6.1 is a dot release and will only contain commits that community decides to merge from trunk, most likely bug fixes. Not sure how the odd/even schema you suggest makes anything more intuitive (apart that it matches what linux kernel does), users would still have to know about the meaning of our numbers.

I think the only confusing point is that trunk has a version, not sure if we really need this? I’d expect -version to just say ‘trunk’ + revision number.

Possible reasons I can think of for trunk having a version:
* compiler version macros
* simpler scripts for dealing with version arithmetic
* so you can guess within which time frame that trunk is from

I think the compiler could still set the macros to Current+1, but
print the version like "3.7-svn-NNNNNN", so people don't get confused.

cheers,
--renato

I think the only confusing point is that trunk has a version, not sure if we
really need this? I’d expect -version to just say ‘trunk’ + revision number.

Possible reasons I can think of for trunk having a version:

  • compiler version macros
  • simpler scripts for dealing with version arithmetic
  • so you can guess within which time frame that trunk is from

I think the compiler could still set the macros to Current+1, but
print the version like “3.7-svn-NNNNNN”, so people don’t get confused.

This is very close to what we do now, and it confuses people frequently. 3.7-blah sounds like a later version than 3.7.

How about 3.7pre-svn-NNNNNNNN?

Thank both you and David for your explanations. I agree with you on both points. Having an advance version number on trunk is the confusing part for me. I had just built a new Clang right after 3.6 was released and was surprised to see 3.7. I’d expected something saying it was based on 3.6.

or that. :slight_smile:

That makes better sense to me. I was about to suggest something like 3.7wannabe-NNNNNNNN… The “pre” makes it clearer.