I'm installing a search function for the GPC web site (using
ht://dig).
Currently, you can try it at http://www.gnu-pascal.de/search.html
(In the future the search form will be added to the regular pages.)
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
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
I've uploaded a new alpha to http://www.gnu-pascal.de/alpha/
You will hate this release ... at least if you make heavy use of
external declarations or other directives. We all knew that some
backward-incompatible changes in this area would have to be made,
now that's happened. PLEASE READ THE NOTES BELOW FOR DETAILS.
Changes that affect building GPC:
=================================
- Dwarf2 debug info (the default under Linux and many other systems
with gcc-3) finally works. This means you can now build GPC with
gcc-3 without `-g0' or `-gstabs'.
- Building GPC no more requires gperf (those who maintain build
dependencies please note this).
- Besides the source distributions as before, there is now also a
"minimal" distribution. This is compressed with bzip2 instead of
gzip and does not contain any generated files. These files will be
generated automatically when building GPC, but you need some
additional tools installed:
bzip2, bash, *GNU* sed, GNU awk, GNU m4, bison, flex, autoconf,
help2man, makeinfo (at least version 4.1).
Other changes:
==============
- Forward referencing pointers generate proper debug info now.
- Discriminant identifiers are allowed as variant record selectors.
- `export Foo = all (...)' (fjf811*.pas)
- Delphi-compatible `initialization', `finalization' (chief43*.pas)
- Type-casts are BP compatible now, in particular, value type-casts
between ordinal and real or complex types don't work anymore.
- All non-ISO-7185 keywords can be used as identifiers (with two
small exceptions). (fjf440.pas)
- `pack-struct' does not imply bit-level packing anymore (only
explicit `packed' records and arrays do).
- New options `--[no-]ignore-packed' (`--ignore-packed' is the
default in BP mode). (fjf796*.pas)
- New option `--maximum-field-alignment=N'
- `{$[no-]pack-struct}' as a compiler directive
- New options `-W[no-]local-external' (implied by `-Wall')
- New options `--vax-pascal', `--mac-pascal'
- Mac Pascal directives `definec', `macro', `undefc', `ifc',
`ifoptc', `elsec', `elifc', `endc', `errorc'
- Units without `implementation' part
- When passing a schema variable as an untyped argument, the whole
schema, including the discriminants is passed. (fjf798.pas)
- `TimeZone' in `TimeStamp' counts seconds *east* of UTC now (not
west, as before). (datetimedemo.pas)
- Some bug fixes related to operator overloading.
- Variables declared in interfaces of modules are now initialized
(capacity of strings etc.). (daj3.pas, sven14c.pas, nick1.pas)
- Various other bug fixes.
Directives and attributes:
==========================
- `external name' works (BP compatible). So
procedure Foo; external; asmname 'bar';
or (equivalent previously)
procedure Foo; asmname 'bar';
can be changed to
procedure Foo; external name 'bar';
GPC also accepts
procedure Foo; external 'libname' name 'bar';
but ignores 'libname'. It could be supported via automake, but
since automake is to be replaced by gp, anyway, it seems pointless
to do it now.
- `name' works as an attribute.
- `attribute's with single parameters can be written with `=', so
attribute (name ('foo'))
and
attribute (name = 'foo')
are equivalent.
- Linker names (whether by `external name' or as an `attribute') can
be string constant expressions now (e.g., involving declared
string constants and `+'). The same applies to module/unit file
names specified with `in'.
- `asmname' is deprecated (and will be dropped in a future version).
* External `asmname' constructions can be changed as shown above.
* In a unit interface, change
procedure Foo; asmname 'bar';
to
procedure Foo; external name 'bar';
*if* the routine is really external (e.g. implemented in a C
file or library); otherwise to
procedure Foo; attribute (name = 'bar');
(previously, GPC didn't care, but now you have to distinguish
these cases).
- `external' without an asmname (whether by `external name' or as an
`attribute') defaults to all-lowercase linker names now. GPC will
give a warning now (because of the change). This warning will
disappear in the future (but the change will remain in effect, of
course).
Routines without `external' or asmname still use first-uppercase
linker names, for those who care. But it's not recommended to rely
on this.
So change
procedure Foo; external;
to
procedure Foo; external name 'Foo';
(or change the corresponding C code to `foo' if that's under your
control).
- All of the above applies to variables as well.
- `c', `c_language' are also deprecated. Instead of
procedure Foo; c;
or
procedure Foo; c_language;
write
procedure Foo; external;
(if you don't mind the warning for now), or
procedure Foo; external name 'foo';
(if you prefer to make the linker name more explicit).
- `static', `volatile' and `register' for variables are no prefix
directives anymore, but attributes. E.g.
var Foo: static Integer;
becomes
var Foo: Integer; attribute (static);
- Same for `inline' with routines.
inline procedure Foo;
becomes
procedure Foo; attribute (inline);
- A new attribute `const' for variables (really read-only -- unlike
BP's "typed constants", and also applicable to external
variables).
- `attribute' for routines doesn't imply `forward' anymore, so you
don't have to declare routines twice in a program or
implementation part when setting the linker name or some other
attribute. E.g.
procedure Foo; attribute (noreturn); { forward; -- ignored here before }
procedure Foo;
begin
Halt
end;
becomes:
procedure Foo; attribute (noreturn);
begin
Halt
end;
A final example:
procedure Foo; asmname 'bar'; attribute (noreturn);
procedure Foo;
begin
Halt
end;
becomes:
procedure Foo; attribute (noreturn, name = 'bar');
begin
Halt
end;
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
The download links on the GPC web page were broken for some hours,
due to a mistake. Everything should be working normal again now.
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
Hi,
the GPC pages are moving to a new web server. If everything goes
well, you won't notice any difference, but if you encounter any
problems, please drop me a note.
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
unsubscribe gpc-announce roland.rick(a)lgt.com
LGT Financial Services Limited
Herrengasse 12, P.O. Box 85, FL-9490 VADUZ
Principality of Liechtenstein
Tel. +423 235 24 44, Fax +423 235 24 40
Mail: lgt.fs(a)lgt.com
Web: http://www.lgt.com
----------------------------------------------------------------------
Privileged/Confidential Information may be contained in this message.
If you are not the addressee indicated in this message (or responsible
for delivery of the message to such person), you may not copy or
deliver this message to anyone. In such case, you should destroy this
message and kindly notify the sender by reply email. Please advise
immediately if you or your employer does not consent to Internet email
for messages of this kind. Opinions, conclusions and other information
in this message that do not relate to the official business of my firm
shall be understood as neither given nor endorsed by it.
-----------------------------------------------------------------------
subscribe gpc-announce roland.rick(a)lgt.com
LGT Financial Services Limited
Herrengasse 12, P.O. Box 85, FL-9490 VADUZ
Principality of Liechtenstein
Tel. +423 235 24 44, Fax +423 235 24 40
Mail: lgt.fs(a)lgt.com
Web: http://www.lgt.com
----------------------------------------------------------------------
Privileged/Confidential Information may be contained in this message.
If you are not the addressee indicated in this message (or responsible
for delivery of the message to such person), you may not copy or
deliver this message to anyone. In such case, you should destroy this
message and kindly notify the sender by reply email. Please advise
immediately if you or your employer does not consent to Internet email
for messages of this kind. Opinions, conclusions and other information
in this message that do not relate to the official business of my firm
shall be understood as neither given nor endorsed by it.
-----------------------------------------------------------------------
I've uploaded a new alpha version. Besides many internal cleanups
(again) and bugfixes (thanks especially to Artur Zaroda for many
reports), one new feature is to preserve the case of identifiers in
error messages etc. and an optional warning for varying cases.
GPC now installs the two utilites `binobj' and `gpidump' (with man
pages if the program `help2man' is available at build time).
However, since `binobj' is a BP compatiblity utility, and `gpidump'
is mostly useful for debugging and understanding GPC internals,
these programs might not be too useful to most GPC users. Those who
build GPC packages of some kind, please note the new files.
The structure of the homepage has changed. (It is now generated
using `makeinfo --html' instead of `texi2html'.) Since many file
names are different now, your links and bookmarks might break, but
if you start from the home page, you should be able to find anything
again. (Except for the info and texi versions of the to-do list
which have been dropped from the home page. They're still contained
in GPC source (info and texi) and binary (only info) distributions,
and the HTML version is on the home page.)
Furthermore, each page now contains an input form at the bottom
where everyone can enter their additions. This was inspired by a
discussion on gpc-doc. We hope this will encourage more
contributions to the documentation. BTW, the source code of the CGI
program that handles this input form can be found in my `cgiprogs'
package in contrib/frank.
There are some slightly incompatible changes. I hope they won't be a
big problem to anyone:
- dropped `--[no-]borland-char-constants' (now simply coupled to
dialect options)
- `=' and `<>' comparisons of structures (arrays, records, ...)
except strings and sets are forbidden now
- irrelevant operands and arguments (e.g. `foo in []'; `bar * []';
`Im (baz)' if `baz' is of real type) are not necessarily evaluated
anymore (which is allowed by the standard); instead, a warning is
given if they have side-effects
- only one program, unit, module interface or implementation or a
module interface and the implementation of the same module are
accepted in one source file; new options
`--[no-]ignore-garbage-after-dot' (fjf735*.pas)
- dropped the usage of `GetMem' as a function with one parameter
(only the BP compatible usage as a procedure with two parameters
remains). (Both are semantically equivalent, so if you used the
function syntax, you'll only have to make a minor change in your
code, possibly using a new variable.)
- accessing the variable `FileMode' now requires using the `GPC'
(or, for BP compatibility, the `System') unit
- routines declared in a program or module/unit implementation, with
an `asmname' or `attribute' specification must now be marked
`forward' explicitly (not so in an interface since those
declarations are always forward if not external).
E.g., previously:
procedure Foo; asmname 'Bar';
procedure Foo;
begin
end;
Now (note, this way also works with previous GPC versions):
procedure Foo; asmname 'Bar'; forward;
procedure Foo;
begin
end;
The `asmname' etc. stuff is still quite confusing and unlogical
(otherwise, you shouldn't need the two declarations at all), but
at least now `forward' should work regularly.
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
subscribe gpc-announce roland.rick(a)lgt.com
LGT Financial Services Limited
Herrengasse 12, P.O. Box 85, FL-9490 VADUZ
Principality of Liechtenstein
Tel. +423 235 24 44, Fax +423 235 24 40
Mail: lgt.fs(a)lgt.com
Web: http://www.lgt.com
----------------------------------------------------------------------
Privileged/Confidential Information may be contained in this message.
If you are not the addressee indicated in this message (or responsible
for delivery of the message to such person), you may not copy or
deliver this message to anyone. In such case, you should destroy this
message and kindly notify the sender by reply email. Please advise
immediately if you or your employer does not consent to Internet email
for messages of this kind. Opinions, conclusions and other information
in this message that do not relate to the official business of my firm
shall be understood as neither given nor endorsed by it.
-----------------------------------------------------------------------
This is the announcement of the first public release of the mail
tools.
The mail tools are a set of programs to do various things with
email, mostly in batch mode. The most important ones are `Semail' to
send mails and `prmail' to process received mails (both written in
GNU Pascal).
The package also contains some generally useful units for GNU Pascal
for sending and processing email, together with some demo programs,
and some generally useful scripts related to mail handling.
The mail tools are free software (GPL, LGPL).
The current version of the mail tools can be found at
<http://gnu-pascal.de/contrib/frank/programs.html>.
Nicola Girardi
Frank Heckenbach
--
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