Hello!
Here again is a new GPC alpha version.
Changes since gpc-970412:
General news:
* `Packed' works. A "packed array [ 1..8 ] of Boolean" now occupies one byte instead of 8 like before (or like with Borland Pascal which claims to pack all arrays automatically). Also, the type
packed record a: Boolean; b: 0..3; c: -3..3; end;
now also has just one byte (instead of 3). :-)
As a result, the built-in procedures `pack' and `unpack' are probably broken. Since I have no experience with these procedures, please send me some test programs which do exactly "writeln ( 'OK' )" if everything works, or else "writeln ( 'failed' )" (or crash or don't compile) if not.
Thanks in advance.
* GPC now has yet another new option `--debug-tree="Foo"' which is useful for debugging GPC itself. I use it to look at GPC's internal information about a variable `foo' during compilation by inserting (*$debug-tree="Foo"*) into the Pascal source.
* Implemented more warnings about unrecognized compiler directives or combinations which make no sense.
Bug fixes:
* Comparisions of ordinal types as `if' conditions work again (was broken in gpc-970412).
* `Const' or `protected Var' parameters which are transported through GPI files do not spoil type declarations any more.
* Assignment to char type subranges work again. (Was broken, probably in gpc-970215.)
* The `write' and `writeln' procedures applied to subranges (e.g. `Char' subranges, `Byte' variables, etc.) work now.
Borland Pascal:
* Untyped parameters now can be passed as parameters to subsequent functions which also want untyped parameters.
Extended Pascal:
* GPC now warns about `or else' and `and then', which are GPC extensions, when `--extended-pascal' is given. (ISO Pascal wants `or_else' and `and_then'.)
* Assignments <char variable> := <string value> (allowed in EP, not in BP) now work in parameter passing, too. (This means they should work in all situations now.) With `--borland-pascal', a warning is given.
* Modules: Exported ranges work.
* I herewith present first results from the Schema Project. (-: The following schemata work now:
Type MySubrange ( LastChar: Char ) = 'A'..LastChar; MyArray ( n: Integer ) = array [ 1..n ] of Real;
(Not yet implemented: `New', `Dispose', and parameter passing with undiscriminated schemata. And probably more.)
If you want to contribute to this part of GPC, please test these types of schemata in as many contexts as possible. It is impossible for myself to try this out with all underlying data types, in the context of assignments, other expressions, parameter passing, etc.
The source - a diff against gpc-970412 - is being uploaded to
ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/alpha/
together with binaries for DOS (DJGPP), DOS and OS/2 (EMX), Linux (ELF), and FreeBSD.
Thanks to Abimbola A. Olowofoyeku, Frank Heckenbach, Berend de Boer, and Sven Hilscher for finding the bugs.
Again: Is anybody interested to help to document all this?
For example, to write a list of Extended Pascal [Borland Pascal] features which work [do not yet work] in GPC which replace the somehow outdated chapter "Extensions", "Extended Pascal", and "Borland Pascal" in the on-line manual? Or to complete and improve the description of the compiler option in chapter "Invoking GPC"?
Finally I have one more question:
Let's assume the Schema Project to be done. How much compatibility to Extended Pascal and to Borland Pascal can we claim then?
In case it is EP > 90% I would like to enter beta test stage and to prepare for the release of gpc-2.1. If not, I would like to know which parts of EP should be implemented to achive > 90% compatibility.
(* This condition arises from former announcements where I misunderstood some notes in the GPC source and already claimed 90%. )-: Instead of decreasing this number in future releases I want to improve GPC and announce at least 91% - which must be justified then. We aim the possibility to have 100% EP with `--extended-pascal' anyway. {I aim the 100% only with the switch, because - for instance - this nested comment would be an error in Extended Pascal.;-} *)
Greetings,
Peter
Dipl.-Phys. Peter Gerwinski, Essen, Germany, free physicist and programmer peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201] maintainer GNU Pascal [970420] - http://home.pages.de/~gnu-pascal/ [970125]