@c Copyright (C) 1999-2000 Free Software Foundation, Inc.
@c For copying conditions, see the file gpc.texi.
@c This file is part of the GPC Manual.
@c
@c Authors: Peter Gerwinski <peter@gerwinski.de>
@c          Frank Heckenbach <frank@pascal.gnu.de>
@c
@c Last modification: 26 May 2000 (file up to date)

@ifclear NEWSONLY
@node News
@chapter New Features of GNU Pascal.
@cindex news
@end ifclear

@ifset NEWSONLY
@include version.texi
This file was generated automatically from news.texi.@*
@sc{DO NOT CHANGE THIS FILE MANUALLY!}

@settitle GPC Announcement
@node Top
@chapter GPC Announcement
@paragraphindent 0

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

This is the announcement of

@example
GNU Pascal, beta version gpc-200006xx
@end example

which is now available from

@example
@uref{ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/}.
@end example

Binaries for various platforms are available in a subdirectory
@file{binary/}.  These platforms include:

@itemize @minus
@item i586-pc-linux-gnulibc1
@item i586-pc-linux-gnu
@item alpha-unknown-linux-gnu
@item alphaev56-dec-osf4.0d
@item mips-sgi-irix6.2
@item sparc-sun-solaris2.6
@item i386-pc-djgppv201 (MS-DOS)
@end itemize

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 @email{gpc@@gnu.de}
immediately.

@chapter About GNU Pascal

@include welcome.texi

