This file was generated automatically from news.texi.
DO NOT CHANGE THIS FILE MANUALLY!

GPC Announcement
****************

@@ The first section will have to be changed according to the actual
release.

This is the announcement of

     GNU Pascal, beta version gpc-200006xx

which is now available from

     `ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/'.

Binaries for various platforms are available in a subdirectory
`binary/'.  These platforms include:

   - i586-pc-linux-gnulibc1

   - i586-pc-linux-gnu

   - alpha-unknown-linux-gnu

   - alphaev56-dec-osf4.0d

   - mips-sgi-irix6.2

   - sparc-sun-solaris2.6

   - i386-pc-djgppv201 (MS-DOS)

Binaries for more platforms, including ix86-mingw32 (MS-Windows 9x/NT)
and sparc-sun-solaris2.5.1 will follow soon and be announced separately.

This is meant to be almost the final beta release before the release of
GPC 2.1. Unless users are experiencing serious problems with it, a
final beta version will follow soon which will be identical to GPC 2.1
modulo possible bug fixes.

If you have problems with this release or urgent suggestions for GPC
2.1, please contact us at the GPC mailing list <gpc@gnu.de> immediately.

About GNU Pascal
****************

Welcome to GNU Pascal, the free 32/64-bit Pascal compiler of the GNU
Compiler Collection (GNU CC or GCC). It combines a Pascal front-end with
the proven GCC back-end for code generation and optimization.  Other
compilers in the collection currently include compilers for the Ada, C,
C++, Objective C, Chill, FORTRAN, and Java languages. Unlike utilities
such as p2c, this is a true compiler, not just a converter.

This version of GPC corresponds to GCC version 2.95.x.

The purpose of the GNU Pascal project is to produce a Pascal compiler
(called GNU Pascal or GPC) which

   * combines the clarity of Pascal with powerful tools suitable for
     real-life programming,

   * supports both the Pascal standard and the Extended Pascal standard
     as defined by ISO, ANSI and IEEE (ISO 7185:1990, ISO/IEC
     10206:1991, ANSI/IEEE 770X3.160-1989),

   * supports other Pascal standards (UCSD Pascal, Borland Pascal,
     Pascal-SC) in so far as this serves the goal of clarity and
     usability,

   * may be distributed under GNU license conditions, and

   * can generate code for and run on any computer for which the GNU C
     compiler can generate code and run on.

Pascal was originally designed for teaching. GNU Pascal provides a
smooth way to proceed to challenging programming tasks without learning
a completely different language.

The current release implements Standard Pascal (ISO 7185, level 1), a
large subset of Extended Pascal (ISO 10206, aiming for full
compliance), is highly compatible to Borland Pascal (version 7.0) with
some Delphi extensions, and provides a lot of useful GNU extensions.

For more information about GNU Pascal, see
     `http://home.pages.de/~GNU-Pascal/'

There's a large number of bug fixes, too many to mention here. They are
listed in the `Fixed Bugs' section of the GPC To-Do list
(http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html).

The most important bugs fixed include the unit/module initialization
done in the wrong order, and not working at all on some systems, the
global goto bug, some "two-unit bugs" and a number of BP compatibility
issues.

There's a number of new or changed features which are listed in the
following sections. Features without further description refer to new
routines or options.

General Changes And Possible Incompatibilies with Previous Versions
===================================================================

