Hi everyone,
I sent this announcement to gpc-announce@gnu.de on Monday, but it still hasn't appeared here. So apparently that list or its moderator is dead or something, or they've stopped forwarding gpc-announce to this list. (If the latter is not the case, you'll get the announcement again -- if this bothers you, please complain to the list owner, not me. ;-)
As some of you have found out yourselves by now, GPC version 20020304, the release candidate #3 for GPC 2.1, has been uploaded to ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/current/gpc-20020304.tar.gz
(CVS is not available currently.)
Due to a relatively large number of bug reports and discussions on the mailing list in the last several weeks, there have been many changes since RC 2.
Some internal problems which led to compiler crashes (especially with `-O3' and/or `-g', and often hard to reproduce) have been resolved (thanks to J. Booij, Matthias Klose and others for reports). I hope that GPC will now crash noticeably less often than it did before. ;-) However, it is (still) a known problem that `-g' (debug info) does not work perfectly, and fails completely on some platforms (such as IRIX/MIPS).
A number of other problems have been solved. Some of the most important ones are described below. For a more detailed listing, please refer to the `Fixed bugs' section of the To-Do list.
First and foremost, the type checking has become much stricter. This might cause GPC to find some "new" bugs in your programs, but I suppose they often will turn out to be real bugs in the Pascal code which just were not detected before (as was the case with some bugs that appeared in my own Pascal code). E.g., two records which are declared separately with identically looking declarations are not compatible in Pascal, but GPC used to accept them as compatible.
The automake and GPI file mechanisms have been changed (and hopefully improved) significantly (thanks to the Chief for some bugs reports). Since I can't test them in every conceivable way, please check if they (still) work for you.
Many things related to schema types have been changed (only for the better I hope).
Various other bugs have been fixed, e.g., the long-standing problem that initializers of arrays of length 1 didn't work and that the import and export of huge interfaces was very slow (quadratic time behaviour).
Some complex number routines have been improved numerically, thanks to Emil Jerabek and Joe da Silva.
The manual is now available (partly) in a Croatian translation, thanks to Mirsad Todorovac.
A new feature is the `FormatString' function (a main use of which will be for internationalization support, together with Eike Lange's Intl unit). Many of the planned features are still missing, but it should be sufficient already for many ordinary purposes.
Some things have been added in the object-orientation support. In particular, abstract objects and methods work fully now (they were only partially supported in previous versions), the `is' and `as' operators have been implemented, and `TypeOf' does not return an untyped pointer anymore, but a pointer of type `PObjectType' pointing to the object type record (a.k.a. VMT) which currently contains the fields `Size', `NegSize', `Parent' and `Name'.
Due to some changes in GPC, some problems with debug info in the COFF output format (which only DJGPP still uses, as far as I know) may now appear more often than they did before. The problems arise when the same identifier is used in different units (even with different asmnames), or for a global variable and a local function (see test/fjf500.pas for further notes and an example). (The problems themselves are not now, and seem to be inherent in the COFF format, so only a switch of DJGPP to ELF would be a real solution, and it's uncertain if this will ever happen. However, when GPC will support qualified identifers, chances are that this will make one or both of the problems disappear.) If you are affected by this problem under DJGPP (error messages: `Fatal error: C_EFCN symbol out of scope', or duplicate definitions at link time even though asmnames are different), you might have to rename one of the offending identifiers, or compile without debug info.
I've tested GPC on some systems, test reports from other systems are welcome, and if you find new or especially important bugs, or very important missing features, please report them.
I'll be out of town over the weekend, so I can't look into any new bugs until Monday ...
Frank