For more information about GNU Pascal, see
@example
@uref{http://home.pages.de/~GNU-Pascal/}
@end example

@end ifset

There's a large number of bug fixes, too many to mention here. They
are listed in the @samp{Fixed Bugs} section of the
@ifset NEWSONLY
@uref{http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html,GPC To-Do list}.
@end ifset
@ifclear NEWSONLY
GPC To-Do list, @ref{Fixed Bugs}.
@end ifclear

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.

@menu
* News - General Changes And Possible Incompatibilies To Previous Versions::
* News - Command Line Options and Compiler Directives::
* News - Compiler and RTS Built-in Declarations::
* News - Units::
* News - GPC Manual::
* News - Demo Programs::
* News - Test Suite::
* Legend::
@end menu

@node News - General Changes And Possible Incompatibilies To Previous Versions
@section General Changes And Possible Incompatibilies To 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 @samp{(@@)}.

@itemize @bullet

@item The executables @samp{bpc}, @samp{pc} and @samp{epc} have been
dropped. What they did was equivalent to
@samp{gpc --borland-pascal}, @samp{gpc --standard-pascal} or
@samp{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 @samp{bpc} etc., of course.

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

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

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

@item A new option @samp{--nested-comments} to allow real nested
comments like @samp{@{ @{ @} @}} (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 @samp{--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.

@item C style character escapes (@samp{\n}, @samp{\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 @samp{"} in a double quoted string is now
obtained with @samp{\"} rather than @samp{""} (but a verbatim
@samp{'} in a single quoted string still with
@samp{'@r{}'}, @c @r{} is there to not let '' have its special meaning
of course). Therefore, the option @samp{--[no-]char-escapes} and the
compiler directives @samp{@{$E+@}}/@samp{@{$E-@}} have been dropped.
If you used these features, please change to the appropriate kind of
quotes.

@item Macros are no more expanded in @samp{--borland-pascal} and
@samp{--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
@samp{--[no-]macros}. (B)

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

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

@item The preprocessor is now called @samp{gpcpp} (it was
@samp{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 @samp{[gpc-cpp]} to @samp{[gpcpp]}.

@item In @samp{--borland-pascal} mode, GPC now ignores everything
after @samp{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 @samp{--borland-pascal} mode. (B)
@end itemize

@node News - Command Line Options and Compiler Directives
@section Command Line Options and Compiler Directives

@itemize @bullet

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

@item Local compiler directives and defines can be specified with
@samp{@{$local@}} and @samp{@{$endlocal@}}.

@item Delphi (or C++) style @samp{//} comments in default and
@samp{--delphi} modes, and a switch @samp{--[no-]delphi-comments} to
turn them on/off explicitly. (D)

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

@item -W[no-]near-far (warn about use of the obsolete BP compatible
@samp{near} and @samp{far} directives)

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

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

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

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

@item -W[no-]warnings (enable/disable warnings)

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

@item --no-default-paths (disable standard unit etc. paths)

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

@item --[no-]io-checking (same as @samp{@{$I+@}}, @samp{@{$I-@}})

@item --[no-]stack-checking, also as compiler directives
@samp{@{$[no-]stack-checking@}} or @samp{@{$S+@}}/@samp{@{$S-@}} (B)

@item --[no-]typed-address, also as compiler directives
@samp{@{$[no-]typed-address@}} or @samp{@{$T+@}}/@samp{@{$T-@}} (B)

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

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

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

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

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

@item @samp{@{$if@}} directives now understand Pascal operators like
@samp{and}, @samp{or}, @samp{not} (C operators are also still
understood).

@item @samp{@{$P+@}}/@samp{@{$P-@}} was replaced by
@samp{@{$[no-]pedantic@}} (or @samp{--[no-]pedantic} on the command
line)

@item The single-letter compiler directives are now BP compatible.
Those that are not meaningful or not necessary in GPC (e.g.
@samp{@{$F+@}}, @samp{@{$O...@}}, or @samp{@{$M@}} with only numbers
following) are ignored in @samp{--borland-pascal} mode and warned
about otherwise. (B) Note: @samp{@{$W+@}}/@samp{@{$W-@}} is now also
ignored in @samp{--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 @samp{--borland-pascal} mode, you can
use @samp{@{$W [no-]warnings@}} now. (@@)

@item The RTS command line options are now also available as long
options; new RTS options @samp{--version} (print RTS version and
exit), @samp{--abort-on-error} (abort with SIGABRT on runtime
error), @samp{--error-file}, @samp{--error-fd} (dump runtime error
messages and strack trace to given file name or FD).

@item RTS command line options are now recognized after
@samp{--gpc-rts} instead of @samp{-Grts}. Also, a single option can
be given with @samp{--gpc-rts=@var{option}}. This is allowed
multiple times. (@@)

@item Files with @file{.pp} or @file{.dpr} extension are recognized
as Pascal sources. (D)

@end itemize

@node News - Compiler and RTS Built-in Declarations
@section Compiler and RTS Built-in Declarations

Some of the following declarations are built into the compiler,
others are declared in the @samp{GPC} module.

@itemize @bullet

@item Types etc.:

@itemize @minus
@item @samp{nil} is accepted as a value of any procedural/functional
type (B)
@item ByteBool, ShortBool, WordBool, MedBool, LongBool, LongestBool,
Boolean(42) (D?)
@item @samp{register} directive
@item Directives with double underscores like @samp{__asmname__},
@samp{__inline__} have been dropped. The same directives without
underscores have been available for a long time. Furthermore, GPC
now supports @samp{^const} to create a pointer to a constant (which
could be done in a C like fashion with the @samp{__const__}
directive before). (@@)
@item Type qualifiers like @samp{__byte__} or @samp{__unsigned__}
have been dropped. GPC has been supporting ``real'' type names like
@samp{Byte} or @samp{ByteWord} for a long time, and it's easy to
change to them. Similar for @samp{__cstring__} and @samp{__void__}
where @samp{CString} and @samp{Void} are available. (@@)
@item @samp{mod} with negative right operand now works like in BP. (B)
@item Expressions like @samp{-2 * +3} are now allowed without
parentheses. (B)
@end itemize

@item Files and I/O:

@itemize @minus
@item SeekEOF, SeekEOLn (B)
@item IOErrorFile
@item New parameter @samp{ElementSize} to ReverseBytes,
ConvertFromLittleEndian, ConvertFromBigEndian,
ConvertToLittleEndian, ConvertToBigEndian, BlockReadLittleEndian,
BlockReadBigEndian, BlockWriteLittleEndian, BlockWriteBigEndian (@@)
@item ReadStringLittleEndian
@item ReadStringBigEndian
@item WriteStringLittleEndian
@item WriteStringBigEndian
@item PathExists
@item DataDirectoryName
@item AssignBinary
@item HasWildCardsOrBraces
@item BraceExpand
@item MultiFileNameMatch
@item GlobOn
@item MultiGlob
@item MultiGlobOn
@item QuoteFileName
@item UnQuoteFileName
@item FExpandQuoted
@item ForceAddDirSeparator
@item FindNonQuotedChar
@item FindNonQuotedStr
@item NameExtFromPath
@item SystemInfo
@item GetMountPoint
@item FileMove
@item ChMod
@item IOSelect
@item IOSelectRead
@item FileNameLoCase
@item FileNamesCaseSensitive (constant)
@item DirRoot (constant)
@item QuotingCharacter (constant)
@item EnvVarChars (constant)
@item EnvVarCharsFirst (constant)
@item WildCardChars (constant)
@item FileNameSpecialChars (constant)
@item ShellExecCommand (constant)
@item DataReady renamed to CanRead (@@)
@item FileLock, FileUnlock
@item MemoryMap, MemoryUnMap
@item New parameter @samp{Quoted} to RelativePath (@@)
@item New parameter @samp{Prefix} to ConfigFileName (@@)
@item New parameter @samp{AccessTime} to SetFileName (@@)
@item ExpandEnvironment recognizes @samp{~user}
@item Each of the parameters @samp{Dir}, @samp{Name} and @samp{Ext}
to @samp{FSplit} may now be null.
@item New fields @samp{User}, @samp{Group}, @samp{Mode},
@samp{Device}, @samp{INode}, @samp{SymLink}, @samp{TextBinary} and
@samp{Special} in BindingType
@item The variable @samp{TextFilesBinary} has been dropped. Instead,
you can now use the procedure @samp{AssignBinary} or the field
@samp{TextBinary} in BindingType. (@@)
@item File sizes can now be bigger than @samp{Integer} (e.g. 64 bit
files on 32 bit machines) if supported by the OS via lseek64() or
llseek() (e.g. Linux, Solaris, IRIX).
@item Renamed the file mode constants from @samp{fm@var{foo}} to
@samp{fm_@var{foo}}. (@@)
@item @samp{GetIOErrorMessage} now returns a string rather than a
@samp{CString}. (@@)
@item In @samp{GlobBuffer}, the fields @samp{Count} and
@samp{Result} (pointer to an array of @samp{CString}s, 0 baser) were
replaced by @samp{Result}, a pointer to an array of pointers to
strings, 1 based). (@@)
@end itemize

@item Strings:

@itemize @minus
@item Integer2String
@item IsUpCase
@item IsLoCase
@item IsAlphaNum
@item IsAlphaNumUnderscore
@item IsPrintable
@item Renamed the CString routines in the RTS so they get a
@samp{CString} prefix, moved the BP compatibility identifiers for
the same routines into the @samp{Strings} unit (B) (@@)
@item MemCompCase
@item StrEqualCase
@item PosCase
@item LastPosCase
@item PosFromCase
@item LastPosTillCase
@item IsPrefixCase
@item IsSuffixCase
@item LineBreak (constant)
@item SetEnv (makes obsolete libc's PutEnv (@@))
@item UnSetEnv
@item GetCEnvironment
@item DisposePPStrings
@item The environment variable management is now implemented in
Pascal, so it's independent of libc differences (e.g. the presence
or not of @samp{environ}). Access via @samp{GetEnv} etc. works
unchanged.
@item The @samp{Environment} variable is now a schema which contains
the environment variables as CStrings. (@@)
@item Empty and case-sensitive environment variables are allowed
within GPC programs even under Dos.
@end itemize

@item Random:

@itemize @minus
@item SeedRandom
@item SeedRandomPtr (variable)
@item Randomize is called automatically when necessary (except when
using the BP compatible random number generator in the System unit
(B)).
@end itemize

@item Memory:

@itemize @minus
@item ReAlloc; previous ReAlloc function (libc) renamed to CReAlloc (@@)
@item ReAllocPtr (variable)
@item ReleaseCount
@item AllocateBigMem, DisposeBigMem, MoveToBigMem, MoveFromBigMem,
MapBigMem for uniform access to big memory blocks for GPC and BP (B)
@end itemize

@item Time:

@itemize @minus
@item Sleep
@item SleepMicroSeconds
@item Alarm
@item GetCPUTime
@item GetMicroSecondTime
@item DayOfWeekName (constant)
@end itemize

@item Misc:

@itemize @minus
@item Include and Exclude for sets (B)
@item IsInfinity
@item IsNotANumber
@item SplitReal
@item ReturnAddress
@item FrameAddress
@item Runtime errors are now printed with their address to help
debugging (using addr2line), and the address is stored in ErrorAddr. (B)
@item RegisterRestoreTerminal
@item UnregisterRestoreTerminal
@item RestoreTerminal
@item ExecuteNoTerminal
@item SetProcessGroup
@item SetTerminalProcessGroup
@item GetTerminalProcessGroup
@item GetTerminalName
@item SetInputSignals
@item GetInputSignals
@item GetShellPath
@item GetPasswordEntryByName
@item GetPasswordEntryByUID
@item GetPasswordEntries
@item StrSignal
@item Kill
@item WaitPID
@item InstallSignalHandler
@item BlockSignal
@item SignalBlocked
@item Constants for the signals
@item UserID
@item GroupID
@item IllReservedAddress, IllPriviledgedInstruction, IllReservedOp
were removed. (@@)
@end itemize

@end itemize

@node News - Units
@section GPC Units

@itemize @bullet

@item CRT:

@itemize @minus
@item Works now under Cygwin and mingw.
@item DJGPP: support for 40 column modes (requires updated PDCurses library)
@item Renamed the the conditional to get an X11 version from XCURSES to X11. (@@)
@item Renamed GetScreenSize to ScreenSize (WinCRT compatibility) (B) (@@)
@item WindowOrg, WindowSize, Cursor, Origin, InactiveTitle,
AutoTracking, WindowTitle, (variables), ScrollTo, TrackCursor
(WinCRT compatibility) (B)
@item SimulateBlockCursor, SimulateBlockCursorOff
@item Curses is not initialized at the beginning of the program, but
rather when the first CRT routine is called. (B)
@item CRTInit to explicitly initialize CRT and also set some
defaults (PCCharSet and update level) to more natural (and less BP
compatible) values.
@item CRTSetTerminal
@item CRTAutoInitProc (variable)
@item CRTNotInitialized
@item CRTSavePreviousScreen
@item CRTSavePreviousScreenWorks
@item Any of the parameters to GetWindow may now be null.
@item Support for panels (overlapping windows): GetActivePanel,
PanelNew, PanelDelete, PanelBindToBackground,
PanelIsBoundToBackground, PanelActivate, PanelHide, PanelShow,
PanelHidden, PanelTop, PanelBottom, PanelMoveAbove, PanelMoveBelow,
PanelAbove, PanelBelow, IgnoreCursor
@item Replaced the variables PCCharSet and UseControlChars by
routines SetPCCharSet, GetPCCharSet, SetControlChars,
GetControlChars. (@@)
@item SetScreenSize
@item SetMonochrome
@item Renamed IsMonoMode to IsMonochrome. (@@)
@item On ncurses platforms, changing the screen is now done through
a shell command definable in the environment variable
@samp{RESIZETERM} (which defaults to @samp{resize},
@samp{SVGATextMode} and @samp{setfont}). The variables
@samp{crt_setfont_command_80_25}, @samp{crt_setfont_command_80_50},
@samp{crt_setfont_command_40_25} and
@samp{crt_setfont_command_40_50} (Linux only) were removed. (@@)
@item CRTUpdate
@item CRTRedraw
@item SetScroll
@item CRTSetCursesMode
@item RestoreTerminalClearCRT
@item CtrlKey
@item AltKey
@item constants chCtrlA @dots{} chCtrlZ, kbCtrlA @dots{} kbCtrlZ
@item Catch some signals and return pseudo function keys for them if
CheckBreak is False.
@item React to screen size changes by external events and return a
pseudo function key.
@item 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.
@end itemize

@item RegEx:

@itemize @minus
@item RegExPosFrom
@item CharSet2RegEx
@item Support for converting subexpression or complete matching
references to upper or lower case while replacing them with
@samp{\u7} or @samp{\l7}.
@end itemize

@item GMP:

@itemize @minus
@item mpf_exp
@item mpf_ln
@item mpf_pow
@item mpf_arctan
@item mpf_pi
@item The unit now works with version 3.x of the GMP library, but it
also still works with version 2.x.
@end itemize

@item System:

@itemize @minus
@item SetTextBuf (B)
@item 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)
@item Ofs, Seg, Ptr, CSeg, DSeg, SSeg, SPtr (mostly useless and only
for BP compatibility) (B)
@item A number of variables like SelectorInc (mostly useless and
only for BP compatibility) (B)
@item Renamed the @samp{__BP_INTEGERS__} conditional to
@samp{__BP_TYPE_SIZES__}. (@@)
@end itemize

@item Dos, WinDos:

@itemize @minus
@item GetCBreak
@item SetCBreak
@item GetVerify
@item SetVerify
@item Renamed the @samp{_Borland_16_Bit_} conditional to
@samp{__BP_TYPE_SIZES__}. (@@)
@item Intr, MsDos, only under DJGPP if
@samp{__BP_UNPORTABLE_ROUTINES__} is defined. (B)
@item DosVersion, SetDate, SetTime, only if
@samp{__BP_UNPORTABLE_ROUTINES__} is defined (emulated on
non-DJGPP). (B)
@end itemize

@item RegEx:

@itemize @minus
@item In @samp{RegExType}, the field @samp{Error} is now of type
@samp{PString} rather than @samp{CString}. (@@)
@end itemize

@item Pipe:

@itemize @minus
@item New parameter @samp{Process} to Pipe (@@)
@item WaitPipeProcess
@end itemize

@item PExecute:

@itemize @minus
@item Integrated into the RTS so you don't need a
@samp{uses PExecute} anymore. (@@)
@end itemize

@item GetOpt:

@itemize @minus
@item ResetGetOpt
@item @samp{GetOptErrorFlag} is now True by default. (@@)
@item Integrated into the RTS so you don't need a @samp{uses GetOpt}
anymore. (@@)
@item Renamed the variables and constants used (see gpc.pas under
@samp{Command Line Option Parsing}). (@@)
@item @samp{GetOptLong} can now optionally derive the short options
from the @samp{LongOptions} array.
@end itemize

@item WinCRT:

New unit (identical to CRT) (B)

@item HeapMon:

New unit for (simple) heap checking.

@item Trap:

New unit for runtime error trapping.

@item MD5:

New unit for computing MD5 message digests.

@item FileUtils:

New unit with some file and directory utilities.

@item StringUtils:

New unit with some string utilities.

@item GPC-BP:

A @samp{GPC} unit for BP to provide some GPC compatibility to BP
programs and make it easier to gradually convert them to GPC. (G)

@end itemize

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
@example
@uref{ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/libs/}
@end example

@node News - GPC Manual
@section GPC Manual

@itemize @bullet

@item Some very obsolete sections of the manual (e.g., the output of
running the PVS test suite on an Alpha machine in 1995 ;@minus{})
were removed.

@item 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.

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

@item A lot of new material was added to the @samp{Programming} and
@samp{Reference} chapters.

@item 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
@samp{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.

@item 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 @samp{GPC} module which describes the
interface to the Run Time System, is formatted more nicely,
especially in the printed version of the manual.

@item The @samp{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.

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

@item The FAQ, the To-Do list, and the list of new features (this
one :@minus{}) were integrated into the manual.

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

@item 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.

@end itemize

@node News - Demo Programs
@section Demo Programs

@itemize @bullet

@item 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 @file{<prefix>/doc/gpc/demos/}.

@item 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
@file{<prefix>/doc/gpc/docdemos/}.

@end itemize

@node News - Test Suite
@section 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.

@itemize @bullet

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

@item 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.

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

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

@item The Test Suite now produces a summary output by default. To
get the long output format as before, run
@samp{make pascal.check-long} (or @samp{check-pascal-long}) now.

@item The GPC Manual as well as the @file{test/README} file in
source distributions (or @samp{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.
@ifclear NEWSONLY
See @ref{Testing}, and see @ref{Reporting Bugs}.
@end ifclear
@end itemize

@node Legend
@section Legend

@multitable {xxxxxx}    {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
@item  @samp{(@@)}: @tab minor backward-incompatibility
@item  @samp{(B)}:  @tab BP compatibility
@item  @samp{(D)}:  @tab Delphi compatibility
@item  @samp{(G)}:  @tab GPC compatibility :@minus{})
@end multitable

Have fun,

The GNU Pascal Development Team