This release of GPC has been cleaned up substantially. Consequently, a
few old and obsolete features have been dropped or replaced by cleaner,
more flexible or otherwise more useful ones. This might lead to minor
problems with old programs, but we suppose they're very rare (many
programmers might not even know about the old features) and easy to
overcome. The most important ones are listed here, the rest of them is
contained in the following sections and marked with `(@)'.

   * The executables `bpc', `pc' and `epc' have been dropped. What they
     did was equivalent to `gpc --borland-pascal', `gpc
     --standard-pascal' or `gpc --extended-pascal', respectively, and
     you can use these forms now. If you need them often, you can put
     them in scripts or aliases called `bpc' etc., of course.

   * `asmname' in variable and constant declarations must now come
     after the type (e.g. `var foo : Integer = 42; asmname 'bar';').
     Furthermore, `asmname' doesn't imply `external' anymore for
     variables.

   * The internal file handling in the RTS was changed from using
     `FILE *' pointers to integer file handles, to make it more
     efficient and to get rid of some problems. Accordingly, the
     `CFile' field in `BindingType' was replaced by a `Handle' field,
     the `AssignCFile' procedure by an `AssignHandle' procedure, and
     the `GetFile' function was removed (a substitute is the function
     `FileHandle' which has already existed in previous releases).

   * The option `--no-nested-comments' (to allow comments like `{ *)'
     as the standard requires) has been renamed to `--mixed-comments'
     (note the inverted value). Accordingly, the compiler directives
     `{$N+}' and `{$N-}' have been renamed to `{$no-mixed-comments}' and
     `{$mixed-comments}'. The default, when no dialect options are
     given, is still `--no-mixed-comments' (i.e., what used to be
     `--nested-comments').

   * A new option `--nested-comments' to allow real nested comments
     like `{ { } }' (also available as a compiler switch, like almost
     all command-line options). Note the new meaning of this switch, so
     if you used it before, you'll probably have to change it to
     `--no-mixed-comments' (see above). If nested comments are enabled,
     comments are also allowed within compiler directives and macros -
     however, compiler directives within other compiler directives are
     still not allowed, and compiler directives within comments are, of
     course, still ignored.

   * C style character escapes (`\n', `\007' etc.) are now the default
     for strings enclosed in double quotes, while single quoted strings
     do not allow them (according to the standard).  Accordingly, a
     verbatim `"' in a double quoted string is now obtained with `\"'
     rather than `""' (but a verbatim `'' in a single quoted string
     still with `''', of course). Therefore, the option
     `--[no-]char-escapes' and the compiler directives `{$E+}'/`{$E-}'
     have been dropped.  If you used these features, please change to
     the appropriate kind of quotes.

   * Macros are no more expanded in `--borland-pascal' and `--delphi'
     modes. Expanding them causes a few problems with strange sources
     written for BP which use the same name for a conditional define
     and an identifier. Macros can be turned on/off, independently of
     the dialect, with the new switches `--[no-]macros'. (B)

   * Macros and conditionals defined with `{$define}' are now
     case-insensitive. (B) Macros and conditionals defined with
     `--define' on the command line are still case-sensitive for
     compatibility to other GNU compilers. In addition, GPC provides
     `{$csdefine}' or `--csdefine' and `{$cidefine}' or `--cidefine' to
     define case sensitive or insensitive macros or conditionals,
     respectively. If you have defined macros or conditionals with
     `{$define}' and rely on them being case-sensitive, change it to
     `{$csdefine}' now.

   * The mechanism for including GPC code into code written in other
     languages has changed and is now more robust. A header gpc-in-c.h
     is provided for inclusion of GPC code into C programs, and a demo
     program GPC_C_Pas (together with C code calling it) is supplied to
     demonstrate this. (Including C code into GPC programs works as
     before.)

   * The preprocessor is now called `gpcpp' (it was `gpc-cpp' before).
     If you have installed an older GPC version, please remove gpc-cpp
     now. If you have any scripts that refer to gpc-cpp directly,
     change the reference to gpcpp. If you use DJGPP, and you added the
     GPC specific sections to djgpp.env as described in the FAQ, please
     change `[gpc-cpp]' to `[gpcpp]'.

   * In `--borland-pascal' mode, GPC now ignores everything after
     `end.'. (This also takes care of "^Z" characters at the end of Dos
     text files). In particular, multiple units or modules in one file
     don't work anymore in `--borland-pascal' mode. (B)

