This is gpc-todo.info, produced by makeinfo version 4.0 from
gpc-todo.texi.


File: gpc-todo.info,  Node: Top,  Next: Known Bugs,  Up: (dir)

The GNU Pascal To-Do List.
**************************

   This is the To-Do list for the GNU Pascal Compiler.

   Information about GPC as well as GPC itself for download can be
found on the GPC home page (http://www.gnu-pascal.de).

   This list is part of GNU Pascal.  Copyright (C) 1997-2002 Free
Software Foundation, Inc.

   The GNU Pascal development team is constantly working on making GNU
Pascal more reliable and more comfortable. However, there are some
known bugs which will take some time to be fixed (any help welcome!),
and we do not want to hide them from you. You might also be interested
to know what features are planned to be implemented in the future. This
list is meant to keep track of the known bugs and wanted features of
GPC.

   If you want to report a new bug or suggest a new feature, the best
way to do it is in the mailing list. This way, other GPC users can
provide additional ideas, perhaps work-arounds for bugs, and the GPC
maintainers can sooner start to think about how to solve the problem.
The GPC mailing list is <gpc@gnu.de>. To subscribe, send the command
`subscribe gpc your@email.address' in the body of a mail to
<majordomo@gnu.de> (the subject is ignored). An archive of the mailing
list can be found on `http://www.gnu-pascal.de/crystal/gpc/en/'.

   The list changes every few days. The present version refers to the
current GPC snapshot, 20020510.

   This list is part of the GNU Pascal Manual, included in GPC
distributions and snapshots. You can always browse the most current
version of the list on GPC's WWW page in HTML.  If you check the To-Do
list regularly you can decide if and when to try a new snapshort.

* Menu:

* Known Bugs::        Known bugs in GPC
* Planned Features::  Features planned for GPC
* Done::              Fixed bugs and implemented features


File: gpc-todo.info,  Node: Known Bugs,  Next: Planned Features,  Prev: Top,  Up: Top

Known bugs in GPC
=================

   In the following sections, you can find information about GPC bugs
that are known to the developers. The list always corresponds to the
latest developer versions of GPC, usually not to the latest official
distribution.

   If you encounter a bug with GPC, please check whether it is one of
the known bugs. If not, report it to the GNU Pascal mailing list.  (But
always report if you solve the problem! :-)

   Entries will be removed from the list as soon as the problem is
solved in the developers' current GPC version. (Exception: If we can't
reproduce the problem, but someone else can, the entry will be removed
when we hear from this person that the problem is solved.)  Problems
which are announced to be solved, but for which we (or the person who
can reproduce the problem) did not get the proof (i.e., a GPC source
patch) yet, are marked `(ok)'.

   A message ID (like `<42@foo.bar>') refers to a message in the GPC
