From: Ludovic Brenta on
tmo...(a)acm.org wrote:
> >..., but 4.1 was OK again and the Ada part of GCC has steadily improved
> >since (i.e. no or very few regressions). I have a very good feeling
> >about the upcoming GCC 4.3
> I'm glad that others have been doing the testing on the GCC Gnat.

That's part of what I meant with "support from the Free Software
community". By joining this community, you can even contribute much-
appreciated testing and bug reports.

> Perhaps 4.3 will be as solid as 3.15p, or perhaps 3.15p is incompatible
> with Vista and MS will effectively force me to GCC Gnat 4.1

I think that, yes, Vista broke compatibility with old executables
compiled with GNAT 3.15p. I know that GNAT GPL 2007 edition was
specifically revised to support Vista. Chances are high that this
support is already in GCC 4.3 but probably not in 4.1. I don't use
Vista (or any proprietary software) myself so I wouldn't know.

> When is 4.3 expected?

GCC 4.3 entered regressions-only mode today [1]. As usual, no date has
yet been announced but I think the release will take place in the next
couple of months. Of course, nothing forces you to wait for a release;
you can use a weekly snapshot at any time and test Vista support for
yourself. The Ada part of GCC will probably not change anymore now.

[1] http://gcc.gnu.org/ml/gcc/2008-01/msg00387.html

--
Ludovic Brenta.
From: Robert A Duff on
tmoran(a)acm.org writes:

> A bug that is known and successfully worked-around isn't a bug, it's
> a feature. Probably not a nice feature, but not a nasty surprise waiting
> to bite you.
> Personally, I usually don't enjoy time spent finding the bugs in
> other people's (compilers or OSes etc) code. I usually have little idea
> where the problem might be and there's a lot of grunt work trying to
> cut down to a small program that demonstrates the problem (see the
> recent thread on "Ada obfuscation"). And when there is a simple
> example, learning what to avoid may be its only payback, while those
> responsible take months, or even years, to release a corrected version.
> My understanding is that the current Gnat is not a 3.15p with
> improvements, but is rather a substantially new thing, with new,
> unknown, bugs. Is that a mis-understanding?

I can understand the reluctance to upgrade software, in general.
But if you're upgrading the OS (Windows XP to Vista) you really
need to upgrade GNAT as well. There are several ways in which
Vista is incompatible, so it's not surprising that a version
of GNAT that predates Vista doesn't work!

The DEP issue was mentioned. I suppose you can turn off DEP
in Vista, either in general, or for particular programs.
(I don't know -- I've never used Vista myself.)

The latest GNAT compiler no longer uses trampolines (which don't
work when DEP is turned on). However, it can still generate code
that uses trampolines in some cases. We've mostly fixed that, too,
but there's still a lot of testing to do. Getting rid of
trampolines is a change in the guts of the back end, and
is target dependent.

Pointers to nested functions in C code will probably continue to use
trampolines for the forseeable future, but we can do better in pure
Ada code.

- Bob
From: Alex R. Mosteo on
Ludovic Brenta wrote:

> tmo...(a)acm.org wrote:
>> My understanding is that the current Gnat is not a 3.15p with
>> improvements, but is rather a substantially new thing, with new,
>> unknown, bugs. Is that a mis-understanding?
>
> IMHO your understanding is correct up to a point, but not for the
> current version of GCC (4.2.2) or the next version.
>
> When AdaCore merged GNAT into the GCC sources, a long period of
> instability ensued for the reasons you outline. I never considered
> versions 3.1, 3.2 or 3.3 production-worthy and this is where I agree
> with your understanding. However, 3.4 was OK. With version 4.0, a
> major change to the back-end ("tree-SSA") introduced some new bugs in
> the interface with the Ada front-end, but 4.1 was OK again and the Ada
> part of GCC has steadily improved since (i.e. no or very few
> regressions). I have a very good feeling about the upcoming GCC 4.3
> because AdaCore and Sam Tardieu have recently fixed several dozen old
> bugs, most of which have been present since GNAT 3.15p or before. I
> anticipate that GCC 4.3 will be the best version of GCC ever as
> regards Ada.

This is very interesting. In regard to Ada 2005 features, the improvement is
also noticeable. GPL 2006 bombed quite frequently, 2007 *much* less to the
point of being a rarity. The only big thing I'm waiting to be useable is
interfaces. I wonder about the amount of differences between the 2007 and
4.x branches.
From: Ludovic Brenta on
Alex R. Mosteo writes:
> Ludovic Brenta wrote:
>
>> tmo...(a)acm.org wrote:
>>> My understanding is that the current Gnat is not a 3.15p with
>>> improvements, but is rather a substantially new thing, with new,
>>> unknown, bugs. Is that a mis-understanding?
>>
>> IMHO your understanding is correct up to a point, but not for the
>> current version of GCC (4.2.2) or the next version.
>>
>> When AdaCore merged GNAT into the GCC sources, a long period of
>> instability ensued for the reasons you outline. I never considered
>> versions 3.1, 3.2 or 3.3 production-worthy and this is where I agree
>> with your understanding. However, 3.4 was OK. With version 4.0, a
>> major change to the back-end ("tree-SSA") introduced some new bugs in
>> the interface with the Ada front-end, but 4.1 was OK again and the Ada
>> part of GCC has steadily improved since (i.e. no or very few
>> regressions). I have a very good feeling about the upcoming GCC 4.3
>> because AdaCore and Sam Tardieu have recently fixed several dozen old
>> bugs, most of which have been present since GNAT 3.15p or before. I
>> anticipate that GCC 4.3 will be the best version of GCC ever as
>> regards Ada.
>
> This is very interesting. In regard to Ada 2005 features, the improvement is
> also noticeable. GPL 2006 bombed quite frequently, 2007 *much* less to the
> point of being a rarity. The only big thing I'm waiting to be useable is
> interfaces. I wonder about the amount of differences between the 2007 and
> 4.x branches.

AdaCore normally merge from GNAT Pro into GCC during Stage 1, and then
do almost nothing during Stages 2 and 3 (only a few bug fixes in the
middle-end and the back-end). That, however, changed for GCC 4.3 where
many Ada bug fixes happened during Stage 3 and I think the two
branches are now quite close. By looking at the timeline of GCC's
development[1], one can establish a rough correspondence between GCC
and GNAT GPL releases:

GCC release | end of stage 1 | GNAT GPL release | release date
--------------------------------------------------------------
4.1 | 2005-04-25 | 2005 | 2005-09-15
4.2 | 2006-01-18 | 2006 | 2006-05-22
4.3 | 2007-01-20 | 2007 | 2007-05-11

The time between the end of Stage 1 and the final release of GCC is
approximately one year:

GCC release | release date | time since end of Stage 1
--------------------------------------------------------
4.1.0 | 2006-02-28 | 10 mo
4.2.0 | 2007-05-13 | 14 mo
4.3.0 | ????-??-?? | 10 mo and counting

This explains why GCC lags behind GNAT Pro and GNAT GPL in terms of
Ada support.

[1] http://gcc.gnu.org/develop.html#timeline

--
Ludovic Brenta.