CBFalconer wrote:
Russell Whitaker wrote:
I suspect the first problem would be to convince Gabriel Dos Reis, et al, to change the status of 3.3.6 from "open for regression fixes only" to add "and GPC integration"
I suspect the barrier, in the past, has been that unusual things have to be done to the gcc core in order to handle such things as case insensitive identifiers with a specific case sensitive linkage form, debuggery and validation which includes range limits, modularization, native string formats, etc. However, if Ada is now successfully integrated most of these problems should have been solved, and the politics will be in merging how they were solved in gcc/ada and in gpc.
Indeed, there are some issues, though not exactly those you're thinking of.
The most important ones (WRT integration) currently are automake, support of older backend versions (in particular gcc-2), and the separate preprocessor (which is responsible for the problems with conditionals in gcc-3.3.x since these versions now basically assume a built-in preprocessor -- we're partly working around it, but it's clear that this is not the right solution). Debugging is also an issue (and it still looks rather dark), which will probably require a lot of work, but AFAICS it doesn't interfere with integration that much.
On a broader perspective, there has been a lot of "cruft" in GPC for a long time (actually since its beginning) for various reasons, mostly historical ones. For a few years, I've been cleaning up things together with Waldek, and I think we've made some progress. I'd estimate we're about 2/3 done now.
For the remaining big issues there are plans:
- Older backend versions: Mostly done, and testing. I've yet to test some particular configurations, and occasionally I hit a new bug in gcc-3.x, but recently Waldek has usually provided fixes quickly which got mostly integrated into the main gcc distributions. Still, I'd like to make at least one more major release (gpc-2.2 or 3.0, whichever we might call it) with gcc-2 support deprecated, but not removed. It will probably get more widespread use than the betas, and given the extensive changes since gpc-2.1, I'd prefer users to still have the choice WRT backend versions.
- Automake: To be replaced by gp. (gp: Mostly working, some smaller known problems, some less-important to-dos.) Again, I'd like to keep automake present, but deprecated in one more major release for the same reasons as above.
- Preprocessor: Has to be rewritten. (I have the plans, just have to find the time to do it.) Since the effects on normal Pascal code will be small, we probably won't need a long transition period here.
All in all, if things go well, all of these issues should be resolved after the next major GPC release.
If you ask me when this will be, I don't know. And I should point out that I'm a supporter of "release when it's ready", instead of setting fixed release dates. The latter IMHO smells too much like certain proprietary companies, and usually leads to the same results -- such as last year when a fatal bug which was clearly identified (and a fix provided) was intentionally left unfixed in a GCC release (3.2.2 AFAIR) because of the fixed release schedule. So that's one reason why I have some aversions against integration, if those schedules will also dictate our releases. (BTW, would this be so, or could we also make releases independent of GCC schedules, e.g. when we think it's stable rather than on a fixed date?)
I am on the outside looking in and pontificating. I expect Frank Heckenbach, who has done the majority of work on gpc, will be unusually sensitive to change. He has almost certainly had to resort to various expedients, not necessarily clean, in the past. Consultation with the Ada integrators should certainly help.
I suppose trying to integrate now will cause quite a bit more work in total (such as keeping two source trees in sync for the current GCC branch and for older backends -- it's much easier with the ifdefs we have now, in particular since many of the changes (so far and upcoming) are quite backend-independent). Again, once the issues above are solved, this won't be such a big problem (e.g., differences between gcc-3.x versions are much smaller in their effect on GPC).
So I don't want to haste things (now that I'm beginning to see the light at the end of the cleanup-tunnel ...). If anyone wants to do it now, you can try it (it's free software), but don't count on my support. I'll continue working on a single source tree for different backend versions etc. until I think it's ready, even if it may take another year or two.
Frank