Command Line Options and Compiler Directives
============================================

   * `{$ifopt}' works now, with short directives like in BP (`{$ifopt
     X+}') (B) and also with long directives (`{$ifopt
     extended-syntax}')

   * Local compiler directives and defines can be specified with
     `{$local}' and `{$endlocal}'.

   * Delphi (or C++) style `//' comments in default and `--delphi'
     modes, and a switch `--[no-]delphi-comments' to turn them on/off
     explicitly. (D)

   * -W[no-]typed-const (warn about BP style misuse of typed constants)

   * -W[no-]near-far (warn about use of the obsolete BP compatible
     `near' and `far' directives)

   * -W[no-]underscore (warn about double/leading/trailing underscores
     in identifiers)

   * -W[no-]mixed-comments (warn about use of mixed comments)

   * -W[no-]nested-comments (warn about use of nested comments)

   * -W[no-]field-name-problem (don't warn about a problem with field
     names)

   * -W[no-]object-directives (don't warn about unimplemented
     `private', `protected' and `public' directives)

   * -W[no-]warnings (enable/disable warnings)

   * All `-Wfoo' warning options also work as `{$W foo}' compiler
     directives. In contrast to the last alpha release, there must now
     be a space after the `W'. (@)

   * -no-default-paths (disable standard unit etc. paths)

   * -no-unit-path, -no-object-path (disable any unit/object paths
     given so far)

   * -[no-]io-checking (same as `{$I+}', `{$I-}')

   * -[no-]stack-checking, also as compiler directives
     `{$[no-]stack-checking}' or `{$S+}'/`{$S-}' (B)

   * -[no-]typed-address, also as compiler directives
     `{$[no-]typed-address}' or `{$T+}'/`{$T-}' (B)

   * -[no-]transparent-file-names (derive the external file names from
     the file variable names

   * -[no-]progress-messages, -[no-]progress-bar (output information to
     give progress messages or display a progress bar while compiling,
     using suitable utilities)

   * {$[no-]debug-statement[=foo]} (call a procedure automatically
     before each statement for debugging)

   * The `--[no-]c-numbers' switch has been removed. If you really used
     C style octal or hex numbers (`0400', `0xf00'), you can easily
     convert them to the Extended Pascal notation (`8#400', `16#f00')
     or (hex only) to the Borland Pascal notation (`$foo'). (@)

   * `{$gnu-pascal}' is now completely equivalent to `--gnu-pascal';
     `{$gnu-pascal}' has been added to all units shipped with GPC, so
     they can also be compiled when `--borland-pascal' or other dialect
     options are given on the command line.

   * `{$if}' directives now understand Pascal operators like `and',
     `or', `not' (C operators are also still understood).

   * `{$P+}'/`{$P-}' was replaced by `{$[no-]pedantic}' (or
     `--[no-]pedantic' on the command line)

   * The single-letter compiler directives are now BP compatible.
     Those that are not meaningful or not necessary in GPC (e.g.
     `{$F+}', `{$O...}', or `{$M}' with only numbers following) are
     ignored in `--borland-pascal' mode and warned about otherwise. (B)
     Note: `{$W+}'/`{$W-}' is now also ignored in `--borland-pascal'
     mode (it is the only single-letter directive left that has a
     different meaning in BP and in GPC, and besides, the BP meaning
     can be safely ignored in GPC).  To enable/disable warnings in
     `--borland-pascal' mode, you can use `{$W [no-]warnings}' now. (@)

   * 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).

   * RTS command line options are now recognized after `--gpc-rts'
     instead of `-Grts'. Also, a single option can be given with
     `--gpc-rts=OPTION'. This is allowed multiple times. (@)

   * Files with `.pp' or `.dpr' extension are recognized as Pascal
     sources. (D)


Compiler and RTS Built-in Declarations
======================================

Some of the following declarations are built into the compiler, others
are declared in the `GPC' module.

   * Types etc.:

        - ByteBool, ShortBool, WordBool, MedBool, LongBool, LongestBool,
          Boolean(42) (D?)

        - `register' directive

        - Directives with double underscores like `__asmname__',
          `__inline__' have been dropped. The same directives without
          underscores have been available for a long time. Furthermore,
          GPC now supports `^const' to create a pointer to a constant
          (which could be done in a C like fashion with the `__const__'
          directive before). (@)

        - Type qualifiers like `__byte__' or `__unsigned__' have been
          dropped. GPC has been supporting "real" type names like
          `Byte' or `ByteWord' for a long time, and it's easy to change
          to them. Similar for `__cstring__' and `__void__' where
          `CString' and `Void' are available. (@)

   * Expressions:

        - `nil' is accepted as a value of any procedural/functional
          type (B)

        - `shl' and `shr' can also be used as procedures now.

        - `mod' with negative right operand now works like in BP.  (B)

        - Expressions like `-2 * +3' are now allowed without
          parentheses. (B)

   * Files and I/O:

        - SeekEOF, SeekEOLn (B)

        - IOErrorFile

        - New parameter `ElementSize' to ReverseBytes,
          ConvertFromLittleEndian, ConvertFromBigEndian,
          ConvertToLittleEndian, ConvertToBigEndian,
          BlockReadLittleEndian, BlockReadBigEndian,
          BlockWriteLittleEndian, BlockWriteBigEndian (@)

        - ReadStringLittleEndian

        - ReadStringBigEndian

        - WriteStringLittleEndian

        - WriteStringBigEndian

        - GetTempFileNameInDirectory

        - PathExists

        - DataDirectoryName

        - AssignBinary

        - HasWildCardsOrBraces

        - BraceExpand

        - MultiFileNameMatch

        - GlobOn

        - MultiGlob

        - MultiGlobOn

        - QuoteFileName

        - UnQuoteFileName

        - FExpandQuoted

        - ForceAddDirSeparator

        - FindNonQuotedChar

        - FindNonQuotedStr

        - NameExtFromPath

        - SystemInfo

        - GetMountPoint

        - FileMove

        - ChMod

        - IOSelect

        - IOSelectRead

        - FileNameLoCase

        - FileNamesCaseSensitive (constant)

        - DirRoot (constant)

        - MaskNoStdDir (constant)

        - QuotingCharacter (constant)

        - EnvVarChars (constant)

        - EnvVarCharsFirst (constant)

        - WildCardChars (constant)

        - FileNameSpecialChars (constant)

        - ShellExecCommand (constant)

        - DataReady renamed to CanRead (@)

        - FileLock, FileUnlock

        - MemoryMap, MemoryUnMap

        - New parameter `Quoted' to RelativePath (@)

        - New parameter `Prefix' to ConfigFileName (@)

        - New parameter `AccessTime' to SetFileName (@)

        - ExpandEnvironment recognizes `~user'

        - Each of the parameters `Dir', `Name' and `Ext' to `FSplit'
          may now be null.

        - New fields `User', `Group', `Mode', `Device', `INode',
          `SymLink', `TextBinary' and `Special' in BindingType

        - The variable `TextFilesBinary' has been dropped. Instead, you
          can now use the procedure `AssignBinary' or the field
          `TextBinary' in BindingType. (@)

        - 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).

        - Renamed the file mode constants from `fmFOO' to `fm_FOO'. (@)

        - `GetIOErrorMessage' now returns a string rather than a
          `CString'. (@)

        - In `GlobBuffer', the fields `Count' and `Result' (pointer to
          an array of `CString's, 0 baser) were replaced by `Result', a
          pointer to an array of pointers to strings, 1 based). (@)

   * Strings:

        - Integer2String

        - IsUpCase

        - IsLoCase

        - IsAlphaNum

        - IsAlphaNumUnderscore

        - IsPrintable

        - 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 (B) (@)

        - MemCompCase

        - StrEqualCase

        - PosCase

        - LastPosCase

        - PosFromCase

        - LastPosTillCase

        - IsPrefixCase

        - IsSuffixCase

        - LineBreak (constant)

        - SetEnv (makes obsolete libc's PutEnv (@))

        - UnSetEnv

        - GetCEnvironment

        - DisposePPStrings

        - The environment variable management is now implemented in
          Pascal, so it's independent of libc differences (e.g. the
          presence or not of `environ'). Access via `GetEnv' etc. works
          unchanged.

        - The `Environment' variable is now a schema which contains the
          environment variables as CStrings. (@)

        - Empty and case-sensitive environment variables are allowed
          within GPC programs even under Dos.

   * Random:

        - SeedRandom

        - SeedRandomPtr (variable)

        - Randomize is called automatically when necessary (except when
          using the BP compatible random number generator in the System
          unit (B)).

   * Memory:

        - ReAlloc; previous ReAlloc function (libc) renamed to CReAlloc
          (@)

        - ReAllocPtr (variable)

        - ReleaseCount

        - AllocateBigMem, DisposeBigMem, MoveToBigMem, MoveFromBigMem,
          MapBigMem for uniform access to big memory blocks for GPC and
          BP (B)

   * Time:

        - Sleep

        - SleepMicroSeconds

        - Alarm

        - GetCPUTime

        - GetMicroSecondTime

        - FormatTime

        - The constant `MonthLength' was replaced by a function of the
          same name that handles leap years. (@)

        - DayOfWeekName (constant)

        - InvalidYear (constant)

   * Misc:

        - Include and Exclude for sets (B)

        - IsInfinity

        - IsNotANumber

        - SplitReal

        - ReturnAddress

        - FrameAddress

        - Runtime errors are now printed with their address to help
          debugging (using addr2line), and the address is stored in
          ErrorAddr. (B)

        - RegisterRestoreTerminal

        - UnregisterRestoreTerminal

        - RestoreTerminal

        - ExecuteNoTerminal

        - SetProcessGroup

        - SetTerminalProcessGroup

        - GetTerminalProcessGroup

        - GetTerminalName

        - SetInputSignals

        - GetInputSignals

        - GetShellPath

        - GetPasswordEntryByName

        - GetPasswordEntryByUID

        - GetPasswordEntries

        - StrSignal

        - Kill

        - WaitPID

        - InstallSignalHandler

        - BlockSignal

        - SignalBlocked

        - Constants for the signals

        - UserID

        - GroupID

        - IllReservedAddress, IllPriviledgedInstruction, IllReservedOp
          were removed. (@)


GPC Units
=========

   * CRT:

        - Works now under Cygwin and mingw.

        - DJGPP: support for 40 column modes (requires updated PDCurses
          library)

        - Renamed the the conditional to get an X11 version from
          XCURSES to X11. (@)

        - Renamed GetScreenSize to ScreenSize (WinCRT compatibility)
          (B) (@)

        - WindowOrg, WindowSize, Cursor, Origin, InactiveTitle,
          AutoTracking, WindowTitle, (variables), ScrollTo, TrackCursor
          (WinCRT compatibility) (B)

        - SimulateBlockCursor, SimulateBlockCursorOff

        - Curses is not initialized at the beginning of the program, but
          rather when the first CRT routine is called. (B)

        - CRTInit to explicitly initialize CRT and also set some
          defaults (PCCharSet and update level) to more natural (and
          less BP compatible) values.

        - CRTSetTerminal

        - CRTAutoInitProc (variable)

        - CRTNotInitialized

        - CRTSavePreviousScreen

        - CRTSavePreviousScreenWorks

        - Any of the parameters to GetWindow may now be null.

        - Support for panels (overlapping windows): GetActivePanel,
          PanelNew, PanelDelete, PanelBindToBackground,
          PanelIsBoundToBackground, PanelActivate, PanelHide, PanelShow,
          PanelHidden, PanelTop, PanelBottom, PanelMoveAbove,
          PanelMoveBelow, PanelAbove, PanelBelow, IgnoreCursor

        - Replaced the variables PCCharSet and UseControlChars by
          routines SetPCCharSet, GetPCCharSet, SetControlChars,
          GetControlChars. (@)

        - SetScreenSize

        - SetMonochrome

        - Renamed IsMonoMode to IsMonochrome. (@)

        - On ncurses platforms, 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. (@)

        - CRTUpdate

        - CRTRedraw

        - SetScroll

        - CRTSetCursesMode

        - RestoreTerminalClearCRT

        - CtrlKey

        - AltKey

        - constants chCtrlA ... chCtrlZ, kbCtrlA ... kbCtrlZ

        - Catch some signals and return pseudo function keys for them if
          CheckBreak is False.

        - React to screen size changes by external events and return a
          pseudo function key.

        - Reduced the (already small) system-dependent code, and added
          an overview of the few problematic features in the comment at
          the beginning of crt.pas.

   * RegEx:

        - RegExPosFrom

        - CharSet2RegEx

        - Support for converting subexpression or complete matching
          references to upper or lower case while replacing them with
          `\u7' or `\l7'.

   * GMP:

        - mpf_exp

        - mpf_ln

        - mpf_pow

        - mpf_arctan

        - mpf_pi

        - The unit now works with version 3.x of the GMP library, but it
          also still works with version 2.x.

   * System:

        - SetTextBuf (B)

        - RealToBPReal, BPRealToReal to convert between binary BP
          compatible 6 byte reals and GPC's reals (useful, e.g., for
          binary file exchange with BP programs) (B)

        - Ofs, Seg, Ptr, CSeg, DSeg, SSeg, SPtr (mostly useless and only
          for BP compatibility) (B)

        - A number of variables like SelectorInc (mostly useless and
          only for BP compatibility) (B)

        - Renamed the `__BP_INTEGERS__' conditional to
          `__BP_TYPE_SIZES__'. (@)

   * Dos, WinDos:

        - GetCBreak

        - SetCBreak

        - GetVerify

        - SetVerify

        - Renamed the `_Borland_16_Bit_' conditional to
          `__BP_TYPE_SIZES__'. (@)

        - Intr, MsDos, only under DJGPP if `__BP_UNPORTABLE_ROUTINES__'
          is defined. (B)

        - DosVersion, SetDate, SetTime, only if
          `__BP_UNPORTABLE_ROUTINES__' is defined (emulated on
          non-DJGPP). (B)

   * RegEx:

        - In `RegExType', the field `Error' is now of type `PString'
          rather than `CString'. (@)

   * Pipe:

        - New parameter `Process' to Pipe (@)

        - WaitPipeProcess

   * PExecute:

        - Integrated into the RTS so you don't need a `uses PExecute'
          anymore. (@)

   * GetOpt:

        - ResetGetOpt

        - `GetOptErrorFlag' is now True by default. (@)

        - Integrated into the RTS so you don't need a `uses GetOpt'
          anymore. (@)

        - Renamed the variables and constants used (see gpc.pas under
          `Command Line Option Parsing'). (@)

        - `GetOptLong' can now optionally derive the short options from
          the `LongOptions' array.

   * WinCRT:

     New unit (identical to CRT) (B)

   * HeapMon:

     New unit for (simple) heap checking.

   * Trap:

     New unit for runtime error trapping.

   * MD5:

     New unit for computing MD5 message digests.

   * FileUtils:

     New unit with some file and directory utilities.

   * StringUtils:

     New unit with some string utilities.

   * GPC-BP:

     A `GPC' unit for BP to provide some GPC compatibility to BP
     programs and make it easier to gradually convert them to GPC. (G)


A few of the units (in particular: CRT, GMP and RegEx) require
libraries. The sources of the libraries, with small patches where
necessary, as well as binaries for i586-pc-linux-gnu,
i586-pc-linux-gnulibc1, m68k-linux, sparc-sun-solaris2, i386-pc-go32,
i386-pc-cygwin32 and i386-pc-mingw32 are available from
     `ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/libs/'

GPC Manual
==========

   * Some very obsolete sections of the manual (e.g., the output of
     running the PVS test suite on an Alpha machine in 1995 ;-) were
     removed.

   * The manual was restructured. Several partly overlapping chapters
     were included into the Programmer's Guide, and the overlapping
     material was merged into more coherent sections.

   * The BP QuickStart Guide was left a separate chapter and completed
     with a section about differences between BP and GPC, especially
     mentioning endianness issues.

   * A lot of new material was added to the `Programming' and
     `Reference' chapters.

   * 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. The
     `Invoking GPC' chapter does not contain all options inherited from
     GCC anymore (these can be found in the GCC manual, anyway), but
     rather more extensive descriptions of the most commonly used GPC
     options, with examples.

   * The interface of all units included with GPC, together with a
     short description of the units, is now included in the manual. The
     interface, also that of the `GPC' module which describes the
     interface to the Run Time System, is formatted more nicely,
     especially in the printed version of the manual.

   * The `Support' chapter was updated, now including information about
     GPC's Test Suite and how to report bugs most effectively, as well
     as up-to-date contact information.

   * The installation instructions were updated, now matching the
     current GPC and GCC versions.

   * The FAQ, the To-Do list, and the list of new features (this one
     :-) were integrated into the manual.

   * The list of authors in the manual was updated, and the list of
     contributors was included from the WWW page.

   * The manual was integrated with GPC's WWW pages, i.e. most of the
     WWW pages were synchronized with the corresponding information in
     the manual, and both now contain the same information.


Demo Programs
=============

   * There is a number of new demo programs to demonstrate some
     features of the compiler and the units. The demo programs are part
     of source and binary GPC distributions. After installation, they
     can be found in `<prefix>/doc/gpc/demos/'.

   * The demo programs printed in the GPC Manual (currently 186, but
     expected to become more) are now installed as separate files,
     ready to be compiled, in a directory `<prefix>/doc/gpc/docdemos/'.


Test Suite
==========

The Test Suite is used to verify that all features of GPC work as
expected and to reproduce bugs reported. Test programs for bugs found
by users and for new features are constantly added. The test suite is
part of source, not binary, GPC distributions.

   * As usual, many new tests have been added to the Test Suite.

   * The few checks dependent on the system or certain installed tools
     or libraries have been equipped with checks about the system
     properties, and are skipped on systems on which they are not
     applicable.

   * The old dejagnu tests have been integrated into the Test Suite.

   * `pascal.check' (or `check-pascal') now runs the current Test Suite
     (as `make check2-gpc' did before) rather than the (now removed)
     dejagnu tests. This must be done in the build directory (not the
     `p' subdirectory) or in the `test' subdirectory of the source
     directory. (@)

   * The Test Suite now produces a summary output by default. To get
     the long output format as before, run `make pascal.check-long' (or
     `check-pascal-long') now.

   * The GPC Manual as well as the `test/README' file in source
     distributions (or `BUGS' in binary distributions) tells you how to
     run the Test Suite and describes all features of the testing
     environment, to make it easier for users to construct even exotic
     new tests, and contains some generic instructions on how to report
     bugs.

Legend
======

`(@)':   minor backward-incompatibility
`(B)':   BP compatibility
`(D)':   Delphi compatibility
`(G)':   GPC compatibility :-)

Have fun,

The GNU Pascal Development Team

