Is GPC dead?

John L. Ries jries at salford-systems.com
Fri Dec 30 03:34:10 CET 2016


Thanks again.  That clarifies things a lot.

--------------------------|
John L. Ries              |
Salford Systems           |
Phone: (619)543-8880 x107 |
or     (435)867-8885      |
--------------------------|


On Thu, 29 Dec 2016, Waldek Hebisch wrote:

> John L. Ries wrote:
> >
> > In my humble opinion, GPC should continue to be a native Pascal compiler,
> > not a translator.  It should be updated to use the current GCC back ends
> > (Waldek has done some of this in the past and I accept his
> > characterization of the process; but I think it's necessary if GPC is to
> > continue to be viable); and the goal should still be to get that aspect of
> > the code completely up to date so that GPC can be added to GCC.  And I
> > think it highly important that it be made easy to create binary packages
> > (I can probably devote some time to this, starting with a SlackBuild
> > script, but it will go quicker if more than one person is doing it,
> > especially since for me it would be a learning experience) and do whatever
> > else can be reasonably done to get GPC into people's hands (to including
> > making Linux, Windows, and OSX builds available for download from the
> > website), remembering that it appears to have completely disappeared from
> > Linux distros, and extant collections of UNIX toys.
> >
> > I assume that the codebase is maintained in some sort of revision control
> > system, such as Git.  If it isn't, then it should be.
>
> Current version is at:
>
> https://github.com/hebisch/gpc
>
> >
> > I'll also accept Frank Heckenbach's characterization of the state of the
> > codebase (a mess), as I doubt things have improved since he last posted on
> > the subject.  A rewrite is probably in order, but that is best determined
> > by those who have some familiarity with said codebase.  Frank suggested
> > that GPC translate to C behind the scenes, but I fail to see what that
> > would buy us, except the elimination of the need to interface directly
> > with the GCC back end, which is apparently a pain (but perhaps that is a
> > good enough reason by itself).  In any case, a rewrite would of necessity
> > be a long term task and should probably be done gradually.
>
> I do not think rewrite is a good idea.  In many cases code is
> messy for a reason: the task it has to do is messy.  When
> planning rewrite one looks at big picture and gets impression
> that things can be organized neatly.  But messines comes from
> little details which are not visible in big picture.  Rather,
> the correct approach is constant restructuiring.
>
> One problem is that GCC backend puts considerable constraints
> on the frontend.  So loose coupling between frontend and the
> backend could bring better structure.  But then we have to
> reimplement several parts that we currently take from backend.
> For example backend constant folder is several thousneds of
> lines -- using our data structures we would have to duplicate
> it.
>
> > I've never written a compiler (though I have worked on interpreters from
> > time to time starting in college), but if I were to write a Pascal front
> > end to GCC from scratch, my plan (until I knew better) would probably be
> > to use bison and flex to specify as much of the syntax (and meaning
> > thereof) as possible, adding such C (or C++) code as is necessary to
> > communicate with the back end and the user.
>
> Yes, syntax is mostly handled by flex and bison: corresponding
> source files makes about 7% of frontend sources.
>
> >  It would be more elegant to
> > write it in Pascal (as GNAT is written in Ada), but it would require a
> > Pascal compiler to compile it and there aren't many of those in common use
> > anymore (Free Pascal being the most visible one of late).  The runtime
> > library, however, would be written completely in Pascal and compiled with
> > GPC, though it would probably call standard C functions to handle low
> > level I/O and memory management (at least);
>
> Runtime is mostly in Pascal, but part of OS interface is in C.
>
> > such would be facilitated by a
> > utility to translate C header files into Borland-style Pascal units (or
> > Extended Pascal modules).  Since this would be a front-end to GCC, it
> > would have to interface at least indirectly with the C runtime anyway.
> > I'm *guessing* that most of the compiler maintenance would involce updates
> > to the GCC interface and bug fixes; and that most real development would
> > be on the runtime (which would be written in Pascal), but again, chances
> > are excellent that I have no idea what I'm talking about.
>
> Actually, large parts of real developement were on compiler proper.
> One thing is to implement desirable language extensions.
> First, there are still unimplemented corners of Extended Pascal
> (mainly set schemas).  Much of Object Pascal is done, but there
> are nice features (views) missing.  ATM there is no exception
> support (I have non-working code -- it handles syntax, but
> couses miscompilation in several cases).  It is not clear
> if overloading is desirable -- ATM it is available for operators,
> but not for functions and procedures.
>
> Another thing is error checking.  First, to catch errors requires
> nontrivial effort.  Second, even more effort goes into generation
> of sensible error messages.
>
> --
>                               Waldek Hebisch
>
> _______________________________________________
> Gpc mailing list
> Gpc at gnu.de
> https://www.g-n-u.de/mailman/listinfo/gpc



More information about the Gpc mailing list