mailing list (or a newsgroup, denoted with `news:') where the topic was
discussed (often a bug report). A note of the form `(xy20001231)'
refers to an internal message of the GPC developers. A file name like
`(foo42.pas)' refers to the according program in the GPC test suite
included in the GPC source distribution.

   * give a warning rather than an error (and nothing in
     `--borland-pascal') when assigning/passing by value an object of
     derived type to one of a base type (and change the VMT pointer in
     the destination/actual parameter), don't change the VMT pointer
     when assigning to a polymorphic object (chief35[ab].pas), don't
     allow value parameters of abstract types, handle value parameters
     like variables in `is'/`as'

   * possible stack overflow when using string concatenation in a loop,
     and problem with string concatenation and `goto' (contourbug.pas,
     martin1.pas, fjf419.pas)

   * `setlimit' is applied when it shouldn't be ((a) variable/constant
     declarations, (b) `set of ShortCard', (c) constant sets)

   * the capacity of strings declared in interfaces of modules is not
     initialized (daj3.pas, sven14c.pas)

   * (subrange) components of packed arrays should be packed as well
     (but not other types) (daj14[ab].pas)

   * initializers of packed arrays don't work (emil5.pas)

   * some functions in boolean shortcuts are always called
     (fjf226[a-\infty].pas)

   * arithmetic expressions don't work as lower array/subrange bounds
     (fjf248.pas)

   * global dynamic variables don't work (john1.pas)

   * check for using, incrementing, ... unused variables
     <199711270257.VAA06393@mint.mint.net> (kevin2.pas), especially for
     strings, also for `for'-loop counters after the loop (EP 6.8.1)
     and modifying `for'-loop counters within the loop or in local
     routines <200005240807.EAA05355@mail.bcpl.net>

   * types declared in a module interface are not visible in the
     implementation (kevin13.pas, mod12.pas)

   * declaring a procedure in the implementation with the same name as
     an imported procedure doesn't work (chief18.pas), detect name
     collisions between imported EP modules (mod9.pas)

   * packed array/record fields don't work in `Read' etc. (tom5.pas)

   * dynamic sets don't work (->PPS)

   * there are some bugs with mathematical functions; GPC fails, for
     example, the Paranoia test

   * the compiler does not always recover well after a parse error
     <199911040915.KAA11168@humulus.daimi.au.dk>

   * count of parameters in error messages should not include `Self' in
     methods or internal parameters for conformant/open arrays
     <8F990E3D9A6FD1118F3B0000F81EA1D84985CE@exchsa2.dsto.defence.gov.au>

   * bug on machines with strict alignment requirements
     <199906021618.MAA06228@sten27.software.mitel.com>

   * forward referencing pointers generate debug info that appears as
     generic pointers; no information of `with' statements is currently
     given to the debugger

   * check parameter names in repeated forward etc. declarations
     <20010321204051.A611@plato>

   * check that all routines declared in an interface are implemented
     in the corresponding implementation

   * the warnings about uninitialized/unused variables don't work for
     strings, sets, etc.

   * Sparc with gcc-2.95.x: `goto' jumping out of two procedure nesting
     levels doesn't work (GCC bug; fixed in 3.0.1)
     <200111170922.KAA09125@goedel.fjf.gnu.de> (fjf558[op].pas) (->
     `Trap' unit)

   * AIX: `ReturnAddress' doesn't work after use of dynmamic variables
     (GCC bug)

   * powerpc: `--strength-reduce' doesn't work with `for' loops (ok?)


File: gpc-todo.info,  Node: Planned Features,  Next: Done,  Prev: Known Bugs,  Up: Top

Features planned for GPC
========================

   In the following sections, you can find informations about features
which have been suggested and/or discussed for inclusion into GPC,
usually in the GPC mailing list. The division into the sections and the
names of the sections may change when this seems useful. The entries
within each section are in no particular order.

   Some of the entries may be a bit difficult to read. Double question
marks (`??') within the entries mean that it's not yet clear how to do
the thing. Triple question marks (`???') mean that it's not clear
whether to do it at all. ;-)

* Menu:

* Planned - Strings::            String types
* Planned - Records/arrays::     Record and array types
* Planned - Files::              Files
* Planned - Other types::        Other types
* Planned - Units and modules::  Units and modules
* Planned - OOP::                Object oriented programming extensions
* Planned - Misc::               Miscellaneous GPC topics
* Planned - Utilities::          Useful utilities for GPC


File: gpc-todo.info,  Node: Planned - Strings,  Next: Planned - Records/arrays,  Up: Planned Features

Planned features: Strings
-------------------------

   * const/var `AnyString' parameters and pointers (records internally,
     cf. gpc.pas) (GetCapacity; only for var parameters)

   * `SetLength' for non-Pascal string types; use truncate-flag

   * make work on all string types: string functions from
     rts/gstrings.pas, Concat/+ (function with conformant array;
     Optimize `s := s + ch') (fh19971105)

   * new option `--arrays-of-char-as-cstrings={none,zero-based,all}' to
     allow assigning [zero-based] arrays of char to cstring variables
     (warning otherwise) (cstrini2.pas); make padding of those arrays
     in initialized variables and in assignments dependent on this
     switch (fh19970921) (fjf57.pas, ok) and if the length matches
     exactly, give a warning (fh19971013) (cstrassign.pas); pass those
     arrays as cstrings in read*, write*, str (P_*STRING; current
     length=-1 in two places); compile time warning (and treatment as
     non-zero-based) if it's not clear at compile time if a conformant
     array or schema is zero-based or not, and an operation depends on
     this in the zero-based state

   * Short strings (Length, Capacity) and switches
     (tc19980326.2,tc19980327); allow `type x=string' (undiscriminated)
     when switch is set so that strings don't default to length 255
     (fh19971113) (fjf97.pas, ok); don't add a #0 terminator when
     passing as a CString parameter (automatically use String2CString)

   * automatically convert CStrings to Strings?

   * general switch `--bp-strings'

   * offer trimming string relations as functions

   * `WriteStr'-like function

   * wide characters

   * open array/string parameters (`$P', `$V' in BP; undocumented
     `OpenString' identifier in BP)

   * variables of type undiscriminated schema/strings -> remove
     pointers to string constants; functions returning undiscriminated
     schemata (pg19980813.3)


File: gpc-todo.info,  Node: Planned - Records/arrays,  Next: Planned - Files,  Prev: Planned - Strings,  Up: Planned Features

Planned features: Records/arrays
--------------------------------

   * array/record values/initializers: recognize indices and field
     names (sven4.pas), ISO structured constants (constdef.pas);
     variant records <C1256791.0021F002.00@synln01.synstar.de>; allow
     omitting fields; fields in arbitrary order ???; index/field name
     optional; arrays: warning/error when too few fields are given;
     initialized schemata; <200106170346.f5H3ksj22229@mail.bcpl.net>

   * initialized types in records/arrays (inirec[24].pas)

   * when applying `New' to a variant record type with a selector
     given, only allocate the space necessary for the selected variant
     (varrec2.pas) ???

   * Oregon and Vax Pascal structured constants
     <80256540.005E7D08.00@buffer1.quantel.com> ???

   * automatically detected upper array bounds in structured
     constants/intialized variables (-> PXSC)

   * simplify code generated to compute size of dynamical variables if
     no bitfields are involved

   * tagging feature for `with' statements (Sun Pascal) (tom6.pas)
     <200012022215.eB2MFD614424@wsinpa16.win.tue.nl>

   * transpose arrays (Fortran)? <news:918557$mke$1@nnrp1.deja.com>


File: gpc-todo.info,  Node: Planned - Files,  Next: Planned - Other types,  Prev: Planned - Records/arrays,  Up: Planned Features

Planned features: Files
-----------------------

   * `AnyFile' parameters and pointers

   * keep files in FDRList while they live, not only while they're
     open, so `_p_fdrdone' can be applied to all of them

   * packed files (EP) ??

   * `FormatString': left/center/both(?) justification (ok in RTS,
     NEG_WIDTH_LEFT_MASK etc.); rounding (PXSC) ???

   * improve TFDDs (also for typed and untyped files)
     (OpenProc/CloseProc)

   * read/write operators ???

   * let `Assign' call `_p_initfdr' in `--borland-pascal'


File: gpc-todo.info,  Node: Planned - Other types,  Next: Planned - Units and modules,  Prev: Planned - Files,  Up: Planned Features

Planned features: Other types
-----------------------------

   * UCSD Pascal's `Integer[n]' ??? BCD?

   * enum types with specified values ???; Inc, Pred, ... ??

   * enum type extensions (syntax??)

   * check for dereferencing nil pointers

   * general subtypes ???

   * type cast operators ???

   * make `SizeOf' work on specially declared untyped var and const
     parameters (`AnyType'?)

   * sparse sets; sets of arbitrary types ?? ???

   * optimize set constructors even better ???

   * superfluous warning with sets and variable elements (fh19970928)

   * initalization and finalization code for arbitrary types (e.g. GMP
     types)

   * give an error rather than a warning when casting between types of
     different size in {$X-}

   * storage class qualifiers (`external', `asmname', `static',
     `volatile', `attribute')

   * `SELECTED_REAL_KIND' for real types (cf. Fortran, drf) ?? ???

   * resize schemata (cf. `SetLength' in Delphi)

   * subranges with variable limits (couper[23].pas)


File: gpc-todo.info,  Node: Planned - Units and modules,  Next: Planned - OOP,  Prev: Planned - Other types,  Up: Planned Features

Planned features: Units and modules
-----------------------------------

   * qualified identifiers <34508F33.4F685BD1@keele.ac.uk> (also
     `program_name.identifier'?) (problem module.id vs. record.field);
     also for operators; `gpc' for built-in identifiers; duplicate
     identifiers in different units (fjf260[ab].pas); giving the same
     name to a routine in an interface and a local routine doesn't work
     (fjf240.pas); don't capitalize variable names in error messages
     and file name queries (store the casing of the first occurrence of
     an identifier) -> remove `{$no-debug-info}'

   * `external name', `asmname', ...; (-> BP, Delphi) ??, like `$L'
     (fh19990325.2)

   * modules without implementation ??? (pmod1.pas)

   * `asmname' for units

   * qualified import (mod10.pas)

   * inline functions in GPI files

   * unit inheritance (of a complete interface with one statement or
     selectively)
     <Pine.HPP.3.96.971105161603.28577A-100000@tea.geophysik.tu-freiberg.de>,
     <199711061008.LAA25341@agnes.dida.physik.uni-essen.de> ??; virtual
     procedures ???

   * allow accessing non-exported identifiers in the implementation of
     a module
     <Pine.BSI.3.96.971110210330.7570A-100000@malasada.lava.net>

   * `Initialization/Finalization' (Delphi: =`to begin/end do') (???)
     (only in `--delphi'?)


File: gpc-todo.info,  Node: Planned - OOP,  Next: Planned - Misc,  Prev: Planned - Units and modules,  Up: Planned Features

Planned features: OOP
---------------------

   * init VMT in initialized variables (fjf445*.pas)

   * `published', `public', `protected', `private' (scope limited to a
     unit in `--borland-pascal', and to the object type normally)

   * `ProcVar := Obj.Method' {$X+}; method pointers
     (`procedure/function of object') (-> Delphi) ???

   * VMT link (global, local, new: set to 0 or @VMT; destructor: reset
     to 0)

   * checks: `@Obj <> nil', `TypeOf (Obj) <> nil', `TypeOf (Obj)^.Size
     = -TypeOf (Obj)^.NegatedSize'; separate switches; function
     initialized (that does these 3 tests) ???

   * virtual constructors

   * `CLASS is CLASS' (implemented in Pascal with `Parent')

   * interfaces (cf. OOE, Java); `OBJ is INTERFACE' (not so easy?) ???;
     variables of type pointer to more than one interface [and class]
     (also possible!)

   * allow method-implementation right after the declaration ???

   * friends ???

   * `dynamic' (= `virtual' ?)

   * `class' (reference to an object type); allow classes and object
     types to inherit from each other; OOE;
     <01BD7A3A.6B187A20.prucha@helicon.co.at>; obpascal.zip

   * `New': Delphi syntax; Dispose?? (automatically?; set references
     automatically to nil) (-> FPC)

   * `--base-class=foo', `--base-object=bar' ???

   * properties <01BD7A3A.6B187A20.prucha@helicon.co.at>,
     <16131.199805071354@potter.cc.keele.ac.uk>

   * virtual constructors in interfaces (load)???

   * VMT problem with interfaces (my solution??? also with dynamic
     linking???)

   * VMTs (also for local classes (EP modules???)!) in GPI files,
     written to assembler file by main program; `--cfiles=foo': .s file
     with VMTs for C/assembler??? (also .h???)

   * method overloading ??? ??

   * class libraries (more or less TV compatible?/Free Vision/EFLIB)
     (streams as interface type?)

   * VMT: ClassID (64/128 bits?) default 0, error when duplicated,
     warning when 0 and inherited from class with <>0 ?, not allowed
     for abstract classes!; ClassName (also for abstract classes?); [];
     ProgrammerID, BaseClassID at beginning of unit (redeclarable?) ???

   * VMT: Children: list of pVMT

   * find class by ClassID/ClassName (implementable in Pascal with
     `Child')

   * object constants, class variables (-> other name for `VMT');
     virtual/static

   * store in GPI: whether ClassID used, ClassName used, which classes
     are instantiated

   * `asmname' for methods


File: gpc-todo.info,  Node: Planned - Misc,  Next: Planned - Utilities,  Prev: Planned - OOP,  Up: Planned Features

Planned features: Misc
----------------------

   * read Booleans and enum types from files, write enum types to
     files; `--[no-]read-range-checking' (also for subtypes of Char,
     Boolean and enum types!)

   * make it possible to declare routines as `iocritical' and
     `ignorable'

   * switch to warn about everything that could cause portability
     problems

   * document all compiler options and switches; make `gpc --help'
     output all the options ???

   * libraries (static/shared; DLL)
     <Pine.HPP.3.96.971110183550.7996B-100000@tea.geophysik.tu-freiberg.de>

   * smart linking

   * range
     <Pine.LNX.4.21.0012091605570.8168-100000@rusty.russwhit.com>,
     overflow (right operand of mod <=0 is an error), nil pointer,
     string length, object VMT (pointer, negative size field), etc.
     checking <199911040915.KAA11168@humulus.daimi.au.dk>; also for
     array slice access (miklos1.pas); check that strings converted to
     CStrings don't contain #0 characters; initialize strings (length
     field), pointers, ordinal values and reals(?) with invalid values
     if checking is on

   * overloading of unary operators

   * intel assembler syntax; BP BASM ???

   * function overloading (in units and static methods?? - with
     different parameters, override or overload?); asmname?? (perhaps:
     first occurrence of a procedure with normal asmname (=> all
     non-overloaded procedures get normal asmnames)?); cf. Delphi
     methods without `override'

   * and_else, or_then (names??); guarantee complete evaluation in
     `{$B+}' mode

   * `?:' (`x := if c then bar else baz')

   * C operators (`,', `=', `++'/`--' (pre/post), `+=', ...), as
     functions ?

   * `for var: type = foo to bar do' ???

   * error/exception handling (Java,Delphi?)
     <01BD7A3A.6B187A20.prucha@helicon.co.at> (tc20000623)

   * RTS checking (libgpc_g), switch?

   * simplify math functions
     <199708091006.MAA26576@agnes.dida.physik.uni-essen.de>

   * variable number of arguments <32F9CFE7.5CB@lmemw.ericsson.se> ??
     ???

   * multithreading support ?? ???

   * `--wirth-pascal' :-)

   * PXSC standard ... (`pxsc.zip', `contrib/peter/pxsc') (??)

   * Object Oriented Extensions (Technical Report) (??)

   * generic types (cf. OOE section C.1) (gentypes.pas) ???

   * default parameters (cf. OOE section C.4; Delphi 4?)
     (iniparm[12].pas)

   * Pascal++ standard ... (??) ???

   * allow `procedure foo; inline;'

   * compile time assertions ???

   * Ignore{Value,Result}/Discard and Swap for arbitrary types

   * make operators also available as functions

   * `absolute' with automatic type detection; `absolute' procedures
     (with automatic parameter detection) ???

   * Delphi features: CompToCurrency, CurrencyToComp, Slice, TypeInfo
     ???, dynamic arrays (tc19991012); Assert (tc20010225.2)

   * output column numbers in error messages ??

   * warn when `and' and `or' are combined without parentheses
     (-Wparentheses; on by default)

   * assembler blocks should be considered volatile by default ???
     (fh19980829.4)


File: gpc-todo.info,  Node: Planned - Utilities,  Prev: Planned - Misc,  Up: Planned Features

Planned features: Utilities
---------------------------

   * `gp' make utility to replace automake; compile and link programs,
     but compile units without linking and without a warning that there
     is nothing to link; store GPC version numbers, platform and
     options in GPD files and re-compile automatically in `--automake'
     mode when they don't match

   * C header to Pascal translator

   * gdb: Pascal types (sets, files, subranges, schemata, strings, ...)

   * `indent'-like source code formatter for Pascal

   * AT&T <-> Intel assembler syntax converter ???


File: gpc-todo.info,  Node: Done,  Prev: Planned Features,  Up: Top

Fixed bugs and implemented features
===================================

* Menu:

* Fixed Bugs::            Problems that have been solved
* Implemented Features::  Features that have been implemented


File: gpc-todo.info,  Node: Fixed Bugs,  Next: Implemented Features,  Up: Done

Problems that have been solved
------------------------------

   This section lists the bugs fixed since 1st Oct 1997, together with
the date (YYYYMMDD) on which they were fixed, so you can check if some
bug has already been solved in a recent release or developer version.

   After the release of GPC 2.1, this section will be cleared and
contain the bugs fixed after that release.

   * 20020425: packed array types declared in units do not behave
     correctly (martin3.pas)

   * 20020424: error when declaring a forward pointer to an overwritten
     type of name `Word' (carel2*.pas)

   * 20020423: runtime error on `EOLn' when text file does not end in
     newline (emil20.pas)

   * 20020423: error in debug entries generated for objects
     <8F990E3D9A6FD1118F3B0000F81EA1D84985D7@exchsa2.dsto.defence.gov.au>

   * 20020410: HP/UX: `unrecognizable insn' error in connection with
     conformant or const string parameters)
     <199809280741.JAA17719@rug105.cs.rug.nl> (sietse1.pas),
     <Pine.SOL.4.10.9908051751550.23095-100000@niflheim.rutgers.edu>,
     <396C3531.3A327722@cs.rug.nl>

   * 20020410: a schema which contains another schema whose
     discriminant depends on the first schema's disciminant, while no
     part of the inner schema depends on its discriminant, is not
     initialized properly (emil19*.pas)

   * 20020410: differences of unsigned integer constants are treated as
     unsigned, even if their value is negative (emil18.pas)

   * 20020409: `ParamStr' is not accepted as the first argument of
     `ReadStr' and `Val' (maur10a.pas)

   * 20020409: GPC accepts function results of string type as well as
     `Re' and `Im' as "lvalues" (fjf657*.pas, fjf658*.pas)

   * 20020409: string constants are not accepted as actual parameters
     for conformant arrays of `Char' (fjf655*.pas)

   * 20020409: building GPC with `-pipe' fails
     <200204081912.16296.georges@its.caltech.edu>

   * 20020407: using a unit of the same name as one of the RTS's units
     (e.g., `Files') does not work (carel1.pas)

   * 20020401: `file of record end' fails at runtime (emil1[56].pas)

   * 20020325: GPC crashes on invalid comparisons between arrays and
     string constants (fjf652.pas)

   * 20020323: `Val' reads only one digit in some circumstances
     (fjf651b.pas)

   * 20020323: `ReadStr' and `Val' evaluate their first argument twice
     (fjf651[ab].pas)

   * 20020322: assigning/passing fixed strings (i.e., `array ... of
     Char') to `CStrings' doesn't work correctly (emil17.pas,
     fjf390[a-d].pas)

   * 20020322: GPC crashes on `Page' without parameters (mike1.pas)

   * 20020318: missing type checking in `><' (fjf649a.pas); `><' can't
     be overloaded (fjf649b.pas)

   * 20020314: GPC crashes on `packed array [...] of record end;'
     (emil14.pas)

   * 20020314: GPC accepts `[packed] array ... of Void'
     (emil13[a-c].pas) and `[packed] file [...] of Void'
     (fjf648[a-d].pas)

   * 20020314: GPC segfaults on `set of Void' (emil12.pas)

   * 20020308: calling a virtual method `Size' doesn't work (maur9.pas)

   * 20020226: `Re', `Im' and `Arg' do not accept integer and real
     arguments (fjf641*.pas)

   * 20020224: arrays whose domain is an enum type (not a subrange)
     behave slightly wrong with initializers containing schemata
     (fjf638.pas)

   * 20020224: `inline' and `asmname' don't work together when
     compiling without optimization (maur3.pas)

   * 20020224: identifiers declared in a unit that have the same name
     as some object method are not visible (russell2.pas, fjf278.pas,
     fjf571.pas)

   * 20020223: some redeclaration errors are not strict enough
     (fjf565*.pas)

   * 20020222: the warnings about unused variables don't work for
     global variables (fjf632[ab].pas)

   * 20020222: the VMT of object variables is not initialized until a
     constructor is called (fjf631.pas)

   * 20020214: gcc-2.95.x (mostly): spurious warnings (with `-Wall' and
     `-O') about uninitialized variables near `case' statements

   * 20020214: `Break' and `Continue' don't work correctly in a `for
     ... in []' loop (i.e., iterating over a constant empty set)
     (forloop.pas)

   * 20020214: `Low' and `High' yield wrong results when applied to set
     constructors (fjf626.pas)

   * 20020211: GPC might crash in the presence of corrupt GPI files

   * 20020211: automake doesn't recompile programs/modules/units that
     depend indirectly on interfaces that were changed

   * 20020211: GPC might crash or produce wrong results when
     mismatching GPI files are used together, e.g. due to limitations
     of the automake mechanism (after fixing this bug, it aborts with a
     `checksum mismatch' error message in this case)

   * 20020210: enumeration types do not always properly survive
     transport through two interfaces that depend on each other
     (miguel2.pas) or two interfaces of the same module (daj2.pas)

   * 20020209: constant declarations whose values contain RTS calls can
     give wrong results or lead to compiler crashes (emil11*.pas)

   * 20020208: `SizeOf' does not work on uninitialized non-polymorphic
     objects (chief32.pas)

   * 20020208: the operators `pow' and `**' cannot be redefined
     (maur7.pas)

   * 20020208: schema components of array fields of schemata are not
     initialized correctly <3A93D0C0.8F5A8308@zkm.de> (sven19[ab].pas)

   * 20020208: methods returning records, arrays or pointers
     (chief39*.pas) and functions without parameters returning arrays
     or pointers (fjf619*.pas, fjf299.pas) don't work correctly

   * 20020207: initializers of arrays of length 1 don't work
     (fjf320*.pas, fjf617.pas)

   * 20020207: declaring several `absolute' variables at once doesn't
     work correctly (fjf616.pas)

   * 20020205: `-pedantic' wrongly warns about standard routines such
     as `WriteLn' (emil10.pas)

   * 20020203: GPC sometimes crashes with `-g'
     <Pine.SGI.4.10.9903231101500.6691-100000@pugh.bip.bham.ac.uk>

   * 20020202: don't allow assignments to and other modifications of
     schema discriminants (e.g., string's `Capacity') (fjf615*.pas)

   * 20020201: import and export of huge interfaces is very slow
     (quadratic time behaviour)

   * 20020201: bug with const parameters and derived object types
     (chief42.pas)

   * 20020128: `const' object parameters don't accept actual parameters
     of derived object type (chief42.pas)

   * 20020125: complex `ArcTan' yields inaccurate results in some cases
     (emil9.pas)

   * 20020124: `protected' and untyped files don't work in procedural
     types (fjf601[a-d].pas)

   * 20020123: sizes of schema types containing variant records are
     computed wrong (fjf600.pas)

   * 20020122: too weak type checking in assignment and initialization
     of procedural variables (fjf598*.pas)

   * 20020122: pointer types pointing to themselves don't work
     (fjf244.pas)

   * 20020117: complex `pow' yields wrong results with a negative
     exponent (emil8.pas)

   * 20020116: packed arrays of types of size 24, 40, 48, ... bits are
     not really packed (fjf582.pas)

   * 20020115: inlining of functions which locally declare a subrange
     type etc. can cause GPC to crash, especially when debug info is
     generated (emil7.pas)

   * 20020114: assignments to packed array fields whose RHS involves
     the field itself don't work correctly (emil6.pas)

   * 20020112: complex `Abs' overflows too early (maur8.pas)

   * 20020111: give an error rather than a warning when using `Return'
     without a value in a function <3BEC86B3.85264A58@alcatel.be>

   * 20020108: `MinReal', `MaxReal' and `EpsReal' don't work (emil4.pas)

   * 20020108: complex `SqRt' aborts with the false error `argument to
     `SqRt' is < 0' on some arguments close to the real line (emil3.pas)

   * 20011229: the `DST' field of `TimeStamp' contains wrong values
     (fjf580.pas)

   * 20011229: the test scripts don't work on systems that use `a.exe'
     instead of `a.out', e.g. Cygwin

   * 20011229: Cygwin: `LineBreak' should not contain a CR

   * 20011227: Intl: automatically link `-lintl' when necessary

   * 20011227: `Get' does not behave lazy, unlike `Read' (emil2.pas)

   * 20011214: GPC accepts string capacities <= 0 (fjf579[a-c].pas)

   * 20011214: fatal range overflows in set constructors (couper8.pas,
     couper10.pas) <2C4F3FEF.20000809173117.FOO-13A6.frank@g-n-u.de>

   * 20011214: missing type checking in set constructors
     (fjf57[67][a-l].pas)

   * 20011213: packed records of (e.g.) 16 bit wide subranges are not
     handled correctly is assignments (emil1.pas)

   * 20011202: packed records break when imported from units/module
     interfaces (martin2[ab].pas)

   * 20011201: spurious warning when setting a function return value
     via `Str' (fjf575.pas)

   * 20011201: overflows in real constants are not detected at compile
     time (fjf573.pas)

   * 20011130: real numbers that are very slightly larger than a power
     of 10 are output incorrectly with `Write' on some platforms (e.g.,
     IA32) (ian7.pas)

   * 20011129: `mod' yields a wrong result when the result should be 0
     and the right operand is a signed type (fjf572a.pas)

   * 20011123: some comparisons on packed subranges don't work
     correctly (couper1.pas)

   * 20011122: two-unit bug with objects (adam2.pas)
     <Pine.GSO.4.30.0108011501180.14499-100000@math>

   * 20011121: `protected' parameters are not always respected; `type
     of' must not preserve protectedness; sets constructed with `type
     of' give a type mismatch; `for' ... `in' a protected set parameter
     doesn't work; `const' parameters of real or `LongInt' type to
     procedural types don't work; `const' set parameters don't work;
     set expressions don't always work as actual parameters
     (fjf383.pas, fjf447.pas, fjf569[a-w].pas)

   * 20011121: `setlimit' doesn't work as a compiler directive
     (fjf215.pas)

   * 20011121: `set of Integer (42)' doesn't work (fjf215.pas)

   * 20011121: GPC crashes on `set of Real' (fjf568.pas)

   * 20011120: Alpha/OSF: `mips-tfile' crashes when the source is read
     from standard input (fjf519[abe].pas)

   * 20011120: don't pass `-x' options with `--automake'
     (fjf567[ab].pas)

   * 20011119: 64 bit machines: reading `MedCard' variables doesn't
     work (readg9.pas)

   * 20011119: 64 bit machines: set operations `in', `Include',
     `Exclude' and some set constructors fail (mirsad[00-12].pas)

   * 20011119: `shl' should use the longest possible result type when
     necessary (shl.pas)

   * 20011119: Alpha/OSF: compiling C files to be linked fails in
     `mips-tfile'

   * 20011115: some more obscure cases of operator precedence and
     associativity are wrong (fjf566[a-m].pas)

   * 20011114: infinite compiler recursion when a unit uses itself
     (sven18[a-c].pas) <3A2275D8.F2DEA31A@zkm.de>

   * 20011114: fixed string comparisons are wrong (takashi1.pas)

   * 20011114: GPC doesn't handle sets with negative lower bounds
     correctly (fjf563*.pas, couper11.pas, wnj.pas)

   * 20011111: enumeration types declared within a set or record type
     or variable or constant declaration or the case selector of a
     record within a unit are not visible in the main program
     (fjf211*.pas, fjf239[ab].pas)

   * 20011108: the test suite scripts don't work with non-GNU versions
     of `sed' and `awk'

   * 20011108: results of set operations are truncated to the left
     operand's range (especially noticeable when it is a constant set)
     (drf3[a-c].pas)

   * 20011108: GPC should not accept `set of Integer' etc.
     (drf2[ab].pas, couper11.pas)

   * 20011108: GPC crashes on `set of Integer' (couper11.pas)

   * 20011108: functions returning sets don't work (fjf554[a-x].pas,
     setret.pas, chief41.pas)

   * 20011107: too many parameters to `New' are not checked
     (fjf553[bd].pas)

   * 20011107: `New' of an untyped pointer should not be allowed
     (fjf553a.pas)

   * 20011107: GPC accepts reals as the bounds of subrange types
     (eike1[ab].pas)

   * 20011106: guarantee full evaluation in `{$B+}' (fjf552[ab].pas)

   * 20011106: `const' and `protected' parameters are accepted as the
     second argument to `Move', `MoveLeft' and `MoveRight'
     (fjf550[a-f].pas)

   * 20011106: GPC doesn't allow Booleans and enum types for the 3rd
     parameter to `FillChar' (BP allows this) (fjf549[ab].pas)

   * 20011103: type-checking for `+' etc. is not strict enough
     (fjf277.pas, fjf309.pas, fjf399[ab].pas, fjf488xk.pas,
     fjf547[a-o].pas)

   * 20011103: for `mod' with a negative operand, behave
     standard-conformant by default, but non-standard in
     `--borland-pascal' and similar modes (fjf424[ac-e].pas)

   * 20011026: GPC searches compiled units first in the current
     directory rather than the `unit-path' etc.

   * 20011025: `UpCase' and `LoCase' don't accept character constants
     (fjf544[ab].pas)

   * 20011025: MIPS: writing reals doesn't work (gcc bug with varargs)
     <Pine.SGI.4.10.9903240952350.12280-300000@pugh.bip.bham.ac.uk>,
     <39DDC168.7CFFE872@larc.nasa.gov>

   * 20011024: the second parameter of `Insert' and the first parameter
     of `Delete' must not be constant (fjf268[a-d].pas, fjf473[ab].pas)

   * 20011024: non-default integer types like `MedInt' (and therefore
     `SizeType' under DJGPP) are not accepted as the 4th parameter to
     `BlockRead' and `BlockWrite' (chief33.pas, fjf252.pas,
     fjf543[a-f].pas)

   * 20011024: `Concat' with only one argument does not work
     (fjf542.pas)

   * 20011024: `Trunc', `Round' and `Polar' don't accept integer
     parameters where reals are expected (fjf229.pas, fjf303.pas,
     fjf541[ab].pas)

   * 20011023: `{$local}' and `{$ifopt}' don't work with dialect
     options (e.g., `gnu-pascal') (fjf535[a-d].pas, fjf536[a-k].pas)

   * 20011021: GPC allows multiple declarations of the same variable if
     they are of the same type (dave1.pas, fjf316.pas, fjf453.pas)

   * 20011021: const real parameters don't work (fjf227[ab].pas,
     fjf228[a-c].pas, fjf319.pas, fjf391[ab].pas, fjf530.pas)

   * 20011017: declaration blocks in the wrong order are not detected
     in `--classic-pascal' (chuck1[a-c].pas)

   * 20011015: wrong type mismatches with `const' and `protected'
     parameters used as array indexes, as case selectors, in writing to
     typed files, in `Include', `Exclude', `in', in set assignments, or
     in file seeks (adam3[a-v].pas, chief31.pas)

   * 20011014: files and discriminants of schemata inside arrays whose
     index is an enumeration type are not initialized correctly
     (theo1[ab].pas)

   * 20011014: GPC wrongly allows `<', `>', `<=' and `>=' comparison of
     char, enum and boolean values with integers (fjf235[a-d].pas,
     fjf392.pas, fjf463.pas, fjf503.pas, fjf529.pas)

   * 20011014: missing constant range-checking in the upper bound of
     `for' loops (chuck2.pas)

   * 20010818: `BlockRead' and `BlockWrite' can behave wrong when the
     actual third parameter is larger than `Integer' (especially on
     big-endian systems) (fjf526a.pas)

   * 20010818: on systems where `LongReal' has the same size as `Real'
     (e.g., AIX), when writing them while `field-width's are given, the
     width for `Real' is used instead of that for `LongReal'

   * 20010818: in `for' loops with pointer counters, the pointer is
     always incremented/decremented by 1 instead of the correct type
     size (fjf525[ad].pas)

   * 20010816: confusing error message when declaring a value parameter
     of file type (fjf521*.pas)

   * 20010808: AIX etc.: StrSignal: segfaults when given an invalid
     signal number (fjf522.pas)

   * 20010806: GetPasswordEntries: needs too much memory on systems
     with many users

   * 20010801: CRT (X11 on AIX etc.): segfaults when program is
     interrupted by SIGINT

   * 20010720: MD5: some bugs with macros, covered by the following bug
     on some platforms (md5test.pas)

   * 20010720: the preprocessor treats `$' as part of identifiers on
     some platforms (e.g., Linux, DJGPP, ...) (fjf520.pas)

   * 20010720: on the other platforms (e.g., AIX), `#$fe' does not work
     at the beginning of a line (dosunixtest.pas)

   * 20010713: the GPC configuration and build process fails on systems
     without GNU `grep'

   * 20010713: `-x Pascal' or `--language=Pascal' causes `gpc: Internal
     GPC problem: internal option `--amtmpfile' not given' (fjf519*.pas)

   * 20010707: GPC crashes in the presence of old GPI files
     <3A2275D8.F2DEA31A@zkm.de>

   * 20010704: integer parameters to built-in routines are not always
     converted to the right type (fjf349.pas)

   * 20010703: gcc-2.95: GPC should call `ld' when `collect2' is not
     available

   * 20010623: initializers of arrays with non-zero lower bounds
     contained within other structures are wrong (fjf247*.pas)

   * 20010619: Sparc: the preprocessor doesn't understand `defined'
     (fjf266.pas,fjf238.pas,ian6.pas)
     <19990129132623.21658.qmail@euler.stams.strath.ac.uk>

   * 20010604: `Delete (s, 3, MaxInt)' segfaults (fjf509a.pas)

   * 20010603: directory names in the unit path etc. are converted to
     lower case <156QP6-03q-00@ux.warez.linux.it>

   * 20010601: writing a typed file of a structured type by assignments
     to the file buffer and `Put' doesn't work correctly (daj23.pas)
     <74323@tcs01.demon.co.uk>

   * 20010529: multiple `--uses' options don't work (fjf508b.pas)

   * 20010518: FreeBSD: `rts/rts.c' does not compile because headers
     are included in the wrong order
     <Pine.BSF.4.21.0105160236480.63226-200000@hurricane.math.miami.edu>

   * 20010516: file operations cause small memory leaks

   * 20010501: some RTS functions that take string parameters don't
     accept `Char' parameters (fjf488*.pas)

   * 20010421: when reading from text files, sometimes a spurious space
     character appears at a newline
     <000c01c0bb97$2e0c7cc0$b900a8c0@gbtwireless.com>,
     <003101c0c9a9$773398a0$b900a8c0@gbtwireless.com> (george1.pas)

   * 20010421: with `--nested-comments' and `-Wnested-comments', the
     preprocessor mistakenly complains about nested comments, e.g., in
     `gpc.pas' (nicola3[ab].pas)

   * 20010420: GPC sometimes fails to link the runtime library
     <3A26A0D2.92344330@ujf-grenoble.fr>, <01041920501700.00458@hal>

   * 20010419: `Halt' does not return the correct status to the calling
     process (adam1.pas)

   * 20010411: file variables aren't treated correctly when
     cross-building from a 32 bit system to a 64 bit system

   * 20010410: `Reset' etc. don't accept `''' (only `'-'') for
     stdin/stdout (fjf484*.pas)

   * 20010410: `Reset' etc. on untyped files allow two buffer size
     parameters (fjf483.pas)

   * 20010409: writing real numbers very close to 0 causes the program
     to hang (lrbug2.pas) <000401c0bff6$7d07d820$46261bd4@machine>

   * 20010409: `ExecutablePath': the result should be `FExpand'ed

   * 20010325: when reading real numbers like `1.03e+02' with `ReadLn'
     etc., there is a slight avoidable rounding error (couper12.pas)

   * 20010315: Mac OS X: `--dollars-in-identifiers' should not be the
     default

   * 20010210: CRT: programs can segfault when interrupted (SIGINT
     etc.) shortly after startup

   * 20010207: StringUtils: `StringReadWord' fails if the last word is
     a single character long (steve1.pas) <01020711035902.13914@klaatu>

   * 20010205: removed the `LongReal2Str' work-around for the varargs
     problem on the MIPS

   * 20010121: Trap: nested traps don't work (trap2test.pas)

   * 20010120: false warning if a function result is an array and is
     assigned field by field

   * 20010120: don't require extended syntax for `SetLength'

   * 20010112: GPC crashes with invalid forward type declarations
     (nicola[12].pas)

   * 20001223: point to the GPC mailing list instead of the GCC bug
     reporting facilities in compiler error messages

   * 20001223: don't call procedures functions in error messages etc.
     <200007230522.BAA05497@strawberry.ncifcrf.gov>

   * 20001206: DJGPP (and possibly other platforms): FileNameMatch (and
     related functions): patterns starting with `*' or `?' should not
     match file names starting with `.'

   * 20001118: Linux/Alpha: build-problems in rts/rta-va.c
     <14812.54955.265326.731526@gargle.gargle.HOWL>

   * 20001107: bug with two-dimensional schema arrays (rudy1.pas)

   * 20001106: System: the return type of `MemAvail' and `MaxAvail'
     should be `Cardinal' rather than `Integer'

   * 20001025: FreeBSD: ``T_RESADFLT' undeclared' (fixed by removing
     IllReservedAddress, IllPriviledgedInstruction, IllReservedOp which
     are not very useful and may not have been supported on any system,
     anyway)

   * 20000902: if reading from files etc. is interrupted by signals,
     this causes an I/O error

   * 20000717: GMP unit: doesn't work with version 3.x of the GMP
     library

   * 20000626: slight errors in debug line number information for
     assignment or procedure call statements

   * 20000606: CRT doesn't work with windows > 255 chars wide or high

   * 20000529: the installation does not work without the `install'
     program installed <latimer@phg.mc.vanderbilt.edu>

   * 20000521: very hard reproducible bug(s?) (fjf212.pas; fh19980828.3)

   * 20000520: fatal signal 6 when trying to write a GPI file into a
     non-writable directory

   * 20000516: Dos: PackTime/UnpackTime give wrong results on
     big-endian machines

   * 20000505: `-I' options are forgotten after each `include'
     directive (ian4.pas)

   * 20000505: `div' also works as a real division (kevin14.pas)

   * 20000505: the arguments of long real functions are converted to a
     wrong type <9811112136.AA18086@sunflower.agron.iastate.edu>
     (robert1[ab].pas)

   * 20000505: problem with rewrite on file of packed array of packed
     record (daj7.pas) <48378@tcs01.demon.co.uk>

   * 20000505: `Extend'ing a file previously `Reset' without an
     intermediate `Close' doesn't work correctly (daj13.pas)
     <48469@tcs01.demon.co.uk>

   * 20000503: Sparc: division by reals (fjf237.pas, matt1.pas) or
     `Round (real_constant)' (chaput1.pas) make the compiler crash
     <199911040915.KAA11168@humulus.daimi.au.dk>

   * 20000503: division of complex numbers by reals doesn't work
     (maur4.pas)

   * 20000503: the Pascal main program does not get lineno stabs, so it
     is hard to debug it with GDB or RHIDE

   * 20000503: `Val' doesn't recognize hex numbers with `$'
     (chief37.pas)

   * 20000421: DosUnix: TranslateRedirections erroneously translates
     quoted redirections

   * 20000420: the compiler segfaults on `--uses=foo,bar'
     (fjf101[ab].pas)

   * 20000420: `--executable-file-name' doesn't work correctly with
     file names containing `\'

   * 20000420: DJGPP: `--automake' is more buggy than on other systems

   * 20000406: the preprocessor only understands C operators in `{$if}'
     directives, not Pascal operators like `not', `and', `or'
     (fjf423.pas)

   * 20000324: unit/module initialization and finalization code is
     executed in the wrong order (fjf185.pas)

   * 20000324: IRIX and AIX (and wherever else): unit/module
     initializers and finalizers are not executed

   * 20000323: mingw: environment variables are not accessible

   * 20000319: ignore text after `$else' and `$endif', but warn if
     `--pedantic' was given (fjf412[ab].pas)

   * 20000319: character constants of the form #42 are not handled
     correctly in complicated macro usage (fjf205.pas)

   * 20000308: `attribute (const)' doesn't work

   * 20000226: during GPC build, the info files should be created in
     the source rather than the build directory, because they're
     included in source distributions

   * 20000221: global goto bug (goto4.pas, demos/parserdemo.pas)
     <3832137D.21C612FD@ujf-grenoble.fr>,
     <199911040324.WAA19382@kaylor.ncifcrf.gov>

   * 20000213: processing of initialized arrays takes quadratic time

   * 20000206: superfluous warning `cast increases required alignment
     of target type' (tmp) (fjf398.pas)

   * 20000202: `Close' should not be predefined in `--extended-pascal'
     <199912112311.SAA25109@mail.bcpl.net> (fjf393.pas)

   * 20000202: `case' in the main program doesn't work correctly (e.g.
     pretty.pas) (tmp)

   * 20000202: insufficient type checking with subranges (fjf305.pas)

   * 20000202: gpc-lex must not seek back (fjf311.pas; `-pipe' doesn't
     work correctly)

   * 20000202: Big-endian machines: some set operations don't work
     correctly (fjf329[ab].pas)

   * 20000202: gpc1 crashes when initializing a string with `ParamStr
     (1)'

   * 20000202: for a binary operation with a signed and an unsigned
     integer operand, use a signed type for the result (fjf325.pas,
     fjf326.pas)

   * 20000201: a few BP compatibility routines in the Dos and WinDos
     units (e.g. `GetDate') don't accept parameters of type Word if it
     was redefined using `-D__BP_TYPE_SIZES__'

   * 20000131: `--uses' doesn't work in units

   * 20000124: `gpc -B. -L. -v' should not try to link

   * 19991221: reference string parameters to RTS functions break after
     declaring a procedural variable with a value string parameter
     (fontana1.pas)

   * 19991107: CRT, CRTDemo: improved behaviour in response to screen
     size changes

   * 19990913: Sparc: `downto' loops with variables of size 1 bit don't
     work (fjf374.pas)

   * 19990905: GetCPUTime can't measure long CPU times reliably on some
     systems (e.g. Solaris)

   * 19990804: the variable `Environment' can be made invalid by PutEnv
     (e.g. on DJGPP), assignments to it are not allowed (e.g. glibc),
     and some other problems with environment variables (fjf371.pas)

   * 19990802: GPM files are not stored in the unit-destination-path

   * 19990725: opened files can't be erased

   * 19990720: real constants of the form `0.5E+00' are not interpreted
     correctly (rick1.pas)

   * 19990712: function results of a string type declared in another
     unit are not correctly converted to CStrings (fjf302.pas)

   * 19990623: type error with schemata containing strings (fjf189.pas)

   * 19990623: integer shifts should not alter the sign (fjf84[ab].pas,
     fjf355{,a}.pas)

   * 19990622: computed constants that don't fit into a LongestInt
     don't work (fjf41.pas,fjf88.pas)

   * 19990619: routines with const parameters don't work in procedural
     parameters (chief26.pas)

   * 19990618: two-unit bugs (baby2.pas, sam12.pas, maur6.pas)

   * 19990618: the construct `^f_oo' is misinterpreted as a
     Borland-style char constant (fjf350.pas)

   * 19990618: conformant array bounds of enum types don't work
     <C1256784.0026BE34.00@synln01.synstar.de> (pd2.pas)

   * 19990618: enum variables cannot be used in a `for var in'
     statement <C1256784.0027179B.00@synln01.synstar.de> (pd1.pas)

   * 19990609: superfluous warning when `return'ing a char constant
     from a function returning a char (fjf249.pas,fjf351.pas)

   * 19990601: the Graph and CRT units cannot be used together
     (requires PDCurses update compiled with -DLIBBCC)

   * 19990512: Rewrite/Extend with a filename parameter don't check for
     the existence of the file (fjf348.pas)

   * 19990504: DJGPP: `FExpand'ing `x:' and `x:\..' can give strange
     results

   * 19990428: IOSelect doesn't work with the X11 version of CRT (fix
     includes PDCurses patch)

   * 19990412: bug with goto and local variables of non-constant size
     (berend3.pas) <004001be4bc2$24bfc9c0$0321a8c0@bmach.nederware.nl>

   * 19990411: EGCS: new errors (tom4.pas); new errors with `-g -O3'
     (forvars1.pas)

   * 19990411: EGCS: `New'ing a `File' pointer doesn't work
     (chief30.pas)

   * 19990410: missing range checking in `#42' char constants
     (fjf332.pas)

   * 19990403: Dos-like systems: Dos: FindFirst/FindNext file name
     matching should be case-insensitive
     <3705B550.B1AA360E@ujf-grenoble.fr>

   * 19990313: Solaris 2.7 (and perhaps other systems): FExpand doesn't
     work correctly with an empty directory name

   * 19990308: don't turn the lower index of an array slice access to 1
     (except for strings in `--extended-pascal') (fjf340[a-d].pas)

   * 19990304: BlockRead and BlockWrite don't check if the file is open
     for reading/writing (fjf339.pas)

   * 19990225: `Copy' and some other built-in routines don't check the
     number of arguments (fjf333.pas)

   * 19990223: DJGPP (and other systems without sinl() etc. in libm):
     long real Sin etc. produce linking errors
     <36D3063C.4D14F73C@cicc.unam.mx> (maur5.pas)

   * 19990222: `Null' is not accepted as an open or conformant array
     parameter

   * 19990219: `Break' and `Continue' with case statements are handled
     like in C, not like in BP <368563CE.F7F2D31C@mundivia.es>
     (fjf287[ab].pas)

   * 19990204: pointers to `file' don't work (chief28.pas)

   * 19990203: the order of objects/libraries in a `{$L}' directive is
     reversed

   * 19990203: cardinals are not converted correctly in some
     expressions (fjf324.pas)

   * 19990203: `Length' should return integer, not cardinal
     (fjf323.pas) (tmp)

   * 19990202: using undefined strings can cause segfaults at runtime
     (fjf322.pas)

   * 19990202: chars are not accepted as value/const string parameters
     to `Insert' (fjf254.pas)

   * 19990202: DJGPP: CRT: ReadKey returns #10, not #13, for the enter
     key when CheckBreak is True

   * 19990201: FreeBSD: `StatFS' in the RTS doesn't compile
     <003001be4b65$1b0b2d50$0321a8c0@bmach.nederware.nl>

   * 19990130: `ForceExtension' doesn't handle empty wanted extensions
     or directory names with ExtSeparators in them

   * 19990129: `RemoveDirSeparator' erroneously removes the root
     directory slash

   * 19990129: CRT with ncurses: `Read[ln]' returns endless empty lines
     after the first line entered

   * 19990129: Bind should remove trailing `DirSeparators' from the
     file name (-> FSplit and some other functions don't work always/on
     all systems)

   * 19990128: Big-endian machines: CRT: the declaration of `TWindowXY'
     is wrong

   * 19990127: automake and autolink can't use units without source
     (fh19990124.2)

   * 19990127: let ExpandEnvironment, FileNameMatch and HasWildCards
     (formerly in GPCUtil, now in the RTS) handle `\' quotations
     (except under Dos systems, of course)

   * 19990126: Extend/Append can cause segfaults under more or less
     strange circumstances

   * 19990126: the (non-trimming) `>' and `<=' string operators are
     mixed up (chief27.pas)

   * 19990123: CRT: let CRT_Done be called before runtime errors so the
     error messages are not overwritten by closing curses

   * 19990122: reading from TTYs/pipes doesn't handle #0's correctly
     (fjf318[ab].pas)

   * 19990122: some superfluous warnings in `--borland-pascal' mode

   * 19990116: the compiler should abort if a C compilation fails
     (link8.pas)

   * 19990116: const parameters of schema type should be passed by
     reference, not by value (fjf315[ab].pas)

   * 19990115: problems treating `string' as `string(255)' in
     connection with procedural parameters (fjf241.pas)

   * 19990115: ignore `--executable-file-name', `--executable-path',
     `--unit-destination-path' etc. when `-S', `-c', ... is given

   * 19990112: Solaris (and other big-endian machines): writing chars
     doesn't work (fjf314.pas)

   * 19990110: DJGPP: when {$executable-file-name} is given, stubify
     doesn't get the correct file name, so no .exe is created

   * 19990109: linking errors with automake when a unit is not
     recompiled (fh19971015), <ABcLeYr887@e00827.vno.lt>
     (marius2[ab].pas)

   * 19990109: choose a unique temporary file name for the (former)
     .gpc files so that concurrent compilations don't conflict

   * 19990109: empty .gpc files before usage

   * 19990109: automake doesn't handle `uses' in implementation part of
     a unit (fjf200{,c}.pas)

   * 19990109: `$L' in units doesn't always work without `--autobuild'
     (link1[a-c].pas, link5[ab].pas)

   * 19990106: when compiling without automake and a needed unit is not
     found, compilation should abort immediately

   * 19990102: `$L' at the beginning of a source file makes the
     compiler crash (link6.pas)

   * 19981230: an integer subrange type is destroyed when a subrange of
     another type of the same size is being used as an array index
     (ross1.pas)

   * 19981230: arguments to `Dispose' are evaluated twice
     <36730596.81CC880C@mundivia.es> (miguel1.pas)

   * 19981230: the result of `Copy' can't be passed to `Val'
     (fjf306.pas) (tmp)

   * 19981228: fatal signal 6 when trying to write a GPI file into a
     non-writable directory

   * 19981227: autobuild doesn't recompile C files if the object file
     exists already

   * 19981227: passing a CString result of a function with parameters
     to a string parameters works, although it shouldn't, at least not
     without conversion (fjf242.pas)

   * 19981227: procedural variables should not be dereferenced when
     passed as an untyped parameter (fjf261.pas)

   * 19981227: integers can be passed for string parameters (fjf253.pas)

   * 19981227: for loops with counters of type subranges of char don't
     work correctly (chars2.pas) (tmp)

   * 19981220: missing type checking in `absolute' (fjf300.pas)

   * 19981219: don't pass Pascal specific options (e.g. `--automake')
     to gcc1, but do pass the other ones (fjf203.pas)

   * 19981217: `Polar' doesn't accept integer constants (fjf303.pas)

   * 19981212: DJGPP: fflush() clobbers the file position which causes
     some problems with GPC's file handling

   * 19981211: procedural variables are always passed by value
     <ABcLeYr887@e00827.vno.lt> (marius1.pas)

   * 19981208: the preprocessor gets confused by two Pascal comments in
     sequence in an unusual situation
     <199812081112.LAA25879@stams.strath.ac.uk> (ian2.pas)

   * 19981207: set addition doesn't work correctly (ian1.pas)

   * 19981207: bug in set addition (fjf262.pas)

   * 19981207: some set operations don't work with optimization
     (fjf196.pas)

   * 19981207: comparing sets doesn't always work (chris5.pas)

   * 19981207: the automake mechanism doesn't always work properly to
     compile the Pascal parts of the RTS

   * 19981206: the result of built-in string functions can be passed as
     var (fjf298[a-\infty].pas)

   * 19981206: bugs on machines with strict alignment requirements
     (chris4.pas, confarr5.pas, pack{4,5,6,10,11,12}.pas)

   * 19981205: truncate strings in `Copy' (fjf40b.pas)

   * 19981205: CString2String doesn't work correctly with CStrings of
     length > 4 (fjf295.pas,fjf297[a-c].pas) (tmp)

   * 19981202: another instance of the two-unit problem
     (fjf294[ab].pas) (tmp)

   * 19981202: GCC2: typed constants don't work with `-g -O3'
     (fjf36.pas)

   * 19981202: don't allow files or structures containing files to be
     assigned via `:=' or returned from a function (john2[a-d].pas)

   * 19981202: only 1 parameter is accepted for C functions with
     varargs <3.0.6.32.19981110215411.007bb100@vegasnet.net> (ken1.pas)

   * 19981130: autobuild should recompile a unit only once, even if it
     is used from multiple places

   * 19981129: some invalid preprocessor directives cause infinite
     error messages (dollars.pas)

   * 19981129: storage class qualifiers don't work with typed constants
     and initialized variables (fjf245{,a}.pas)

   * 19981129: operator declarations with var parameters or const
     parameters of record type make the compiler crash (fjf232[a-c].pas)

   * 19981129: missing type checking with const parameters of record
     type (fjf231.pas)

   * 19981129: cyclic `uses' don't work (jesper5.pas)

   * 19981129: using a named subrange type as an array index spoils the
     range (sam11.pas)

   * 19981119: enum types with 128 or more elements don't work
     (sam9.pas)

   * 19981118: missing type checking with value string parameters
     (fjf291.pas)

   * 19981118: superfluous warning with constant sets and unsigned
     variables (fjf290.pas)

   * 19981118: missing type checking of method function results against
     string parameters (fjf289.pas)

   * 19981118: gpc segfaults after the declaration of `array [Char] of
     Boolean' (fjf288.pas)

   * 19981118: increase every object's alignment to the maximum in
     order to prevent alignment warnings with child types (fjf286.pas)

   * 19981118: schemata in variant records are not initialized
     correctly in some situations (fjf272.pas)

   * 19981118: another Low/High bug (fjf269.pas)

   * 19981118: another string parameter bug (cstrpar3.pas)

   * 19981118: gpc segfaults on `operator +;'

   * 19981116: subranges that occur in packed records can't be passed
     by reference <802566BB.0043115A.00@buffer1.HQ.quantel> (sam8.pas)

   * 19981116: val doesn't handle empty strings correctly (fjf292.pas)

   * 19981104: `--ignore-function-results' doesn't work with string
     return values (fjf282.pas)

   * 19981104: gpc1 segfaults on a strange schema usage (fjf275.pas)

   * 19981104: const void parameters don't work (fjf274.pas)

   * 19981104: external variables shouldn't be initialized again
     (fjf273.pas)

   * 19981104: missing type checking with High applied to arrays
     indexed by enumeration types (fjf271.pas)

   * 19981104: indexing an `array [False .. True] ...' doesn't work
     (fjf270.pas)

   * 19981104: don't initialize schemata and files when using GetMem as
     a procedure (baby.pas)

   * 19981020: string return values of object methods are not
     initialized (fjf281.pas) (tmp)

   * 19981020: severe bug with CString2String in a case statement
     (fjf279.pas)

   * 19980920: pass the correct specs to gcc1 (e.g. -D__i386__ on an
     IA32) (predef.pas)

   * 19980918: `--executable-file-name' doesn't work with program names
     like `magic', `format', and prefixes of them (magic.pas)

   * 19980830: DJGPP: GPC crashes if the DJGPP variable is set
     incorrectly <ABfsDYraQI@e00827.vno.lt>

   * 19980830: DJGPP: `JDIR' problem

   * 19980830: make the To-Do list, __GPC_RELEASE__ and GPC archive
     file names y2k safe

   * 19980830: check conditions that are always true/false also for
     Cardinal (fjf225.pas)

   * 19980830: superfluous warning with ParamStr(ByteVar) (fjf224.pas)

   * 19980830: variables initialized by a function call don't work
     (fjf210.pas)

   * 19980830: the preprocessor can't handle `elif' (fjf236.pas)

   * 19980826: type checking bug with ^Longint (fjf223.pas)

   * 19980822: EGCS: new errors with `-g -O3' (objects.pas, retval.pas,
     testounit.pas)

   * 19980822: CString2String evaluates its argument mutiple times
     (fjf208.pas)

   * 19980822: give an error rather than a warning when
     passing/assigning incompatible pointer types (fjf201[a-h].pas)

   * 19980822: {$executable-file-name} doesn't work without `program
     foo' (results in a.out) (fjf51.pas)

   * 19980822: array ranges are not checked in schemata (schema4.pas)

   * 19980816: file buffers of files open for writing can't be read
     from (fjf220.pas) (tmp)

   * 19980802: extend/append should only work for text files in
     `--borland-pascal' (fjf202.pas)

   * 19980802: type casts into `file' don't work (fjf207.pas)

   * 19980729: define `__NEED_ALIGNMENT__' when needed

   * 19980729: incorrect cyclic `uses' are not recognized properly
     (fjf161.pas,fjf161u.pas,fjf162.pas)

   * 19980729: new does not work with an object pointer variable and
     constructor given (fjf155.pas)

   * 19980729: `_p_binding()' must only be called for files (fjf153.pas)

   * 19980729: fatal signal 6 when confusing a schema type witha schema
     variable (fjf151.pas)

   * 19980729: constant char arrays with boolean index range can't be
     declared like strings (fjf150.pas)

   * 19980729: multi-dimensional packed arrays are packed only in the
     outermost dimension (fjf149.pas)

   * 19980729: missing type checking of boolean array indices
     (fjf124a.pas)

   * 19980729: `virtual memory exceeded' with some sequences of
     automake options and an 8-char long program file name
     (fjf199aa.pas) (tmp)

   * 19980729: defining a type equals to text doesn't work in a unit
     (fjf198.pas)

   * 19980729: array slice access to CStrings doesn't work (fjf188.pas)

   * 19980729: gpc crashes when trying to pass a const string parameter
     to a value string parameter (fjf182.pas) (tmp)

   * 19980729: false warning when using `forward' in the implementation
     part of a unit (fjf177.pas)

   * 19980729: initialized variables in statement part don't work
     (fjf176.pas)

   * 19980729: initialized records with no fields given (`()') don't
     work (fjf175.pas)

   * 19980729: returning a string constant with `return' doesn't work
     (fjf174{,a}.pas)

   * 19980729: initialized string arrays, indexed with an enumeration
     type, don't work (fjf172.pas)

   * 19980729: initialized variables of simple (no record or array)
     schema types does not work (fjf171.pas)

   * 19980729: in some cases, a value type casting is done instead of a
     variable type casting for lvalues (fjf170.pas)

   * 19980729: problems treating `string' as `string(255)' in some
     cases (chief25a.pas)

   * 19980728: Bug with SeekWrite (russell1.pas)

   * 19980722: declaring an asmname for procedures in the
     implementation of a unit/module doesn't work

   * 19980722: schema, pointer and record types do not properly survive
     transport through two interfaces
     (fjf164.pas,orland1.pas,fjf178.pas)
     <Pine.3.89.9805202229.A26897-e400000@bc.seflin.org.>,
     <Pine.3.89.9805211812.B6540-9200000@bc.seflin.org.>

   * 19980722: DJGPP: Segfault while compiling a program which uses a
     unit with a long interface <3537FE98.A4417284@ujf-grenoble.fr>

   * 19980722: GPC's preprocessor outputs too many empty lines when
     removing text between {$ifdef} ... {$endif} (fh19971115),
     <ABcLeYr887@e00827.vno.lt>

   * 19980722: missing file mkstemp with GCC2

   * 19980722: set constants are not accepted for const set parameters
     (chief21.pas)

   * 19980722: With dynamic variables whose discriminant is initialized
     with a function call, the function is called twice (john1a.pas)

   * 19980722: set constants don't work in units (fjf195.pas)

   * 19980722: CString2String doesn't work on nil (fjf191{,b}.pas) (tmp)

   * 19980722: filename argument to reset is not handled properly
     (fjf186.pas,fjf187.pas)

   * 19980722: bug with string parameters (fjf184.pas) (tmp?)

   * 19980722: preprocessor bug with unterminated strings constants in
     undef-ed parts (fjf183.pas)

   * 19980722: High/Low don't work with schema-arrays and strings
     (fjf181{,a}.pas) (tmp)

   * 19980722: when assigning a string to a CString, no #0 is appended
     (fjf180.pas) (tmp)

   * 19980722: bug with converting big integer constants to reals
     (fjf179.pas) (tmp?)

   * 19980722: substrings of string constants give strange results
     (fjf168.pas)

   * 19980722: initialized strings with a #0 in them are cut after the
     #0 (fjf168.pas)

   * 19980722: operations should be promoted to the bigger operand's
     size (fjf167a.pas,fjf167b.pas)

   * 19980722: the last parameter of BlockRead and BlockWrite is not
     type checked (fjf163.pas)

   * 19980722: schema discriminants are not assigned in `New'
     (fjf152.pas)

   * 19980722: strings within a schema type are not recognized in
     read/write (fjf148.pas)

   * 19980722: exit doesn't work in main program in some situations
     (fjf147.pas)

   * 19980722: `--executable-file-name' has problems with 8+3 character
     long file names (fjf141aa.pas)

   * 19980722: strange error message at strange position
     (fh19980121:fjf140.pas)

   * 19980722: var parameters of type untyped file don't work
     (fjf138.pas)

   * 19980722: reset, rewrite, extend on untyped files should require a
     size parameter (except in `--borland-pascal'; there: default to
     128 and give a warning) (fjf136.pas,fjf137.pas)

   * 19980722: reset, rewrite, extend on untyped files don't allow a
     size parameter when given a file name, too (fjf126.pas)

   * 19980722: array with two dimensions, indexed by booleans, doesn't
     work (fjf124.pas)

   * 19980722: wrong comparison of byte with integer
     (fh19971130.2:fjf118.pas)

   * 19980722: don't allow `type y(b:integer)=array[1..b] of
     integer;x=y;' in `--extended-pascal' (fjf115a.pas)

   * 19980722: schema types that are no records or arrays
     (fh19971124:fjf114.pas,fjf114a.pas)

   * 19980722: don't allow writing strings to a file of char
     (fh19971130:fjf111.pas)

   * 19980722: constants can't be written to typed files (fjf110.pas)

   * 19980722: no constant range checking in FillChar (fh19971124)
     (fjf102.pas)

   * 19980722: ReadStr doesn't work with bit fields (fjf37a.pas) (tmp?)

   * 19980722: bug with constants and parameters of function type
     (knuth1a.pas)

   * 19980715: assigning string constant pointers to string pointer
     variables doesn't work (fjf194{,a,b,c}.pas)

   * 19980715: file variables should be automatically bindable without
     `--extended-pascal' (fjf193{,a,b}.pas)

   * 19980715: empty string constants don't work (fjf192.pas)

   * 19980715: superfluous warning when automatically adding the #0
     terminator to const strings (fjf190.pas)

   * 19980630: System: The declaration `Integer = Integer (16)' should
     come before `pInteger = ^Integer', and similarly for other
     declarations

   * 19980630: System: remove built-in procedures Seek and RunError

   * 19980629: an object type cannot be called `Time'
     <359458B1.9EC44A39@ujf-grenoble.fr>

   * 19980629: superfluous warnings `no previous prototype for
     __init_unitname' in Pascal parts of the RTS when making GPC

   * 19980629: gpc does not return an error status after a used unit
     does not exist (neither as source nor precompiled) or when
     auto-making a unit failed

   * 19980629: fixed size strings are not accepted for const string
     parameters (fixstr1.pas)

   * 19980629: superfluous warnings when initializing CStrings with a
     string constant and when assigning a string to a CString
     (fjf176.pas)

   * 19980611: writing to files via `filevar^' doesn't always work
     (fjf173.pas)

   * 19980531: allow resetting a file that was opened with rewrite,
     don't close it temporarily
     <199710081754.KAA17185@gnarly.swdc.stratus.com>

   * 19980523: EMX (dos?,os/2!): randomize doesn't work

   * 19980521: automake doesn't work on djgpp in gpc980401
     <352539F3.92DE9585@ujf-grenoble.fr>

   * 19980520: strings are passed to Insert and Delete by value rather
     than by reference after the declaration of a procedure with a
     value string parameter (fjf166.pas)

   * 19980520: name space conflict with strcmp and other functions
     (chief24.pas)

   * 19980520: System: set ExitProc to nil before calling

   * 19980520: System: remove built-in procedures fillchar, move,
     assign, paramcount, paramstr, insert, delete, pos, copy, str, val,
     int, frac, binfile stuff

   * 19980520: GPCTypes: type declarations (esp. string=bpstring)
     should rather be in system

   * 19980520: GPCTypes: use the modern integer type declarations;
     Integer,Word 16 bit;comp 64 bit with _Borland_16_Bit_

   * 19980520: Dos: include a dummy `SwapVectors' procedure

   * 19980512: don't pre-read the buffer in typed files after read
     (fjf104.pas)

   * 19980512: `Seek' and `SeekRead' etc. do not yet work in all
     situations (fjf95b.pas)

   * 19980416: non-text files opened with reset are not writable
     (fjf157.pas)

   * 19980416: position for writing into a file opened with reset is
     wrong by one record (fjf157.pas,fjf158.pas,fjf159.pas,fjf160.pas)

   * 19980410: `EOF' doesn't work with untyped files in djgpp
     (tc19980324)

   * 19980410: Dos line endings are not handled correctly in `ReadLn'

   * 19980405: reading chars from text files doesn't work (fjf131.pas)
     (tmp)

   * 19980405: `--borland-pascal': superfluous warnings `compiler
     directives ... incompatible' for `{$define}', `{$if[n]def}',
     `{$b+/-}', `{$x+/-}'

   * 19980405: make parameter to `GetFile' `const', not `var'

   * 19980405: read/write don't work with a text file as the only
     argument (fjf132.pas)

   * 19980405: randomized automake (fh19971015)

   * 19980405: chars are not accepted for const string parameters
     (chief22.pas)

   * 19980405: `xor' doesn't work with booleans (fjf154.pas)

   * 19980405: const parameters of undiscriminated schema type don't
     work (fjf144.pas)

   * 19980405: don't accept object methods that were not declared with
     the object type (fjf143.pas)

   * 19980405: GPC barfs on type checking with Boolean values in `case'
     statements <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>

   * 19980405: Nested packed conformant arrays do not yet work in all
     cases <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>

   * 19980405: Inside `New', all methods of an object become visible
     and may cause name clashes
     <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>

   * 19980405: string value parameters don't work (fjf125.pas),
     <199802022303.SAA20015@mint.mint.net>

   * 19980405: pack and unpack don't work with conformant arrays

   * 19980405: checking of string var parameters is not strict enough
     (fh19971213:fjf123.pas)

   * 19980405: check for division by zero in constants at compile time
     (fh19971201:fjf121.pas)

   * 19980405: missing type checking of different integer types in var
     parameters (fh19971130:fjf109.pas)

   * 19980405: variable type casting of `^Integer' into `Pointer' for
     passing as var parameter doesn't work (fh19971130:fjf108.pas)

   * 19980405: GPC crashes when writing an array of char to a file of
     char <199711262349.SAA17009@mint.mint.net> (kevin3.pas)

   * 19980405: type casts of integer constants to `[Long]Real' don't
     work (fh19971124) (fjf113.pas)

   * 19980405: don't allow `Dec(Length(S), Count)' (fjf117.pas), `S[0]'
     (fjf116.pas) <199711181231.NAA14069@helena.mi.uni-erlangen.de>
     (2*fh19971124)

   * 19980405: produce an error instead of warning for constants out of
     range (fh19971124) (fjf103.pas)

   * 19980405: EMX: `Extend' doesn't work
     <199803090440.XAA08386@mint.mint.net>

   * 19980405: `Read[ln]': make INT_READ_HEX_MASK the default in
     `--borland-pascal'; `Write[ln]': REAL_CAPITAL_EXP_MASK
     (capexp.pas), make it the default in `--borland-pascal'

   * 19980401: fatal signal 11 with assignment to function method
     return value with a local type declaration (fjf142.pas)

   * 19980220: `ReadStr' causes an error when reading strings and
     source is empty

   * 19980215: `Seek' doesn't work with block devices

   * 19980215: `Seek' doesn't work with untyped files

   * 19980209: treat nil CStrings as empty in write

   * 19980120: `Overlay' is not a reserved word in BP

   * 19980113: bit fields don't work in read (bitfields.pas)

   * 19980112: `Int' and `Frac' don't work on constants
     <199801091201.HAA06756@mint.mint.net> (fjf74.pas) (tmp)

   * 19980106: when reading strings from text files, the capacity is
     too big by 1 (fjf133.pas)

   * 19971230: read doesn't work with packed arrays of char
     <199712300500.AAA30736@mint.mint.net>

   * 19971229: don't allow `4 .. 1'
     <199711270257.VAA06393@mint.mint.net> (subrw2.pas)

   * 19971229: too strict type checking with conformant arrays of char
     (confarr4.pas)

   * 19971229: too strict type checking in `case' statement with chars
     (chars2.pas)

   * 19971216: don't pre-read the buffer in files (fjf120.pas)
     <199712051906.UAA00483@agnes.dida.physik.uni-essen.de>

   * 19971215: use `LongReal' for long real constants (fh19971105)
     (fjf77.pas)

   * 19971215: file and string variables declared in the statement part
     are not initialized (fh19971130:fjf106.pas,fjf107.pas)

   * 19971215: too strict type checking with Seek (kevin4.pas)

   * 19971215: segfault with for loop in init code of a unit
     (bpcompat1.0:system.pas),(fh19971005) (maur1.pas)

   * 19971130: move whole words and take care of alignment when
     necessary in MoveLeft, MoveRight (moves2.pas) (moves3.pas)

   * 19971130: `Seek' to elements just written doesn't work
     (fh19971130:fjf110.pas) (tmp)

   * 19971130: remove `Bound_objects' and `Bound_free_list'
     <199710151621.SAA02929@helena.mi.uni-erlangen.de> (ciriaco1.pas)

   * 19971121: give a warning for `SizeOf (constant)'

   * 19971121: `sizeof(1+1)=4'; `sizeof(2)=8'; types of constants
     (fh19971113:fjf92.pas)

   * 19971121: LongInt constants for varargs parameters are passed as
     integers (fjf56.pas,fjf92.pas)

   * 19971121: sizes of [packed] subranges (fjf86.pas,fjf87.pas)

   * 19971121: detect integer constant overflows
     (fh19971113:fjf76.pas,fjf81.pas,fjf82.pas,fjf83.pas)

   * 19971121: make real numbers assignment compatible with complex
     numbers <97101711354779@petrella.cfilm.ba.cnr.it> (pg19971113)

   * 19971121: allow sizeof(discriminated schema type) (fjf99.pas);
     don't allow sizeof(undiscriminated schema type) (2*fh19971115)
     (fjf98.pas)

   * 19971121: `Seek' bug (2*fh19971113) (fh19971113)
     (fjf94.pas,fjf95.pas) (tmp); SeekRead bug (seekrd.pas)

   * 19971121: `array[boolean] of String(2000)' doesn't work
     (fh19971113) (fjf96.pas) (tmp)

   * 19971121: local inline functions after var declaration aren't
     parsed correctly (fh19971013) (fjf75.pas)

   * 19971121: `const procvar = proc' (fh19971113:fjf90.pas)

   * 19971121: check string var parameters for matching capacity
     (fh19971113:fjf91.pas)

   * 19971121: accept `else'/`otherwise' in a `case' statement without
     preceding `;' (fh19971112) (fjf80.pas)

   * 19971121: `else'/`otherwise' bug in `case' (multiple statements);
     don't allow a colon before it
     <199710061122.HAA26981@mint.mint.net>,
     <Pine.OSF.3.96.971007133527.1198C-100000@capella.hut.fi>

   * 19971121: wrong error messages for Insert (2*fh19971109)
     (fjf93.pas) (tmp)

   * 19971121: pointer addition: allow `+'/`-' and `Succ'/`Pred'; bug:
     adds `n*Sqr(SizeOf(...))' instead of `n*SizeOf(...)'
     (fh19971113:fjf72.pas)

   * 19971121: don't allow reading of (non-typed) constants (error, not
     only warning) (fh19970928) (fjf45.pas)

   * 19971121: segfault with assembler code using a record component in
     a procedure (fh19971015) (fjf73.pas)

   * 19971121: wrong error message for invalid record components
     <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf71.pas)

   * 19971116: accessing a packed array in a variant record does not
     work correctly
     <199711161700.SAA09857@agnes.dida.physik.uni-essen.de>

   * 19971116: capacity is not stored in a string in a variant record
     <199711161700.SAA09857@agnes.dida.physik.uni-essen.de>

   * 19971113: write blanks before `NaN' (pg19971113) (tmp)

   * 19971112: `Str' in `--borland-pascal': only a numeric argument
     (strbool.pas)

   * 19971112: bug with `goto' in a unit
     <3.0.2.32.19971005235702.006a032@icenet.com.au>

   * 19971112: array schema types of text files don't work (fh19971016)
     (fjf64.pas)

   * 19971112: don't allow schema object types (fh19971016) (fjf65.pas)

   * 19971112: don't allow the same identifier for schema type
     discriminator and a field of the schema (fh19971016) (fjf66.pas)

   * 19971112: fatal error with schema type referring to another schema
     type (fh19971016) (fjf67.pas)

   * 19971112: Pointers to string constants don't work (fh19971016)
     (fjf68.pas)

   * 19971112: bug with multidimensional conformant arrays
     <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf69.pas)

   * 19971112: don't allow arrays with negative size (fh19970928)
     (fjf44.pas)

   * 19971112: `var procvar value proc': last program in
     <199707022313.BAA08656@helena.mi.uni-erlangen.de>,(fh19971003)

   * 19971112: segfault with `SqRt' in constant declaration in a unit
     (fh19971111) (fjf78.pas) (tmp)

   * 19971112: procedure in a unit accessing an array passed by
     reference segfaults (fh19971111) (fjf79.pas) (tmp)

   * 19971112: string overflows <6dRwLb2VlJB@rufus.central.de>
     <3258461722101997/A08869/HDC5/11BAB46E3A00*@MHS> (fjf40a.pas)
     (fh19971013)

   * 19971112: SubStr/Copy bug (fh19971013)

   * 19971112: sizes of [packed] subranges (fjf85.pas,fjf88.pas)

   * 19971111: bug with Rewrite,Reset with filename as second parameter
     <1948441422101997/A07437/HDC5/11BAB3AC2F00*@MHS>

   * 19971110: `prior parameter's size depends on ...' bug
     <80256546.003DB078.00@buffer1.quantel.com>

   * 19971110: unknown identifiers in module implementations
     <Pine.BSI.3.96.971108223417.5629A-100000@malasada.lava.net>

   * 19971106: string length check is off by 1 char (fh19971105)

   * 19971106: read and write without parameters are not accepted
     (fh19970928) (fjf43.pas)

   * 19971106: warn about assigning strings to chars (fh19971008)

   * 19971106: type checking in a case statement (fh19971008)
     (fjf58.pas)

   * 19971106: superfluous warning after reading in the return value of
     a function (fh19971003)

   * 19971106: `x absolute procvar': second to last program in
     <199707022313.BAA08656@helena.mi.uni-erlangen.de>,(fh19971003)
     (fjf48.pas)

   * 19971102: `Write (LongRealValue)' doesn't work with very big or
     small or unnormal numbers (2*fh19971105)

   * 19971101: problems with resetting an already open file
     <m0xIyyF-0006OkC@bockermann.ping.de>

   * 19971101: division of LongReals doesn't use full precision

   * 19971101: segfault with wrong program (undeclared array bound)
     (fh19971010)

   * 19971101: accept strings like `#48#49'
     <6dRwLb2VlJB@rufus.central.de>,
     <SIMEON.9710101739.A@muahost.cc.keele.ac.uk>,
     <199710102323.BAA15175@helena.mi.uni-erlangen.de>

   * 19971101: sometimes `*.gpc' files are not removed (fh19971015)

   * 19971101: give a warning for an assignment (or parameter passing)
     of a string to a char

   * 19971101: integer function result can't be assigned to a cardinal
     <199710282015.VAA17667@helena.mi.uni-erlangen.de> (kevin1.pas)

   * 19971022: uses in implementation part of a unit; circular unit
     references <7420001522101997/A07601/HDC5/11BAB3C01400*@MHS>

   * 19971013: `Dispose (nil)' causes a segfault (fjf63.pas)

   * 19971001: `type x=packed record a,b:packed 1..6 end': SizeOf (x) =
     8 (fjf31.pas) <199706271232.OAA15639@helena.mi.uni-erlangen.de>

   * 19971001: objects bug <SIMEON.9704041456.A@muahost.cc.keele.ac.uk>

   * 19971001: pointers to fields of packed arrays/records
     <199705010212.EAA29018@helena.mi.uni-erlangen.de> (3 items)
     (fjf55.pas)

   * 19971001: bug with redefined operator
     <6ZV6gbuMRMB@p-wendt.chateau.line.org> (chris1.pas)

   * 19971001: minor bug <199708111750.AA05985@hoover.gilbarco.com>
     (rphil5.pas)

   * 19971001: exported type bug
     <1.5.4.16.19970613155920.32b721e4@icenet.com.au>

   * 19971001: the set code generated in the Alpha causes runtime
     errors in the generated code

   * 19971001: put global variables into the data segment, not on the
     stack <199707261050.MAA21734@agnes.dida.physik.uni-essen.de>

   * 19971001: bug with call of `Sqr'/`Abs'/`Round'/... in an
     expression as a parameter <6dNsBq9VlJB@rufus.central.de>

   * 19971001: GPC doesn't recognize equal types in connection with two
     units <2754032017091997/A08645/HDC5/11B98D033600*@MHS>


File: gpc-todo.info,  Node: Implemented Features,  Prev: Fixed Bugs,  Up: Done

Features that have been implemented
-----------------------------------

   This section lists the new features implemented since 1st Nov 1997,
together with the date (YYYYMMDD) on which they were implemented.

   After the release of GPC 2.1, this section will be cleared, and the
features implemented after that release will either be listed in a new
section here or directly in the "news".

   * 20020424: new procedures `Initialize', `Finalize' (fjf659*.pas)

   * 20020423: GMP: also supports GMP library version 4 now

   * 20020407: `asmname' for programs, units and module interfaces
     (fjf656*.pas)

   * 20020306: new function `CStringStrError'

   * 20020225: new field `Parent' in `PObjectType'; new operators `is'
     and `as' (fjf639*.pas)

   * 20020224: abstract methods and object types (fjf637*.pas); new
     options `-W[no-]implicit-abstract', `-W[no-]inherited-abstract'

   * 20020224: new field `Name' in `PObjectType', containing a pointer
     to the object type's name (fjf636*.pas)

   * 20020224: new built-in type `PObjectType' with fields `Size' and
     `NegatedSize', returned by `TypeOf' and required by `SetType'
     (fjf636*.pas)

   * 20020216: new function `FormatString', new variable
     `FormatStringTransformPtr' (fjf629*.pas)

   * 20020203: additional make targets `pascal.install-with-gcc',
     `pascal.bindist-with-gcc'

   * 20020125: new function `Ln1Plus' (fjf602.pas)

   * 20020103: (start of) translation of the manual into Croatian

   * 20011221: BP compatible `Graph' unit (in `GRX' package)

   * 20011220: Intl: new unit

   * 20011213: new function `LTrim'

   * 20011201: before adding `#0' when assigning/passing string as
     CStrings, check if there is a `#0' already, to avoid faults if the
     memory is read-only (fjf265.pas, fjf574a.pas)

   * 20011111: new options `-W[no-]semicolon' (warn about a semicolon
     after `then', `else' or `do') (fjf562*.pas)

   * 20011108: changed the syntax for computed `goto's from `goto *Ptr'
     to `goto (Ptr)' (only half as ugly:-) (drf4.pas)

   * 20011103: new options `--[no-]double-quoted-strings'
     (fjf546[a-f].pas)

   * 20011102: support `InitProc' (fjf482.pas)

   * 20011023: new options `--[no-]typed-address', also as compiler
     directives `{$[no-]typed-address}' or `{$T+}'/`{$T-}'
     (fjf540[a-h].pas)

   * 20011023: `asmname' and `uses ... in' now allow concatenated
     strings (fjf539[ab].pas)

   * 20011023: new `public' and `private' directives for interfaces
     (fjf538[ab].pas)

   * 20011023: new options `--big-endian', `--little-endian',
     `--print-needed-options' for targets whose endianness can vary

   * 20011022: make `{$gpc-main}' work in units (fjf545.pas)

   * 20011018: new predefined symbol `__GPC_VERSION__'

   * 20011018: new options `--classic-pascal' and
     `--classic-pascal-level-1' (equivalent to `--standard-pascal' and
     `--standard-pascal-level-1', and meaning to supersede the latter
     in the future)

   * 20011016: new parameters `TimeZone', `DST', `TZName1', `TZName2'
     to `UnixTimeToTime'; new fields `TimeZone', `DST', `TZName1',
     `TZName2' in `TimeStamp'

   * 20011007: StringUtils: new procedure `StrHashTableUsage'

   * 20010816: StringUtils: new function `ShellTokenizeString'

   * 20010713: new option `-x Preprocessed-Pascal' or
     `--language=Preprocessed-Pascal' (fjf519*.pas)

   * 20010704: optimize string assignments

   * 20010704: optimize (non-padding) comparisons with and assignment
     of the constant empty string

   * 20010704: warn about some string comparisons and `in' tests that
     are always `True' or always `False'

   * 20010614: ParserDemo: add support for `cot' and angle degree
     notation

   * 20010604: allow `Delete' to be called with two or three arguments
     (fjf509b.pas)

   * 20010531: CRT: new key codes `kbShCtrlIns', `kbShCtrlDel'

   * 20010529: new option `--init-modules' (ian3.pas, ian5[ab].pas)
     <01051815483106.01126@ida>

   * 20010524: new variable `FakeHighLetters'

   * 20010524: StringUtils: new routines `ShellQuoteString',
     `AllocateTPStrings', `ClearTPStrings', `TokenizeString'

   * 20010506: `InOutResString' and `InOutResCErrorString' are now
     `PString's rather than `CString's

   * 20010506: new argument `Caller' to the argument `Proc' of
     `ForEachMarkedBlock'

   * 20010503: new options `--[no-]read-base-specifier',
     `--[no-]read-hex', `--[no-]read-white-space'

   * 20010502: new field `Links' in `BindingType'

   * 20010501: DosUnix: new functions `OEM2Latin1' and `Latin12OEM'

   * 20010430: `GetTerminalName' now returns a string rather than a
     `CString'

   * 20010421: make some lower-level RTS routines available in
     `gpc.pas', marked "mostly for internal use"

   * 20010420: new function `ReadLink'

   * 20010417: moved the `PExecute' code to the `Pipe' unit

   * 20010417: new parameter `CloseFlag' to `AssignHandle'; new field
     `CloseFlag' in `BindingType'

   * 20010415: new function IsTerminal

   * 20010412: many error messages now include libc's error message for
     a more accurate description

   * 20010412: new procedure RuntimeErrorErrNo; new variable
     InOutResCErrorString; `InOutResStr': renamed to `InOutResString',
     moved to the `GPC' unit from a built-in declaration; new parameter
     `ErrNoFlag' to `IOError', `IOErrorInteger', `IOErrorCString' and
     `IOErrorFile'

   * 20010409: make GPC build with gcc-2.95.3

   * 20010312: new routines `GetDayOfYear', `GetSundayWeekOfYear',
     `GetMondayWeekOfYear', `GetISOWeekOfYear'

   * 20010304: new procedure `ChOwn'

   * 20010227: System: new Delphi compatible routines and variables
     `CompToDouble', `DoubleToComp', `AllocMemCount', `AllocMemSize',
     `Assert', `DefaultAssertErrorProc', `AssertErrorProc', `NoErrMsg'

   * 20010227: removed the alternative address operator `&' (`@' is
     still there)

   * 20010227: removed the dialect specific behaviour if GPC is invoked
     as `pc', `epc', `bpc', etc.

   * 20010224: replaced the `ReleaseCount' function by a more general
     `ForEachMarkedBlock' procedure

   * 20010223: BP compatible `binobj' utility

   * 20010223: System: new conditional `__BP_PARAMSTR_0__'

   * 20010121: Trap: new procedure `TrapReset'

   * 20010110: `uses' and `import' may now occur multiple times in a
     program, unit/module interface or unit/module implementation, even
     between declarations

   * 20010108: ParserDemo: add factorial support

   * 20010107: new functions `IsAlpha', `IsSpace'

   * 20001216: CRT: new functions `AltGrKey', `ExtraKey'

   * 20001215: new function `GetTempFileNameInDirectory'

   * 20001210: new function `FormatTime', new constant `InvalidYear'

   * 20001206: new constant `MaskNoStdDir'

   * 20001205: the constant `MonthLength' was replaced by a function of
     the same name that handles leap years

   * 20001201: new constant `FileMode_Text_Reset_ReadWrite'

   * 20001115: `shl' and `shr' can also be used as procedures now

   * 20001112: new switches `-W[no-]object-directives'

   * 20001106: StringUtils: new routines `AppendStr', `StrCut',
     `Char2Boolean', `StrSkipSpaces', `StrReadQuoted',
     `StrReadDelimited', `StrReadWord', `StrReadConst', `StrReadComma',
     `StrReadInt', `StrReadReal', `StrReadBoolean', `StrReadEnum'

   * 20001017: DisposePPStrings

   * 20001016: `GetIOErrorMessage' now returns a string rather than a
     `CString'

   * 20001016: RegExType: changed the field `Error' from `CString' to
     `PString'

   * 20001016: GlobBuffer: replaced fields `Count' and `Result' by
     `Result' (`PPStrings')

   * 20001015: `GetOptErrorFlag' is now True by default

   * 20001014: StringUtils: new functions StrCount, StrReplace,
     Char2Digit, QuoteString, UnQuoteString, ExpandTabs,
     ExpandCEscapeSequences

   * 20001007: many new docdemo programs

   * 20001007: new options `-W[no-]underscore'

   * 20001003: many new docdemo programs

   * 20001001: many new `Reference' entries and new material in the
     `Programming' chapter in the manual

   * 20000917: added the `Size' field of BindingType again

   * 20000910: don't add a newline on `Extend' to text files that were
     bound as binary

   * 20000909: `GetOptLong' can now optionally derive the short options
     from the `LongOptions' array

   * 20000909: `CStringCharPos', `CStringLastCharPos': renamed to
     `CStringChPos' and `CStringLastChPos' to avoid confusion with
     `CharPos' and `LastCharPos'

   * 20000902: CRT: new procedure CRTSetTerminal

   * 20000828: new procedure FileMove

   * 20000826: new constant DayOfWeekName

   * 20000825: integrated the FAQ into the GPC Manual

   * 20000820: new routines SystemInfo, FileLock, FileUnlock, Alarm

   * 20000819: StringUtils: new unit, implementing a string hash table
     (further routines to be added)

   * 20000817: CRT: new routines CRTSavePreviousScreen,
     CRTSavePreviousScreenWorks

   * 20000806: new function GetTerminalName

   * 20000803: new functions UserID, GroupID

   * 20000723: new parameter `AccessTime' to SetFileName

   * 20000716: renamed the file mode constants from `fmFOO' to `fm_FOO'

   * 20000716: new routines MemoryMap, MemoryUnMap

   * 20000626: the default make target for testing GPC is called
     `pascal.check' (or `check-pascal') rather than `check-gpc' now;
     the test must be run in the build directory (not the `p'
     subdirectory) or in the `test' subdirectory of the source
     directory now

   * 20000619: `--borland-pascal': ignore everything after `end.' (also
     takes care of "^Z" characters at the end of Dos text files)

   * 20000613: Dos: special versions of GetCBreak and SetCBreak for
     MS-Windows

   * 20000612: Dos: new procedures (not only on DJGPP) DosVersion,
     SetDate, SetTime

   * 20000611: CRT: new procedures `SetScreenSize', `SetMonochrome';
     renamed `IsMonoMode' to `IsMonochrome'

   * 20000610: each of the parameters `Dir', `Name' and `Ext' to
     `FSplit' may now be `Null'

   * 20000607: Single RTS command line options are now recognized with
     `--gpc-rts=OPTION' as well, and this can be given multiple times

   * 20000607: new procedure ResetGetOpt

   * 20000606: CRT: new functions CtrlKey, AltKey; new constants
     chCtrlA ... chCtrlZ, kbCtrlA ... kbCtrlZ

   * 20000605: new routines BlockSignal, SignalBlocked

   * 20000605: CRT with ncurses: changing the screen is now done
     through a shell command definable in the environment variable
     `RESIZETERM' (which defaults to `resize', `SVGATextMode' and
     `setfont'); the variables `crt_setfont_command_80_25',
     `crt_setfont_command_80_50', `crt_setfont_command_40_25' and
     `crt_setfont_command_40_50' (Linux only) were removed

   * 20000604: Dos: new procedures (not only on DJGPP) GetCBreak,
     SetCBreak, GetVerify, SetVerify

   * 20000604: new routines SetInputSignals, GetInputSignals

   * 20000531: new demo program `DynamicArrayDemo'

   * 20000530: integrated the interface of all units included with GPC
     into the GPC Manual; formatted the interfaces, also of gpc.pas,
     more nicely

   * 20000528: integrated the To-Do list and the list of new GPC
     features into the GPC Manual

   * 20000528: include the demo programs printed in the GPC Manual
     (currently 59, but expected to become more) into binary
     distributions in a directory `docdemos'

   * 20000527: restructured the GPC Manual

   * 20000526: in the GPC Manual, the list of command-line options and
     the list of keywords for the various dialects were updated, and
     from now on, they are automatically kept up to date, directly from
     the source

   * 20000526: changed the license of most units and the RTS from LGPL
     + exception to GPL + exception

   * 20000525: ReverseBytes, ConvertFromLittleEndian,
     ConvertFromBigEndian, ConvertToLittleEndian, ConvertToBigEndian:
     new parameter `ElementSize'; new demo program `EndianDemo'

   * 20000523: derive the keyword list in the documentation directly
     from the source

   * 20000521: WinCRT: new unit (identical to CRT)

   * 20000521: CRT: GetScreenSize renamed to ScreenSize (WinCRT
     compatibility); added some missing WinCRT compatibility stuff

   * 20000519: new function GetMountPoint

   * 20000516: new field Device in BindingType

   * 20000516: BlockReadLittleEndian, BlockReadBigEndian,
     BlockWriteLittleEndian, BlockWriteBigEndian: new parameter
     `ElementSize'

   * 20000516: new procedures ReadStringLittleEndian,
     ReadStringBigEndian, WriteStringLittleEndian, WriteStringBigEndian

   * 20000509: System: new functions Ofs, Seg, Ptr, CSeg, DSeg, SSeg,
     SPtr and a number of variables (mostly useless and only for BP
     compatibility)

   * 20000507: new procedure IOErrorFile

   * 20000505: `asmname' in variable and constant declarations must now
     come after the type; furthermore, `asmname' doesn't imply
     `external' anymore

   * 20000502: SeekEOF, SeekEOLn

   * 20000421: new function InstallSignalHandler

   * 20000418: recognize files with `.pp' or `.dpr' extension as Pascal
     sources

   * 20000415: new switch `{$[no-]debug-statement[=foo]}' (call a
     procedure automatically before each statement for debugging)

   * 20000415: RTS command line options are now recognized after
     `--gpc-rts' instead of `-Grts'

   * 20000415: removed `__cstring__', `__void__'

   * 20000414: the RTS command line options are now also available as
     long options; new RTS options `--version' (print RTS version and
     exit), `--abort-on-error' (abort with SIGABRT on runtime error),
     `--error-file', `--error-fd' (dump runtime error messages and
     strack trace to given file name or FD)

   * 20000412: runtime errors are now printed with their address to
     help debugging (using addr2line), and the address is stored in
     ErrorAddr

   * 20000411: new functions ReturnAddress, FrameAddress

   * 20000411: local compiler directives and defines with `{$local}'
     and `{$endlocal}' (fjf430*.pas)

   * 20000409: `{$ifopt}'

   * 20000409: case-[in]sensitve defines with {{$csdefine}} and
     {{$cidefine}} (or `--csdefine' and `cidefine'); `{$define}' (but
     not `--define') is now case-insensitive

   * 20000407: make `mod' with negative right operand work like in BP;
     allow expressions like `-2 * +3'

   * 20000407: `make check' now runs the current test suite rather than
     the (obsolete and removed) dejagnu tests; the test suite now
     produces a summary output by default, `make pascal.check-long' (or
     `check-pascal-long') produces the long output format as before

   * 20000407: new option `-W[no-]warnings' (enable/disable warnings)

   * 20000407: make single-letter compiler directives BP compatible
     (`--borland-pascal': ignore `$F', `$O' etc., ignore numbers after
     `$M'); new option `--[no-]stack-checking', also as compiler
     directives `{$[no-]stack-checking}' or `{$S+}'/`{$S-}'; replace
     `{$P+}'/`{$P-}' by `{$[no-]pedantic}' (or `--[no-]pedantic' on the
     command line); ignore `{W+}'/`{W-}' in `--borland-pascal' mode

   * 20000406: CRT: new variable CRTAutoInitProc; new procedure
     CRTNotInitialized

   * 20000405: new switches `--[no-]macros'

   * 20000402: new switches `-W[no-]field-name-problem'

   * 20000402: allow all `-Wfoo' options also as `{$W foo}' directives
     (no more `{$Wfoo}' like in the last alpha release!)

   * 20000331: replace `--no-nested-comments' by `--mixed-comments'
     (and vice versa); new options `--[no-]nested-comments',
     `-W[no-]mixed-comments', `-W[no-]nested-comments' (mixcom*.pas,
     nest*.pas); allow comments (but not compiler directives) within
     compiler directives

   * 20000331: make C style char escapes the default for strings
     enclosed in `""' (like `--char-escapes' used to do), and use `\"'
     rather than `""' to get a verbatim `"' in them; remove the
     `--[no-]char-escapes' switch and the `{$E[+-]}' compiler directive

   * 20000331: Delphi style `//' comments, new switch
     `--[no-]delphi-comments' and compiler option
     `{$[no-]delphi-comments}'

   * 20000327: new header gpc-in-c.h for inclusion of GPC code into C
     programs; new demo program GPC_C_Pas to demonstrate this

   * 20000327: allow `^const' to create a pointer to a constant

   * 20000327: don't expand macros in `--borland-pascal' and `--delphi'

   * 20000327: Dos: added the unportable Dos-only routines under DJGPP
     if `__BP_UNPORTABLE_ROUTINES__' is defined

   * 20000326: removed `__asmname__', `__const__', `__external__',
     `__inline__', `__static__', `__volatile__', `__byte__',
     `__short__', `__long__', `__longlong__', `__unsigned__'

   * 20000322: cleaned up the lexer; removed some fossils, e.g.
     `--c-numbers'

   * 20000306: file sizes can now be bigger than `Integer' (e.g. 64 bit
     files on 32 bit machines) if supported by the OS via lseek64() or
     llseek() (e.g. Linux, Solaris, IRIX)

   * 20000221: new types ByteBool, ShortBool, WordBool, MedBool,
     LongBool, LongestBool, Boolean(n) (fjf395.pas)

   * 20000219: build in `Include', `Exclude'

   * 20000213: make `nil' also a value of any procedural/functional
     type (fjf258[a-e].pas)

   * 20000211: new functions `PathExists', `DataDirectoryName', new
     parameter `Prefix' to `ConfigFileName'

   * 20000211: new fields SymLink, TextBinary in BindingType; new
     procedure AssignBinary; removed variable TextFilesBinary

   * 20000202: new options `--[no-]progress-messages',
     `--[no-]progress-bar'

   * 20000202: ignore `{$L+}'/`{$L-}' directives (for BP compatibility)

   * 20000131: new unit MD5; new demo program MD5Demo

   * 20000124: new unit FileUtils; new demo program FindFilesDemo

   * 20000111: changed the internal file handling from using `FILE *'
     to integer file handles, to make it more efficient and get rid of
     some problems; replaced the `CFile' field in `BindingType' by a
     `Handle' field; replaced the `AssignCFile' procedure by an
     `AssignHandle' procedure; removed the `GetFile' function (note
     `FileHandle')

   * 20000111: new function Integer2String

   * 20000106: new functions IsPrintable, CharSet2RegEx

   * 19991217: System: new functions RealToBPReal, BPRealToReal

   * 19991217: new functions IsInfinity, IsNotANumber, SplitReal

   * 19991124: new demo program ProcVarDemo

   * 19991117: new function `LongReal2Str' to work-around the `Work
     (Real)' problem on the MIPS

   * 19991110: CRT: DJGPP: added support for 40 column modes (requires
     updated PDCurses library)

   * 19991104: new demo program FExpandDemo

   * 19991103: CRT: changed the define to get an X11 version from
     XCURSES to X11

   * 19991102: added `Special' field to BindingType

   * 19991101: new function GetShellPath

   * 19991101: new option `--[no-]transparent-file-names' to derive the
     external file names from the file variable names
     <199909010105.VAA23844@kaylor.ncifcrf.gov> (fjf394.pas)

   * 19991025: CRT: new procedures SimulateBlockCursor,
     SimulateBlockCursorOff

   * 19991023: CRT: don't initialize curses at the beginning of the
     program, but initialize it automatically when the first CRT
     routine is called (for BP compatiblity); new procedure CRTInit to
     explicitly initialize CRT which also sets some defaults (PCCharSet
     and update level) to more natural (and less BP compatible) values

   * 19991023: CRT: allow any of the parameters to GetWindow to be
     `Null'

   * 19991014: new procedure ReAlloc; previous ReAlloc function (libc)
     renamed to CReAlloc; new variable ReAllocPtr

   * 19991014: new functions GetPasswordEntryByName,
     GetPasswordEntryByUID, GetPasswordEntries; make ExpandEnvironment
     recognize `~user'

   * 19991006: RegEx: support for converting subexpression references
     to upper/lower case while replacing them with `\u7'/`\l7'

   * 19990924: new functions MemCompCase, StrEqualCase, PosCase,
     LastPosCase, PosFromCase, LastPosTillCase, IsPrefixCase,
     IsSuffixCase, ExecuteNoTerminal

   * 19990922: System: new procedure SetTextBuf for BP compatibility

   * 19990905: before building the RTS, make sure that the compiler
     version used is current, to prevent strange bugs when building
     with an older version <17698.990820@mg.dp.ua>

   * 19990805: new procedure SeedRandom; new variable SeedRandomPtr;
     automatically initialize the random number generator like
     Randomize does at the first call to Random unless SeedRandom was
     called before (only for the default RNG; not the BP compatible one
     in the System unit)

   * 19990802: new procedure RestoreTerminalClearCRT

   * 19990801: CRT: added support for panels (overlapping windows); new
     routines GetActivePanel, PanelNew, PanelDelete,
     PanelBindToBackground, PanelIsBoundToBackground, PanelActivate,
     PanelHide, PanelShow, PanelHidden, PanelTop, PanelBottom,
     PanelMoveAbove, PanelMoveBelow, PanelAbove, PanelBelow,
     IgnoreCursor

   * 19990728: new demo program ArraySliceDemo

   * 19990727: CRT: replaced the variables PCCharSet and
     UseControlChars by routines SetPCCharSet, GetPCCharSet,
     SetControlChars, GetControlChars

   * 19990727: GMP: new procedures mpf_exp, mpf_ln, mpf_pow,
     mpf_arctan, mpf_pi

   * 19990726: implemented environment variable management in Pascal,
     so that it's independent of libc differences (e.g. the presence or
     not of `environ'); new routines UnSetEnv, GetCEnvironment; removed
     PutEnv and CSystem functions (obsoleted by SetEnv and Execute);
     turned the Environment variable into a schema which contains the
     environment variables as CStrings; allow empty and case-sensitive
     environment variables within GPC programs even under Dos

   * 19990723: make `{$gnu-pascal}' completely equivalent to
     `--gnu-pascal'; add `{$gnu-pascal}' to all included units so they
     can also be compiled with `--automake' when `--foo-pascal' options
     are given (dialec[1-6].pas)

   * 19990723: new options `-W[no-]typed-const' and `-W[no-]near-far'

   * 19990720: new functions SetTerminalProcessGroup,
     GetTerminalProcessGroup

   * 19990719: new demo program RealPower

   * 19990709: new constants for signals; new routines Kill, WaitPID,
     SetProcessGroup (formerly in the Pipe unit)

   * 19990622: new function FileHandle; un-built-in GetFile - it is now
     in the GPC unit, but obsolete

   * 19990622: new routines AllocateBigMem, DisposeBigMem,
     MoveToBigMem, MoveFromBigMem, MapBigMem for uniform access to big
     memory blocks for GPC and BP; new demo program BigMemDemo

   * 19990617: integrated the `PExecute' unit into the RTS

   * 19990612: `register' directive

   * 19990609: integrated the GetOpt unit into the RTS (because the RTS
     uses it, anyway); removed the Internal unit from the installation
     (because using it from programs is really not recommendable)

   * 19990603: new procedure SetEnv (makes obsolete libc's PutEnv)

   * 19990601: included a `GPC' unit for BP to provide some GPC
     compatibility to BP programs

   * 19990527: new demo program TrapDemo

   * 19990527: new units HeapMon, Trap

   * 19990527: new function ReleaseCount

   * 19990526: new routines RegisterRestoreTerminal,
     UnregisterRestoreTerminal, RestoreTerminal

   * 19990502: new routine SetProcessGroup

   * 19990424: new function RegExPosFrom

   * 19990403: new constant FileNamesCaseSensitive, new function
     FileNameLoCase

   * 19990327: added 20 demo programs

   * 19990325: new function GetMicroSecondTime

   * 19990324: renamed the CString routines in the RTS so they get a
     `CString' prefix, moved the BP compatibility identifiers for the
     same routines into the `Strings' unit

   * 19990308: `--no-default-paths'

   * 19990307: new functions IOSelect, IOSelectRead

   * 19990225: `--no-{unit,object}-path'

   * 19990225: `--[no-]io-checking' and `{$[no-]io-checking}' as
     synonyms for `{$I+-}'

   * 19990219: recognize (but currently ignore)
     published/public/protected/private

   * 19990218: renamed DataReady to CanRead

   * 19990213: change warnings of the form `Foo-Pascal does not have
     foobars' into `foobars are {GPC-specific|a GPC extension}' and add
     spaces before all but the first line of multi-line messages

   * 19990211: new procedures Sleep, SleepMicroSeconds, GetCPUTime

   * 19990211: CRT: new procedures CRTUpdate, CRTRedraw, SetScroll,
     CRTSetCursesMode

   * 19990209: renamed the __BP_INTEGERS__ (System unit) and
     _Borland_16_Bit_ (Dos and WinDos units) defines to
     __BP_TYPE_SIZES__

   * 19990209: Pipe: new parameter `Process' to Pipe; new functions
     WaitPipeProcess, StrSignal, Kill, WaitPID; new constants (actually
     variables) for the signals

   * 19990205: new routines HasWildCardsOrBraces, BraceExpand,
     MultiFileNameMatch, GlobOn, MultiGlob, MultiGlobOn, QuoteFileName,
     UnQuoteFileName, FExpandQuoted, ForceAddDirSeparator,
     FindNonQuotedChar, FindNonQuotedStr, NameExtFromPath; new
     parameter `Quoted' to RelativePath

   * 19990202: new declarations DirRoot, QuotingCharacter, EnvVarChars,
     EnvVarCharsFirst, WildCardChars, FileNameSpecialChars,
     ShellExecCommand

   * 19990127: new functions IsUpCase, IsLoCase, IsAlphaNum,
     IsAlphaNumUnderscore

   * 19990127: CRT: catch some signals and return pseudo function keys
     for them if CheckBreak is False

   * 19990125: added `User', `Group', `Mode' and `INode' fields to
     BindingType; new procedure ChMod

   * 19990125: CRT: react to screen size changes by external events and
     return a pseudo function key

   * 19990115: built in `Null' (= `nil^')

   * 19990115: Pipe unit (also for Dos!)

   * 19990115: new function DataReady to check if data can be read from
     a file without blocking

   * 19990110: integrated the `PExecute' unit into GPC

   * 19990102: pass all given options to automake compilations too
     (without having to repeat them with `--automake="foo"'), remove
     `--automake="foo"'

   * 19990101: `--[no-]autolink' (default is autolink)

   * 19981228: `--[no-]executable-path',
     `--[no-]unit-destination-path', `--[no-]object-destination-path'

   * 19981222: implemented buffering to speed up reading from files

   * 19981213: integrated the following units into GPC: `GetOpt',
     `RegEx', `GMP', `Ports'

   * 19981212: new string routines: SetString, StringOfChar (Delphi
     compatibility)

   * 19981212: integrated the `DosUnix' unit into GPC

   * 19981210: integrated the `GPCUtil' unit into GPC

   * 19981208: integrated the following units into GPC: `System',
     `Turbo3'

   * 19981208: remove {$W-} as much as possible in the units

   * 19981208: built in Addr, Assigned

   * 19981207: integrated the following units into GPC: `CRT', `Dos',
     `Overlay', `Printer', `Strings', `WinDos'

   * 19981206: `--unit-path' (upath.pas), `--object-path' (opath.pas);
     don't allow them in a source file

   * 19981206: allow `Copy' with 2 arguments (fjf40e.pas)

   * 19981205: `FileName' function with a Pascal string return value

   * 19981205: interpret `{$L foo}' as `-lfoo'; accept files with `.so'
     extension in `{$L}'

   * 19981203: pre-define `__OS_DOS__' on Dos-like systems

   * 19981202: `--uses=foo(bar.pas),bar,baz(../baz.pas)' (fjf101b.pas)

   * 19981202: make `=' and so on for strings work as exact comparisons
     (`--borland-pascal'; `--[no-]exact-compare-strings')
     (fjf38{,[a-f]}.pas)

   * 19981201: pre-define __BORLAND_PASCAL__ etc. depending on the
     dialect options and __GNU_PASCAL__ if no dialect option was given
     (dialdef{,[1-6]}.pas)

   * 19981108: new time routines UnixTimeToTimeStamp and
     TimeStampToUnixTime

   * 19981108: added `AccessTime', `ModificationTime' and `ChangeTime'
     fields to BindingType

   * 19981021: added a `Force' field to BindingType

   * 19980921: procedures to convert the endianness of single variables
     (ReverseBytes, Convert{From,To}{Little,Big}Endian) and to do this
     while reading/writing them from/to untyped files
     (Block{Read,Write}{Little,Big}Endian)

   * 19980919: MaxLongInt

   * 19980918: a number of new CString routines, including almost all
     (that weren't already there) of BP's strings unit

   * 19980918: WinDos: portable BP compatible unit with most of the
     routines (those that can possibly be implemented in a portable way)

   * 19980917: CRT: some win (TP 5), wincrt and tpcrt compatibility
     routines and some extensions added

   * 19980915: Internal: unit, with the internal RTS declarations from
     gpc.pas moved into it

   * 19980914: System: remove built-in procedures UpCase, LoCase,
     ChDir, MkDir, RmDir, FileSize, AddNullTerminator, InOutRes,
     IOResult, FileMode

   * 19980914: System: GetDir, Lo, Hi, Swap, MemAvail, MaxAvail,
     HeapError, HeapErrorNilReturn

   * 19980912: declared CGetMem, CFreeMem, ReAlloc

   * 19980909: build in GetMemPtr, FreeMemPtr

   * 19980830: allow `RunError' without arguments (error code -1)

   * 19980830: `--no-automake', `--no-autobuild', `--no-autolink' (each
     of them disables all of `--autolink', `--automake' and
     `--autobuild')

   * 19980822: internally remove the `type' parameter to _p_bind()

   * 19980818: build in GPC_StatFS

   * 19980724: procedures UpCaseString, LoCaseString, functions
     UpCaseStr, LoCaseStr

   * 19980722: longest{int,real}-field-width (fieldw.pas)

   * 19980722: allow collecting options in several `--automake' oder
     `--autobuild' options

   * 19980719: build in ExitCode, ErrorAddr

   * 19980719: Dos: portable BP compatible unit with most of the
     routines (those that can possibly be implemented in a portable way)

   * 19980717: added a `DayOfWeek' field to TimeStamp and a DayOfWeek
     function

   * 19980715: define __GPC_RELEASE__

   * 19980702: new CString functions: StrLen, StrEnd, StrScan,
     StrRScan, StrDup, StrCmp, StrCaseCmp

   * 19980701: new file name declarations and routines: PathSeparator,
     DirSeparator, DirSeparators, ExtSeparator, DirSelf, DirParent,
     NullDevice, TTYDevice, ConsoleDevice, GetCurrentDirectory,
     GetTempDirectory, GetTempFileName, GetTempFileName_CString,
     Slash2OSDirSeparator, OSDirSeparator2Slash,
     Slash2OSDirSeparator_CString, OSDirSeparator2Slash_CString,
     FileExists, DirectoryExists, FSearch, FSearch_Executable,
     Expand_Environment, FExpand, FSplit, DirFromPath, NameFromPath,
     ExtFromPath, OpenDir, ReadDir, CloseDir

   * 19980629: runtime I/O error handling with {$I+-}

   * 19980629: build in NewCString, StrPCopy, CString2String
     (fjf156.pas); String2CString

   * 19980629: build in UpCase, LoCase (locale-dependent, except in
     `--borland-pascal', there only 7 bit ASCII)
     (fjf165a.pas,fjf165b.pas)

   * 19980629: build in High, Low (for ordinal types and arrays)

   * 19980629: build in Random (for LongestCard and LongestReal),
     Randomize

   * 19980629: build in SizeType, PtrDiffType

   * 19980629: build in Pi
     <Pine.SGI.3.96.980318113542.2662B-100000@pugh.bip.bham.ac.uk>

   * 19980629: build in Erase, Rename, ChDir, MkDir, RmDir, FileMode,
     Flush

   * 19980628: internally remove the unused second parameter of
     Dispose/FreeMem

   * 19980626: allow mixing of New/GetMem/Dispose/FreeMem with
     malloc()/free() and with Mark/Release (except free() with Release
     in some cases)

   * 19980623: Turbo3 unit

   * 19980619: Printer: portable (piping to lpr under Un*x)

   * 19980613: `--gnu-pascal'

   * 19980611: CRT: portable ncurses-based unit

   * 19980604: print error messsages in the form: `a.out: [internal
     error:] unknown code in `Write' (error #904)'

   * 19980531: when opening a file with a file name, do a binding
     actually (fjf169.pas)

   * 19980523: added a `MicroSecond' field to TimeStamp

   * 19980520: printer unit for Dos

   * 19980520: `--uses="foo"' (fjf101.pas,fjf101a.pas)

   * 19980511: build in FilePos, FileSize, Truncate, Append

   * 19980511: build in RunError

   * 19980405: accept (but currently ignore) {$ifopt}

   * 19980405: When passing a long string value to a PChar parameter,
     automatically add a #0 terminator

   * 19980405: allow `type y(b:integer)=array[1..b] of integer; x=y;'
     (fjf115.pas)

   * 19980405: Fail (FreeMem, when constructor called by New)

   * 19980405: rename AssignLength and AssignType to SetLength and
     SetType, resp., for Delphi compatibility

   * 19980405: warn about absolute declarations and type casts that can
     cause alignment problems

   * 19980405: `--autobuild'

   * 19980129: predefine symbols for endianness

   * 19980114: recognize `--[no-]truncate-strings' in WriteStr
     (fjf59.pas,truncstr.pas)

   * 19980114: build in untyped files and BlockRead, BlockWrite
     (blockop.pas)

   * 19971230: build in Int, Frac (fjf129.pas)

   * 19971215: build in PtrInt, PtrCard, PtrWord

   * 19971130: allow opening files to `''' or `'-'' for stdin/stdout

   * 19971121: different versions of math functions for LongReal

   * 19971121: allow `with' for schema types
     <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf70.pas)

   * 19971121: allow `(var) := expr' (fjf100.pas)

   * 19971112: build in ParamCount, ParamStr (params.pas)

   * 19971112: initialize arrays of text in a loop rather than
     individually (fh19971016) (fjf64.pas)

   * 19971112: build in Seek

   * 19971112: build in FillChar, Move (moving whole words), MoveLeft,
     MoveRight (moving single bytes) (moves.pas)

   * 19971106: build in Delete (fjf62.pas) (fh19971008), Pos
     (delinspos.pas), Copy

   * 19971106: AssignLength (alength.pas)

   * 19971101: make the char array in a String `[1..Capacity+1]' so
     that there's always space for a #0 terminator

   * 19971101: build in Str and Val; Str in `--borland-pascal': only
     one argument

   * 19971101: build in StdErr

   * 19971101: optimize `in' with set constructors

   * 19971101: build in Insert (fjf61.pas)



Tag Table:
Node: Top77
Node: Known Bugs1965
Node: Planned Features6718
Node: Planned - Strings7860
Node: Planned - Records/arrays9895
Node: Planned - Files11223
Node: Planned - Other types11888
Node: Planned - Units and modules13046
Node: Planned - OOP14535
Node: Planned - Misc17142
Node: Planned - Utilities20363
Node: Done21043
Node: Fixed Bugs21316
Node: Implemented Features81593

End Tag Table
