In article <7g0qj1$1td...@Mercury.mcs.net>, l...@MCS.COM (Leslie Mikesell) writes: > In article <1999Apr25.201259.1@eisner>, > Larry Kilgallen <kilgal...@eisner.decus.org> wrote: >>As an Ada fan, I would much prefer the versions of Ada available >>(from all sources) were as defect-free as possible, so those who >>are not already firmly in the Ada camp will not get disuaded by >>encountering defects.
> If the old versions are perfect, why is there ongoing development?
Of course some development is for new features. A compiler that complied perfectly with the RM could still be improved in optimization, quality of error messages, etc. There might be other defects going to the absolute correctness of the compiler. What there should never be in a released version is DEFECTS THAT WERE PREVIOUSLY FIXED.
If you maintain that those internal "wavefront" releases cannot introduce a regression, might it be the case that ACT wastes time by running full regression tests before a release ? If so, then you can dismiss all the alleged "added value" Robert spoke about from their extensive test battery and just make your own changes to the compiler.
In fact, if you are so upset about the way ACT behaves, you can set up a competing GNAT development effort. When the time comes, however, for me to pay money to a vendor for GNAT, and I have my choice between a vendor who tests and a vendor who doesn't, I have no question about which way my decision would go.
In article <7g0qj1$1td...@Mercury.mcs.net>, l...@MCS.COM (Leslie Mikesell) wrote:
> It is mostly bickering about the meaning of the GPL. As > in how you can distribute even one bugfix copy of > something with a license that ensures the right to source > and the right to redistribute the source while witholding > the source
There is nothing in the GPL that ever *requires* *anyone* to distribute *anything* [other than the source for a program for which they distribute the objects] under *any* circumstances. Indeed a license which has any such requirements is not regarded as a legitimate free software license by the FSF (this is one of the contentions, the open source software folk to do not make this distinction)
> and insisting that the recipient not redistribute?
Any such insistence would be a clear violation of the GPL. For example, if you distributed GPL'ed software along with a non-disclosure agreement which restricted the further distribution, this would violate the GPL. You can explicitly ask people not to do it, explaining why you would prefer them not to redistribute, but that's only a request. At ACT, we don't even make such explicit requests.
I suspect there *are* situations that are murky, for example surrounding the GCC work being done for Merced, but at ACT we never have any restrictive requirements, since, as noted above, these would clearly violate the GPL, and you are right, to have such restrictions would make no sense, which is why the GPL does not permit them.
> >As an Ada fan, I would much prefer the versions of Ada available > >(from all sources) were as defect-free as possible, so those who > >are not already firmly in the Ada camp will not get disuaded by > >encountering defects.
> If the old versions are perfect, why is there ongoing development?
> In article <7g0qj1$1td...@Mercury.mcs.net>, l...@MCS.COM > (Leslie Mikesell) writes: > > If the old versions are perfect, why is there ongoing > >development?
First: no one said that the old versions are perfect, even with respect to basic issues of conformance to the RM. Every version of GNAT so far has had bugs. No amount of testing can guarantee elimination of all bugs.
But more to the point, the great majority of our ongoing development effort relates to new features, new tools, new packages, improved performance etc.
Here is a brief excerpt from the features file for the forthcoming 3.12 releases. I will post the whole of this when we freeze the 3.12 sources, which has not happened yet.
The compiler is now built with options -gnatpn instead of -gnata. This means that the front end of the compiler is considerably faster, up to 2-3 times faster in some cases. The cases where you will see the biggest speed up are in -gnatc compilations with no code generation, or if very large specs are with'ed from smaller units.
If pragma Suppress is used in the gnat.adc file, this now properly suppresses exceptions in all files compiled in the presence of this gnat.adc file (Suppress pragmas in gnat.adc were previously ignored, which is in accordance with the RM, but certainly not what is wanted!)
On Digital Unix 4.0D, the run time now takes advantage of the full range of priorities (0 .. 63).
In -gnatc mode, an existing up to date ali file is no longer destroyed. In particular this means that the -gnatc -gnatt compilations used by ASIS do not destroy existing ali files.
A new switch -gnaty activates style checking features in the compiler. These roughly correspond to the checking done by the special internal -gnatg flag, except that -gnaty allows extensive choice of which checks are to be performed, and also allows parametrization, e.g. of the indent level that is enforced.
The handling of aggregates has been optimized in many cases, generating more efficient code and less memory usage.
The binder now generates an Ada package as the main program by default instead of a C program. The generated files are called b~xxx.ads/adb, where xxx is the name of the main program. The -C switch for both gnatbind and gnatlink can be used to get the old behavior of generating the main program in C.
This is just a small excerpt (the full features file entry for 3.12 is about 200 lines long and growing), but this should give you a feel for what continued development is about.
Indeed our support activities these days are far less focussed on fixing bugs than helping people use Ada 95 and GNAT features successfully -- though of course the bug fixing activity is an important component still!
Robert Dewar Ada Core Technologies
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
Maciej Stachowiak <mstac...@alum.mit.edu> wrote: > ... I suspect quite a few major features appeared in the EGCS > tree before they were shipped to Cygnus customers.
In article <7g0bdf$3q...@nnrp1.dejanews.com>, Robert Dewar <robert_de...@my-dejanews.com> wrote:
>That would be an interesting suspicion to back up. I know >only of major features in the Cygnus tree that are not in EGCS.
Well, I can't think of a single Gcc feature, major or otherwise, that was in our standard customer release before being in EGCS. Note: I am talking about the standard GNUPro product; not contracted deliverables made to a specific customer. (Obviously, if somebody pays for a new port to an unannounced chip, we are not going to put into Egcs before it is announced!) But in general, customers do *not* get major features before Egcs.
Since we merge *from* Egcs to our internal tree, rather than vice versa, the check-in policy at Cygnus is: Nothing gets into our internal tree unless it is in Egcs *or* specially marked as being Cygnus only or "sanitized". That should make it obvious that the default is to check things into Egcs first or at the same time.
>Yes, of course Cygnus drops developments to EGCS, no one >is saying that they don't. It is just that, as in the case >of GNAT, there is usually a lag between the development >of new features and their dropping into EGCS.
As I have pointed out, this is generally not true. It may be worth pointing out that Dewar's company ACT is a competitor of Cygnus, though we have mostly kept apart.
>Indeed there are features in GNUpro that have not >yet been put in EGCS. I am sure they all will be, just as >all internal GNAT developments are eventually made public.
Well, some parts of our product are non-free, and there are no plans to change that (though the mix of what is free and what is non-free will of course change). Specifically, Source Navigator (which is a separate product from GNUPro) is non-free, as is gdbtk (which I believe *is* part of GNUPro).
>Right now, GNAT is more analogous to how Cygnus handles >GDB. That may change in the future, but Cygnus feels that >since it does almost all the work on GDB currently, it is >not obviously worth their while to invest resources in an >EGCS like effort for GDB. That may well change in the >future, if other parties start doing major work on GDB.
I don't think it is proper for you to say what "Cygnus feels". At the very least put in a "my guess is ...".
The reason EGCS was started was because things has reached a crisis point. This happened while the official Gcc maintainer was working for ACT. Gdb has also had problems the last year with openness and timely releases; we are working on improving this. A public cvs repository is one possibility (but I am not in the gdb group, so I cannot speak for them). -- --Per Bothner Cygnus Solutions both...@cygnus.com http://www.cygnus.com/~bothner
In article <7g3klg$26...@rtl.cygnus.com>, both...@cygnus.com (Per Bothner) wrote:
> Well, I can't think of a single Gcc feature, major or > otherwise, that was in our standard customer release > before being in EGCS.
There have been some minor examples (at least you have told customers this was the case), but in general, right, the Cygnus policy is the same as the ACT one, anything in a standard customer release is also made available publicly at essentially the same time (in the case of ACT, there is a small lag in time, simply because we prepare the customer release first, if we had more resources, we could probably eliminate even this couple of weeks lag).
> Note: I am talking about the standard GNUPro product; > not contracted deliverables made to a specific customer.
But actually this was the crux of the issue here in the discussion with regard to GNAT. Not the issue of standard releases, but the issue of special releases to specific customers to meet specific contract requirements for these customers.
> (Obviously, if somebody pays for a new port to an > unannounced chip, we are not going to put into Egcs > before it is announced!)
What I wonder about here is the secondary distribution. Yes, as Cygnus you can give the product back to the chip maker here, but presumably the chip maker cannot distribute this to any third party with any kind of ND restrictions. That seems an awkward situation.
For example, suppose that Cygnus did a Merced port for Intel, then Intel could not give it to anyone else, e.g. to develop a Linux for it, with non-disclosure restrictions that would prevent them from distributing it.
One of the interesting points of the GPL is that it allows ONE organization to do internal work in complete secrecy, unhampered by GPL restrictions of any kind, but this does not extend to two companies working together, because every time they send a copy between them, it must be sent in unrestricted manner.
I should say that I have discussed this point explicitly with Richard Stallman, and he agrees with this assessment of both the intent and effect of the GPL.
> I don't think it is proper for you to say what "Cygnus > feels". At the very least put in a "my guess is ...".
This was not a guess, it was based on a direct conversation with Cygnus folks. Incidentally I did not intend it as a criticism. If indeed most changes to GDB are done by Cygnus it is perfectly reasonable for them to worry that opening things up can cause extra work without sufficient return. The reason EGCS works well on both sides is that although it is true that most contributions to EGCS have been from Cygnus, there are many important contributions from elsewhere. So far this is not true of GDB, but we hope it may be in the future, and Cygnus certainly shares this (again I am not guessing, this is based on direct interactions, but in any case it is an entirely reasonable position, and is what I would have guessed in any case).
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
In article <7g3klg$26...@rtl.cygnus.com>, both...@cygnus.com (Per Bothner) wrote:
> The reason EGCS was started was because things has > reached a crisis point. This happened while the official > Gcc maintainer was working for ACT.
Since Cygnus likes to correct you when people say that Cygnus controls EGCS, let's clarify a little here. Richard Kenner in his role as the maintainer of GCC was working for New York University, not for ACT! That's an important distinction, just as important as the fact that EGCS is not controlled by Cygnus :-)
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
Robert Dewar <robert_de...@my-dejanews.com> writes: > In article <7g3klg$26...@rtl.cygnus.com>, > both...@cygnus.com (Per Bothner) wrote: > > The reason EGCS was started was because things has > > reached a crisis point. This happened while the official > > Gcc maintainer was working for ACT.
> Since Cygnus likes to correct you when people say that > Cygnus controls EGCS, let's clarify a little here. Richard > Kenner in his role as the maintainer of GCC was working > for New York University, not for ACT! That's an important > distinction, just as important as the fact that EGCS is > not controlled by Cygnus :-)
But was I supposed to infer from the comment that because Richard (the GCC maintainer) was working for ACT (really, NYU), that that caused or otherwise contributed to the crisis?
both...@cygnus.com (Per Bothner) writes: > [...] Gdb has also had problems the last year > with openness and timely releases; we are working on improving this. > A public cvs repository is one possibility (but I am not in the > gdb group, so I cannot speak for them).
The repository already exists, take a look at sourceware.cygnus.com.
In article <m3u2u2t0xh....@mheaney.ni.net>, Matthew Heaney <matthew_hea...@acm.org> wrote:
> But was I supposed to infer from the comment that because > Richard (the GCC maintainer) was working for ACT (really, > NYU), that that caused otherwise contributed to the > crisis?
Well I can't speak for the intentions of the poster in terms of what he intended you *infer*, but if you were to draw such an inference it would be entirely incorrect. There is quite a bit of history rewriting going on here, but no one has said anything *quite* that outrageous, and to be fair, I do not think that the original poster intended you to draw such a conclusion, which would be entirely false.
On the contrary, as with many other volunteer activities, the critical thing is for the time of volunteers to be supported adequately, and indeed ACT put substantial resources into assisting with the continued maintenance of GCC, something that benefited us, but also benefited the larger GCC community.
A similar situation arises with Cygnus today, they invest substantial resources to help with the maintenance of the Cygnus tree, and those resources are enormously helpful to the gcc community at large, not just to Cygnus.
That leads some people to harbour suspicions that Cygnus really secretly controls the process and somehow twists it to serve their own ends, but really this is quite absurd, and does not correspond at all to the reality of the situation.
To draw the inference you suggest here is equally absurd (as well as being quite unfair to those involved!)
Robert Dewar Ada Core Technologies
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
Robert Dewar <robert_de...@my-dejanews.com> writes: > A similar situation arises with Cygnus today, they invest > substantial resources to help with the maintenance of the > Cygnus tree, and those resources are enormously helpful to > the gcc community at large, not just to Cygnus.
> That leads some people to harbour suspicions > that Cygnus really secretly controls the process and > somehow twists it to serve their own ends, but really this > is quite absurd, and does not correspond at all to the > reality of the situation.
It *does* correspond to the reality of the situation as Cygnus invests considerable manpower in the process. In a way, they are preparing well-trodden paths that are convenient for their purposes by investing appropriate resources. If they are not interested in some direction of work, they'll leave it to other parties.
While I find no wrong with that, it would be foolish to deny that the willingness to invest a large amount of work in GCC *does* have a large influence on what direction the compiler development is taking.
If a few larger vendors realized this somewhat more (Intel seems to have waken up to it somewhat recently), this could only help GCC development. CPU manufacturers actually should have an even larger interest as Cygnus in getting actively involved in GCC. It lends large value improvements to their products with minimal costs.
-- David Kastrup Phone: +49-234-700-5570 Email: d...@neuroinformatik.ruhr-uni-bochum.de Fax: +49-234-709-4209 Institut für Neuroinformatik, Universitätsstr. 150, 44780 Bochum, Germany
In article <m2so9lccbw....@mailhost.neuroinformatik.ruhr-uni-bochum.de
> It *does* correspond to the reality of the situation as > Cygnus invests considerable manpower in the process. In > a way, they are preparing well-trodden paths that are > convenient for their purposes by investing appropriate > resources. If they are not interested in some direction > of work, they'll leave it to other parties.
Yes, of course, anyone putting work into gcc is inclined to put in things that they find interesting and useful, and who ever puts in more effort will have more influence. But there is nothing improper, suspicious, or in any way negative about that.
A similar situation occurs with GNAT. Since ACT makes almost 100% of the changes to GNAT currently (we only very rarely get patches submitted, almost all of which have been immediately incorporated), ACT gets to make the decisions on which features go in etc. This is of course based primarily on the needs of our paying customers.
(two of the the most notable volunteer contributions to GNAT were the DOS port by Doug Rupp, and the OS/2 work by Geert Bosch, and not only did we acquire this work, but Doug and Geert now work full time for ACT/ACTE.)
If the GNAT/Linux project ends up encouraging more useful contributions, particularly in the tools and binding area, then it will begin to have a significant influence on the direction of the GNAT development, and that is welcome all round as far as I am concerned.
There are some other interesting developments such as David Botton's work on COM interfacing on NT, and ACT is definitely interested in working closely with anyone doing useful development that is GNAT related.
Robert Dewar Ada Core Technologies
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
I don't want to say too much here, because I don't remember or know all the issues [in starting Egcs]. But it is no secret that Kenner was not working out as Gcc maintainer. This was not due to any lack of technical skills. I think the biggest problems were a lack a management skills, and an unwillingness to delegate. And as Dewar says: being Gcc maintainer is a tremendous time sink, and doing a good job while maintaining a "day job" is almost impossible.
I don't think it was a major factor that Kenner was also working for ACT with the associated possible conflict of interest. However, there was at least the perception that in a few case he made some questionable decisions based on concerns about GNAT. For example, C++ exception handling was delayed because Kenner had his own ideas as to how it "ought" to be done. (I don't know what the technical issues were. Maybe he was just too much of a perfectionist - this is certainly a problem I'm all too familar with in myself.) -- --Per Bothner Cygnus Solutions both...@cygnus.com http://www.cygnus.com/~bothner
In article <7gbjhg$s9...@rtl.cygnus.com>, both...@cygnus.com (Per Bothner) wrote:
> I don't think it was a major factor that Kenner was also working for > ACT with the associated possible conflict of interest. However, > there was at least the perception that in a few case he made some > questionable decisions based on concerns about GNAT. For example, > C++ exception handling was delayed because Kenner had his own ideas > as to how it "ought" to be done. (I don't know what the technical > issues were. Maybe he was just too much of a perfectionist - this > is certainly a problem I'm all too familar with in myself.)
It is probably fair to say that Kenner is a perfectionist. He thinks that things should be documented (Per says he does not know the issues, perhaps he should check :-) But one of the major issues with exception handling was indeed documentation, and in fact a special deal was done to put this into gcc without the documentation, accepting instead a promise that it would be done later!
The concerns about exceptions had nothing at all to do with GNAT. This is simply a guess on Per's part, who as he says, does not know the issues. The concern was on technical issues (such as thread safety, which of course are language independent), and on the documentation issues.
I think Per's continued implications that perhaps Richard was working deliberately against Cygnus interests because ACT was a competitor are pretty bogus on the face of it. ACT's interests have been very specifically in Ada (consider the name of the company!) And as far as we know Cygnus has had zero interest in Ada.
In practice, the issue was indeed to a considerable extent one of too much work for any one person. ACT funded a lot of Richard Kenner's time to work on gcc in practice, so that it could indeed be his day job, but even so, there is a lot for one person to do, and furthermore, it is pretty hard to please everyone in a situation like this.
But in general I would advise Per to investigate thoroughly the circumstances of both EGCS at the start, and the exception issues, before making guesses. Even with the disclaimers that he does not know the issues, such guesses can be misleading.
Robert Dewar Ada Core Technologies
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
Per Bothner <both...@cygnus.com> wrote: >However, there was at least the perception that in a few case he made >some questionable decisions based on concerns about GNAT. For >example, C++ exception handling was delayed because Kenner had his >own ideas as to how it "ought" to be done.
Here is my take...
I don't think any of this was related to GNAT. My take is just a simple conflict of styles. It only delayed EH by 2-7 years. My choice, would have been to not delay it, and just get it working, then working well, then well ported, then clean up the interfaces and documentation.
I resisted doing it his way, and he resisted accepting it my way.
I don't yet understand the benefit of delaying EH, maybe in time I might...
In retrospect, I think it might have been easier to do the entire thing, port it to all the major platforms, work out the details, clean it up, document it, then submit it after the fact. What I wanted to do, was expose the source code control system to my learning, so as to preserve the record of what was learned. One can do up the whole thing first, then check it in en-mass, but what I don't like about that, is there is no history of why. It _feels_ less open to me. I think there are more benefits by having it more _open_.
In article <7g2798$nt...@nnrp1.dejanews.com>, Robert Dewar <de...@gnat.com> wrote:
>In article <1999Apr26.074128.1@eisner>, >But more to the point, the great majority of our ongoing >development effort relates to new features, new tools, >new packages, improved performance etc.
I have a question, will ACT be able to help with the egcs community, and help us integrate in teh Ada frontend into egcs, or do we have to go it alone?
I personally would like to see Ada and Pascal integrated, tested (to some extent), and then egcs released as gcc 3.0.
In article <FB8F5o....@kithrup.com>, m...@kithrup.com (Mike Stump) wrote:
> I have a question, will ACT be able to help with the egcs community, > and help us integrate in teh Ada frontend into egcs, or do we have to > go it alone?
> I personally would like to see Ada and Pascal integrated, tested (to > some extent), and then egcs released as gcc 3.0.
Our priority is to get 3.12 out of the door first, 3.12 will still be gcc 2.8.1 based. FOllowing that we will start serious work on the EGCS integration. It is really something that ACT has to be involved with, because access to our regression suite is crucial for locating and dealing with EGCS regressions.
We are setting up to do the full regression run now, and should have results soon. Certainly the 3.12 source base is the right one to include in the next EGCS release.
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
In article <FB8DLq....@kithrup.com>, m...@kithrup.com (Mike Stump) wrote:
> In article <7gbjhg$s9...@rtl.cygnus.com>, > I don't think any of this was related to GNAT. My take is just a > simple conflict of styles. It only delayed EH by 2-7 years. My > choice, would have been to not delay it, and just get it working, then > working well, then well ported, then clean up the interfaces and > documentation.
That certainly seems backwards to me, for me the sequence of software production goes like:
design and document the interfaces refine the interfaces till they are correct then implement
I find the style of doing things backwards worrisome, though I realize it is common enough, especially in the C community.
We certainly follow this procedure internally at ACT. If someone thinks a new feature is useful, then first we have a general discussion of the idea, then we design the feature (e.g. package specs are produced and reviewed), then we do the implementation of the bodies. I doubt this description of normal software design procedures seems strange, at least I would expect it was entirely familiar to the comp.lang.ada users reading this!
The trouble with doing things backwards is that you are realying FAR too heavily on testing alone as the criterion for correctness. Even if there were a comprehensive and systematic test suite, including significant amounts of code, testing is never sufficient on its own to ensure that your design is correct.
I must say I am a little puzzled by Mike's reluctance to document things. If EH was really delayed 7 years because of this (I think that's a bit of an exaggeration :-) it is a pity ...
As to whether one should bend the rules and allow things to be implemented without documentation, and instead hope for documentation to appear later, it's hard to say. Sometimes you DO have to make this compromise, but it often does not work out well. The trouble is that many people who have this code-now, document-later approach have a lot of trouble coming through with the documentation later.
For me personally, writing well documented code is a pleasure, sort of like writing a text book that students like to read. If code is accessible and easy to understand, and good documentation is part of the reason, then that is a pleasing achievment in itself. I get the impression that a lot of programmers don't share this view, and find documentation a nuisance -- too bad.
P.S. I still find the documentation of the exception handling stuff in GCC inadequate. This may be just lack of skill on my part in reading C code of this kind (clearly there is an expectation that you figure out some of the details of the specification by looking at the details of the coding, which I find uncomfortable.
One unfortunate consequence is that the GNAT exception handling has been developed entirely independently, and I suspect that there could be more merging, though I am not sure of this, because to have an exception handling mechanism usable by both C++ and Ada 95, a perfectly reasonable goal, would require careful examination of the specifications *before* starting to implement.
Anyway, I do agree with Mike on one important point, the exception handling requirements for GNAT had nothing at all to do with the development of EH handling in GCC!
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
>I still find the documentation of the exception handling stuff >in GCC inadequate.
Well, feel free to donate improvements to the documentation, gcc always welcomes clarifications and more complete explanations. :-) I'd be happy to answer your questions about it.
>One unfortunate consequence is that the GNAT exception handling has >been developed entirely independently,
Well, I take exception to the word entirely. There was a mailing list called e...@cygnus.com, and we discussed tons of details and issues, from many language perspectives, including Ada and C++.
This experience shaped and drove my implementation, the implementation that now exists in gcc.
I would anticipate that it did the same for the Ada implementation. If true, they are closely related.
>I suspect that there could be more merging,
Sure, each front end can replicate it's own exception scheme[1], but this is a poor design. A better design is where the common aspects of the design are shared by the frontends as facilities in the backend. C++ and Java already share EH. Chill needs to be converted, but there is no pressing need, as not to many people use or maintain it.
:-) Yes, I know you already knew that. I say it, just to nag a little, in hopes that Ada will embrace the functionality that is now there and extend it.
>because to have an exception handling mechanism usable by both C++ >and Ada 95, a perfectly reasonable goal, would require careful >examination of the specifications *before* starting to implement.
:-) Yes, and that was done to a large extent. The missing pieces are meant to slot into the existing design, in a natural way.
1 - Actually, my experience is that this is not possible, that is _why_ EH is now in gcc. The frontend implementation could only go so far, then things like flow, really wanted to know more and understand more.
In article <FBAEH2....@kithrup.com>, m...@kithrup.com (Mike Stump) wrote:
> Well, I take exception to the word entirely. There was a mailing list > called e...@cygnus.com, and we discussed tons of details and issues, > from many language perspectives, including Ada and C++.
This was in my response to the claim that unfortunately the exception handling in Ada had been developed entirely independently of the mechanism in C++.
I did the design and implementation of the exception handling in Ada, so I am pretty familiar with what was and was not done. Yes there were early discussions about trying to deal with commonality between the languages, but unfortunately these did not result in a common facility. I tried to understand what had been done for C++ but failed. Others here at ACT are still trying to do more merging here, but it is not easy. I found no high level interface oriented description of the mechanism used for C++. Perhaps I simply did not look hard enough, or just did not know how to read the code correctly. I find the back end of GCC rather difficult to navigate (and indeed in a recent email Per Bothner (hope I remembered the spelling right) claimed that the entire gcc compiler was ill-documented so why single out the exception handling). I find that position FAR too pessimistic, and indeed in general the gcc backend is documented a lot better than many proprietary compilers with which I am familiar, but in this particular case, we have not yet achieved the ideal of merging the exception handling of C++ and Ada. I believe this could only have been achieved if we had started with a fully documented high level design.
Again, this may simply be a different way of working, here at ACT, we really aren't very good at roaming around code and figuring out what is going on, we depend on a very structured design approach, so there is undoubtedly a bit of a culture clash :-) :-)
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
Robert Dewar <robert_de...@my-dejanews.com> writes: > I did the design and implementation of the exception handling in > Ada, so I am pretty familiar with what was and was not done. Yes > there were early discussions about trying to deal with commonality > between the languages, but unfortunately these did not result in > a common facility. I tried to understand what had been done for > C++ but failed. Others here at ACT are still trying to do more > merging here, but it is not easy. I found no high level interface > oriented description of the mechanism used for C++. Perhaps I > simply did not look hard enough, or just did not know how to read > the code correctly. I find the back end of GCC rather difficult > to navigate (and indeed in a recent email Per Bothner (hope I > remembered the spelling right) claimed that the entire gcc compiler > was ill-documented so why single out the exception handling). I > find that position FAR too pessimistic, and indeed in general the > gcc backend is documented a lot better than many proprietary > compilers with which I am familiar, but in this particular case, > we have not yet achieved the ideal of merging the exception handling > of C++ and Ada. I believe this could only have been achieved if we > had started with a fully documented high level design.
As a first impression the GNAT 3.11 "zero-cost" EH implementation seems to usually generate smaller unwind tables than the egcs C++ EH implementation
(IMNSHO that is the main problem with the current egcs EH - too much executable bloat)
It would be great if the best points of both could be merged.
In article <m3so9aci9g....@fred.muc.de>, Andi Kleen <a...@muc.de> wrote:
> As a first impression the GNAT 3.11 "zero-cost" EH implementation > seems to usually generate smaller unwind tables than the egcs C++ > EH implementation
> (IMNSHO that is the main problem with the current egcs EH - too much > executable bloat)
> It would be great if the best points of both could be merged.
> -Andi
I suspect this comparing apples and oranges, I am not sure what target you are on, but I think you may be comparing the stack unwinding tables of gcc with the static exception tables of GNAT, but maybe not. Certainly the approach used for finalization in GNAT will use less table space than the approach used in G++ but who knows if that is significant.
As far as unwinding goes, on DEC Unix, we use the standard DEC Unix library calls for unwinding, and on SGI, we use the standard SGI routines. On the x86, we do prolog interpretation, which is very messy but is highly space efficient. On Solaris, we plan to use the standard gcc mechanism, but have not figured it out yet.
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
In article <7gs0d5$lv...@nnrp1.deja.com>, Robert Dewar <robert_de...@my-dejanews.com> wrote:
>I tried to understand what had been done for C++ but failed. Others >here at ACT are still trying to do more merging here, but it is not >easy.
I'd be happy to answer any questions.
>I found no high level interface oriented description of the >mechanism used for C++. >I believe this could only have been achieved if we had started with a >fully documented high level design.
You make it sound like it can't be achieved. :-(
Now, back to the first part... There are roughly three routines to call, one starts a region, one ends it, and the last to emit the region handlers. My hope was it would be easy to understand/use.
/* Start an exception handling region. All instructions emitted after this point are considered to be part of the region until expand_eh_region_end () is invoked. */
extern void expand_eh_region_start PROTO((void));
/* End an exception handling region. The information about the region is found on the top of ehstack.
HANDLER is either the cleanup for the exception region, or if we're marking the end of a try block, HANDLER is integer_zero_node.
HANDLER will be transformed to rtl when expand_leftover_cleanups () is invoked. */
extern void expand_eh_region_end PROTO((tree));
/* Called from expand_exception_blocks and expand_end_catch_block to expand and pending handlers. */
The first two are meant to be fairly easy to use, maybe you can explain what you found hard to use about them, and I can clarify.
The last is somewhat magical, and really should be buried deeper into the backend. Maybe if we can move the exception specifications into the backend, the reason for not having it in the backend can be removed. But, if one reads what java does:
(thanks Per), you can just plug this in (or move it into the backend, fix java to not include it), and just put in a call to emit_handlers.
That is the $0.05 tour. :-) Now, admittedly, there are a few more concepts to understand, like the cleanups in TARGET_EXPR/expand_decl_cleanup _are_ run on an exception, for example, but not that many more.
In article <FBCAHD....@kithrup.com>, m...@kithrup.com (Mike Stump) wrote:
> In article <7gs0d5$lv...@nnrp1.deja.com>, > Robert Dewar <robert_de...@my-dejanews.com> wrote:
> >I tried to understand what had been done for C++ but failed. Others > >here at ACT are still trying to do more merging here, but it is not > >easy.
> I'd be happy to answer any questions.
What I would really look for here is a comprehensive document, or a pointer to documentation within the source, that would answer all the questions. The trouble is that it is quite clear that the current interface will not meet all the Ada requirements. The differences are partly at the detail level, partly more fundamental. But we need to be discussing changes to an existing interface document under some kind of configuration control. At least that's the way we work :-)
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
In article <7gpsrd$qc...@nnrp1.dejanews.com>, Robert Dewar <robert_de...@my-dejanews.com> writes:
> In article <FB8DLq....@kithrup.com>, > m...@kithrup.com (Mike Stump) wrote:
> That certainly seems backwards to me, for me the sequence of > software production goes like:
> design and document the interfaces > refine the interfaces till they are correct > then implement
This is an idealistic view, as proving an interface correct is not (yet) exact science. The mechanical and engineering science use a different sequence which I like very much, as it copes with real life problems:
design and document the interfaces refine the interfaces till they are accepted by peers implement (this may infere a few changes in the interfaces) document the interfaces "as built".
In article <J3YY2.2192$2j3.3...@clnws01.we.mediaone.net>, pmar...@mail.earthlink.net (Pascal F. Martin) wrote:
> This is an idealistic view, as proving an interface correct is not (yet) > exact science. The mechanical and engineering science use a different > sequence which I like very much, as it copes with real life problems:
> design and document the interfaces > refine the interfaces till they are accepted by peers > implement (this may infere a few changes in the interfaces) > document the interfaces "as built".
Sure some iteration is required, but it can often be minimized, and you can come very close to the ideal.
For example, for one project I did for Honeywell, a full real time executive, with thread support, synchronization primitives, integral debugger etc, was done by FIRST writing the user reference manual documenting the API in completely detail, THEN writing the executive (some 50,000 lines of assembly code). very few changes were required to the manual, almost all stylistic copy-editing stuff (they hired an English PhD to look over the manual and I had to let her make a *few* changes to avoid her completely destroying important technical stuff :-)
But in any case our discussion here is over detail. Either approach is very far from the "implement first, document alter if at all" method :-)
Robert Dewar
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own