Re: GCC multi-version development layout

Heime via Gcc-help <[email protected]> Mon, 20 Apr 2026 21:21:03 +0000
Newsgroups gmane.comp.gcc.help
Message-ID <vj881NX_D7QzG3YEn2r5lAwRsv1rZR2rM5Eg6FX308jwrVjcTxG6BxJkPp7Q-ooI9Mwkwngiy2yqkh2WmYQLqTDPVlEGFBv2zeh0ae1CNkU=@protonmail.com>
On Monday, April 20th, 2026 at 6:26 PM, Jonathan Wakely <[email protected]> wrote:

> On Mon, 20 Apr 2026 at 16:57, Heime <[email protected]> wrote:
> >
> > On Monday, April 20th, 2026 at 5:35 PM, Jonathan Wakely <[email protected]> wrote:
> >
> > > On Mon, 20 Apr 2026 at 16:23, Heime <[email protected]> wrote:
> > > >
> > > >
> > > > On Monday, April 20th, 2026 at 4:33 PM, Jonathan Wakely <[email protected]> wrote:
> > > >
> > > > > On Mon, 20 Apr 2026 at 12:39, Heime <[email protected]> wrote:
> > > > > >
> > > > > > On Monday, April 20th, 2026 at 10:28 AM, Jonathan Wakely via Gcc-help <[email protected]> wrote:
> > > > > >
> > > > > > > On Mon, 20 Apr 2026 at 09:25, Jonathan Wakely <[email protected]> wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Mon, 20 Apr 2026, 00:21 Heime, <[email protected]> wrote:
> > > > > > > >>
> > > > > > > >>
> > > > > > > >>
> > > > > > > >>
> > > > > > > >>
> > > > > > > >> Sent with Proton Mail secure email.
> > > > > > > >>
> > > > > > > >> On Monday, April 20th, 2026 at 12:34 AM, Jonathan Wakely via Gcc-help <[email protected]> wrote:
> > > > > > > >>
> > > > > > > >> > On Sun, 19 Apr 2026, 23:30 Heime, <[email protected]> wrote:
> > > > > > > >> >
> > > > > > > >> > > On Sunday, April 19th, 2026 at 7:50 PM, Jonathan Wakely via Gcc-help <
> > > > > > > >> > > [email protected]> wrote:
> > > > > > > >> > >
> > > > > > > >> > > > On Sun, 19 Apr 2026, 17:57 Xi Ruoyao via Gcc-help, <[email protected]
> > > > > > > >> > > >
> > > > > > > >> > > > wrote:
> > > > > > > >> > > >
> > > > > > > >> > > > > On Sun, 2026-04-19 at 16:33 +0000, Heime via Gcc-help wrote:
> > > > > > > >> > > > > > ----------------------------------------------------------------
> > > > > > > >> > > > > >
> > > > > > > >> > > > > > When building GCC from a cloned Git source tree using separate
> > > > > > > >> > > > > > directories (as recommended), the directory structure follows
> > > > > > > >> > > > > > a clean separation of source, build artifacts, and final
> > > > > > > >> > > > > > installation.
> > > > > > > >> > > > > >
> > > > > > > >> > > > > > With different version of gcc, how would be the typical layout
> > > > > > > >> > > > > > for specific branches to make patch changes to different gcc
> > > > > > > >> > > > > > versions with multiple builds and install?
> > > > > > > >> > > > >
> > > > > > > >> > > >
> > > > > > > >> > > > The layout doesn't matter at all. Anything will work.
> > > > > > > >> > > >
> > > > > > > >> > > > I have a directory ~/src/gcc/gcc for the git repo, where I work on trunk
> > > > > > > >> > > > and then directories ~/src/gcc/gcc-15 and ~/src/gcc/gcc-14 etc for each
> > > > > > > >> > > > release branch, using git worktree.
> > > > > > > >> > > >
> > > > > > > >> > > > I install each version to ~/gcc/X where X is 16, 15, 14 etc.
> > > > > > > >> > > >
> > > > > > > >> > > > But it really doesn't matter, anything works.
> > > > > > > >> > > >
> > > > > > > >> > > >
> > > > > > > >> > > > > See https://git-scm.com/docs/git-worktree.
> > > > > > > >> > > > >
> > > > > > > >> > > >
> > > > > > > >> > > > This is definitely the best way to manage the repo, so that every release
> > > > > > > >> > > > branch is just a worktree using the same repository metadata and config
> > > > > > > >> > > > settings.
> > > > > > > >> > >
> > > > > > > >> > > Have been scrutinising the development timeline page
> > > > > > > >> > >
> > > > > > > >> > > https://gcc.gnu.org/develop.html#timeline
> > > > > > > >> > >
> > > > > > > >> > > The new GCC versioning scheme announced for GCC 5.1 is
> > > > > > > >> > > not reliably described.  For instance, a major version
> > > > > > > >> > > number increases GCC X to GCC X+1 (no more GCC X.Y to
> > > > > > > >> > > GCC X.Y+1).
> > > > > > > >> > >
> > > > > > > >> > > The stage number does not seem to be added as a version
> > > > > > > >> > > (there is no GCC X.0.1 (for stage 1), GCC X.0.3 (for stage 3)),
> > > > > > > >> > > and so on.
> > > > > > > >> >
> > > > > > > >> >
> > > > > > > >> > That's correct.
> > > > > > > >> >
> > > > > > > >> >
> > > > > > > >> > >
> > > > > > > >> > > It would help if the page got updated with improved descriptions.
> > > > > > > >> > >
> > > > > > > >> >
> > > > > > > >> >
> > > > > > > >> > I don't see a problem with it, what improvement are you suggesting?
> > > > > > > >>
> > > > > > > >> The "Version DEV-PHASE When" table under "Version Numbering Scheme
> > > > > > > >> for GCC 5 and Up" shows GCC-5.Y.Z and GCC-6.Y.Z, which do not reflect
> > > > > > > >> the actual "Release Timeline" described as GCC-5.Y and GCC-6.Y.
> > > > > > > >
> > > > > > > > I don't agree and I don't see what's confusing about this.
> > > > > > > >
> > > > > > > > A release has Y != 0 and Z == 0
> > > > > > > >
> > > > > > > > The 5.2 release means 5.2.0 (which is already clearly stated
> > > > > > > > in the table). Is that the source of your confusion? You don't
> > > > > > > > understand what "5.2" means in the timeline? We could add ".0"
> > > > > > > > to every release in the timeline but IMHO that would make it
> > > > > > > > more cluttered for very little value.
> > > > > >
> > > > > > The confusion is the switch from GCC 4.9.4 release to GCC 5.1 release.
> > > > > > Do releases post GCC 4.9.4 in actual fact include an additional .0?
> > > > > > For instance, GCC 5.1 is actually GCC 5.1.0?
> > > > > >
> > > > > > > > The description of the version numbering is 100% accurate, and
> > > > > > > > complete. The release timeline is also 100% accurate but simply
> > > > > > > > omits the redundant ".0" on releases since 5.1.0, because it's
> > > > > > > > redundant. All releases since 5.1.0 have ".0" at the end, so
> > > > > > > > there's no need to say it on every release. It's implied, because
> > > > > > > > all releases end with ".0", as defined above the timeline.
> > > > > >
> > > > > > The implication vs reality is what creates the confusion.  If 5.1.0
> > > > > > is the release, what would be 5.1.1, 5.1.2, ... - do they exist in
> > > > > > the git development phase?
> > > > >
> > > > > There is no 5.1.2, it never exists.
> > > > >
> > > > > 5.1.1 is a snapshot from the gcc-5 branch between the 5.1.0 and 5.2.0
> > > > > releases. It's not a release.
> > > > >
> > > > >
> > > > > >
> > > > > > Does a change in the DEV-PHASE, result in a numbering change in the
> > > > > > git repository?
> > > > >
> > > > > No.
> > > > >
> > > > > >
> > > > > > > To put it another way: the release timeline is not supposed to define
> > > > > > > the numbering scheme. That's defined above. The release timeline is
> > > > > > > just informative, documenting the timeline, not documenting the
> > > > > > > format.
> > > > > >
> > > > > > The confusion originates here: honour the actual release format in
> > > > > > the timeline documentation.  Perhaps the full timeline is not needed,
> > > > > > and you only need an actual timeline with correct release numbering
> > > > > > for just 3  major branches (14, 15, 16) would be enough.
> > > > >
> > > > > No, this is totally wrong. The point of the release timeline is to see
> > > > > when various important events happened in the history of GCC. I want
> > > > > to know the date on which GCC 9.3.0 was released, so I can look at the
> > > > > timeline. If it only shows the active branches, that timeline would be
> > > > > completely useless for most of the times I consult it.
> > > > >
> > > > > Again, the timeline is not there to define the meaning of the version
> > > > > numbers, it's a timeline! It shows when things happened!
> > > > >
> > > > > If you're trying to use the timeline to understand the version
> > > > > numbering, you're using it wrong.
> > > > >
> > > > > >
> > > > > > The implication that 5.1.0 can be described as 5.1 can be explained
> > > > > > later.  Or, if 5.1 is better, the explanations have to be improved.
> > > > > >
> > > > > > Clarity must prevail over convenience for true understanding.
> > > > > > Keep in mind that the page is trying to explain GCC Development
> > > > > > to people who do not know.
> > > > > >
> > > > > > > If you don't understand the numbering scheme, read the definition of
> > > > > > > the numbering scheme again, not the timeline.
> > > > > >
> > > > > > What does this mean: snapshots from the release branch GCC 5.n.1.
> > > > >
> > > > > It means exactly what it says. We could add the words "will be" so
> > > > > that it says "snapshots from the release branch will be GCC 5.n.1" but
> > > > > the meaning is identical in English.
> > > >
> > > > You mean from the release branch 5.n.  It is the 5.n.1 that is confusing
> > > > It is more understandable if it states that the GCC 5.N.M is snapshot M
> > > > from the release branch GCC 5.N.
> > >
> > > No. There is no 5.n branch.
> > >
> > > The branch is releases/gcc-5 or releases/gcc-6 etc.
> > > See https://gcc.gnu.org/cgit/gcc/refs/
> > >
> > > Like I said, this is all in the table. Read it more carefully. It says
> > > that GCC 5.1.0 is the first release from the GCC 5 branch (which is
> > > 'releases/gcc-5' in git). It doesn't say the GCC 5.1 branch, because
> > > there's no such branch.
> > >
> > > GCC 5.1.1 is a snapshot from the gcc-5 branch. GCC 5.2.0 is the second
> > > release from that branch. GCC 5.2.1 is a snapshot from that branch.
> > > GCC 5.3.0 is the third release from that branch, and so on.
> > >
> > >
> > > >
> > > >
> > > > > So a snapshot from the gcc-5 branch will be 5.1.1 or 5.2.1 or 5.3.1 or 5.4.1.
> > > > >
> > > > > >
> > > > > > You may think everything is fine, but to others from the outside,
> > > > > > the description and examples, and switching to implications from your
> > > > > > minds in not fine at all.
> > > > > >
> > > > > > Although it may be clear to some, the information is not really complete.
> > > > >
> > > > > I disagree, the information is all there. Maybe it could be clearer,
> > > > > but it's all there.
> > > >
> > > > Things need to be clearer.  The page tries to discuss both the
> > > > GCC Development Plan and the Timeline.  To be clearer, separate
> > > > the development plan from the timeline to be in different pages.
> > >
> > > That's not necessary, they're separate but related things. They both
> > > belong on the develop.html page. It's not the "version numbering"
> > > page, so there's no reason it should *only* talk about version
> > > numbering.
> > >
> > > > For understanding, one should be able to see any imaginary GCC
> > > > version and be able to explain what it is.  If one needs an
> > > > explanation of what a version means, then there is something
> > > > wrong with the versioning scheme.
> > >
> > > I see no reason why our docs should explain what GCC 5.banana.fitter means.
> >
> > Any "Version Numbering Scheme" must explain GCC 5.banana.fitter.  Because any
> > name must fully derive its meaning from the scheme itself.  If it doesn't, the
> > scheme is useless - you're better off with a plain timeline table naming releases
> > arbitrarily.
> >
> > Otherwise GCC 5.banana.fitter constitutes a broken promise: Readers see
> > 5.banana.fitter expecting the scheme to decode it.  If it can't, discard it.
> 
> Where do readers see that? It's completely made up, it's not used by
> any GCC release.
> 
> 
> >
> > Forcing timeline lookup defeats the purpose of the Version Numbering Scheme.
> 
> I have no idea what this means. I've said repeatedly you should stop
> trying to use the timeline to understand the numbering scheme. Are you
> trolling now?

