I've uploaded a new alpha to http://www.gnu-pascal.de/alpha/
The major incompatibility, compared to the previous release is that
types liks `Integer (16)' have to be changed to
`Integer attribute (Size = 16)' (as discussed recently).
New features:
* `Integer (16)' etc. changed to `Integer attribute (Size = 16)'
(works for integer and Boolean types) (fjf861.pas) (@)
* types can have attributes (note: no preceding `;') (fjf860*.pas)
* object methods can have attributes (fjf826*.pas)
* new attributes `iocritical' (fjf824*.pas), `ignorable'
(fjf839*.pas) for routines
* field names and array indices in initalizers are recognized
(waldek5*.pas) (options `-W[no-]field-name-problem' removed, @)
* object directives `published', `public' (both equivalent),
`protected' (scope limited to object type and derived object
types), `private' (scope limited to current unit/module)
(fjf864*.pas) (options `-W[no-]object-directives' removed, @)
* new options `-W[no-]parentheses' (fjf848*.pas)
* new type `AnyFile' for parameters and pointer targets (fjf821*.pas)
* Mac Pascal specific features are supported according to the
dialect options (M)
* GPC doesn't use `gpm' files anymore (instead, each module has an
implicit `MODULENAME-all.gpi' interface which is a regular `gpi'
file)
* trimming string relations as functions (`EQPad' etc.) (fjf873.pas)
* new options `-W[no-]interface-file-name'
* `SeekEOF' and `SeekEOLn' use `Input' implicitly when no file is
given (fjf871.pas) (B)
* tagging for `with' statements (Sun Pascal) (tom6.pas)
* new option `--sun-pascal'
* the operator precedence and associativity of `+' and `-' is now as
defined in EP by default (and as in BP with `--borland-pascal')
<Pine.LNX.4.44.0210251249500.6181-100000(a)duch.mimuw.edu.pl>
(fjf863*.pas) (@)
* dynamic object methods (fjf859.pas) (B)
* in `--borland-pascal' mode, `Assign' unconditionally
(re-)initializes its file parameter (fjf858.pas)
* make the program/module/unit finalizers non-public (`static' in C
sense), omit them if easily possible
* non-`interface' modules with empty implementation part (pmod1.pas,
fjf843.pas)
* `maximum-field-alignment' and `[no-]field-widths' work as local
compiler directives now (fjf842.pas)
* dropped `{$debug-statement}' (should not be necessary anymore, now
that debug info mostly works)
* new options `--[no-]longjmp-all-nonlocal-labels'
* dropped computed `goto' (never worked for nonlocal `goto' into the
main program, implementing it would be quite difficult, probably
not worth it) (@)
* `TimeStamp' is now a packed record (E)
* `--interface-only' does not require `-S' or `-c' anymore (and does
not create an object file)
Fixed bugs:
* some functions in boolean shortcuts are always called
(fjf226*.pas)
* possible stack overflow when using string concatenation
in a loop (fjf419*.pas, fjf345e.pas, fjf460b.pas) - breaks
berend3.pas (less important because strange test case, and just
another instance of existing contourbug.pas)
* declarations of a module interface are not visible in
the implementation (kevin13.pas, mod12.pas)
<Pine.BSI.3.96.971110210330.7570A-100000(a)malasada.lava.net>
* check parameter and result variable names in repeated
forward etc. declarations <20010321204051.A611@plato> (fjf284.pas,
markus8.pas, fjf850*.pas)
* initialized object variables don't work (fjf445*.pas)
* the parser does not always recover well after a parse
error <199911040915.KAA11168(a)humulus.daimi.au.dk> (fixed the case
given in this report; if there are other cases, please report)
* packed array/record fields don't work in `Read' etc.
(tom5.pas)
* file parameters must not automatically be bindable in
`--extended-pascal' (fjf193[c-e].pas)
* give an error rather than a warning when casting between
types of different size in `{$X-}'
* simplify code generated to compute size of dynamical
variables if no bitfields are involved (ok with gcc-3)
* detect invalid array slice access with constant indices
at compile-time (peter2*.pas)
* automatically close dynamically allocated files on
`Dispose' and files declared in a statement block at the end of
the statement block <6r9ir5$7v5$1(a)nntpd.lkg.dec.com>
(fjf219[a-d].pas, fjf502.pas)
* initialize local static variables in the main
constructor, not in each routine call (fjf458*.pas)
* modifying `for'-loop counters within the loop or in a
subroutine is not allowed <200005240807.EAA05355(a)mail.bcpl.net>,
<Pine.LNX.4.44.0210281004000.31943-100000(a)duch.mimuw.edu.pl>
(az47.pas, fjf837*.pas)
* label declarations must not be allowed in unit/module
interfaces and module implementations (but in unit
implementations, BP compatible, though we don't allow nonlocal
`goto's into the constructor) (fjf835*.pas)
Frank
--
Frank Heckenbach, frank(a)g-n-u.de, http://fjf.gnu.de/, 7977168E
GPC To-Do list, latest features, fixed bugs:
http://www.gnu-pascal.de/todo.html
GPC download signing key: 51FF C1F0 1A77 C6C2 4482 4DDC 117A 9773 7F88 1707