Re: GCC multi-version development layout

Jonathan Wakely via Gcc-help <[email protected]> Mon, 20 Apr 2026 15:35:51 +0100
Newsgroups gmane.comp.gcc.help
Message-ID <CAH6eHdQ4oP30=9Nd=g8iGN3dg8Z_3dMpB3vw8=JA++XCqWQNwQ@mail.gmail.com>
On Mon, 20 Apr 2026 at 15:32, 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.

The version number is set from gcc/BASE-VER.


>
> >
> > > 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.
>
> 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.
>
> >
> > > >> This produces confusion and lacks usefulness to fresh gcc developers
> > > >> trying to make sense of the actual current scheme.