The timeline uses the numbering scheme, but I have to accept that the numbering
scheme in the timeline cannot be used to understand the numbering scheme.

I'm not trolling, I'm detonating the contradiction right in your face!
When a man stands knee-deep in the steaming wreckage of a "versioning 
scheme" that can't decode its own structure, it isn't trolling.

> > Version strings exist to be intrinsically meaningful without external context.
> 
> And completely imaginary version strings like 5.2.2 and
> 5.banana.fritter do not exist, at all. So they don't need to be
> explained. Your confusion about what 5.2.2 means was because you just
> made something up in your head and decided it was a problem because
> you couldn't understand what that version meant.
> 
> >
> > This is basic information design.  GCC 5.banana.fitter must immediately convey
> > something (GCC 5 series, experimental snapshot, iteration F.).
> 
> I'm done with this stupid thread. Good luck finding a release of GCC
> 5.banana.fritter in the real world.

Here comes the classic kill-shot: "I'm done with this stupid thread. 
Good luck finding GCC 5.banana.fritter in the real world." 

It's the equivalent of flipping the Monopoly board and storming off 
to the liquor cabinet - pure, unfiltered contempt for everyone who 
dares breathe oxygen in the discussion concerning your genius.

Fake superiority that calls us all drooling idiots, and peels out 
in a haze of self-righteousness.
 
> >
> > > >
> > > > To list the timeline of what is released is not bad, if not
> > > > cluttered by a lot of other unrelated information.  A release
> > > > timeline page would provide the information.
> > > >
> > > > How would one know whether 5.0.1 is in experimental stage 4 or in
> > > > prerelease?
> > >
> > > They're the same thing.

The table in "Version Numbering Scheme for GCC 5 and Up" does not imply they
are the same thing.