Message-ID: <19980831105936.F19228@esmeralda.gerwinski.de>
Date: Mon, 31 Aug 1998 10:59:36 +0200
From: Peter Gerwinski <peter@gerwinski.de>
To: gpc@hut.fi
Subject: GPC Beta release: gpc-19980830

Hello everybody!

A new Beta version of GNU Pascal is now available:  gpc-19980830.


News 
====

Apart from many bug fixes, we have significantly improved GPC's
compatibility to Borland Pascal.  Things like Extended Pascal's
schema types are now more stable, and many functions such as
conversion functions between Pascal and C strings are now built
in.  In particular:

- A unit `gpc.pas' is now included which contains declarations
  of almost all the routines in the run time system.  Many of
  them, including all that are required by the standard, are
  available without using this unit, but some new extensions,
  in particular most of the new string, CString and file name
  routines listed below, are only available when this unit is
  used.  (It is planned to let GPC automatically use this unit
  in a later version, and then more declarations will go there
  that are currently built into the compiler.)

- BP compatible runtime I/O error handling that is
  enabled/disabled by the compiler options {$I-} and {$I+}.
  In "disabled" mode, I/O errors don't cause runtime errors, but
  can be checked for by the program with the `IOResult' function.

- Error messsages of the run time system are now output in the
  form: "a.out: [internal error:] unknown code in `Write'
  (#904)" which is closer to the GNU coding standards than the
  previous format was.

- A symbol `__GPC_RELEASE__' is predefined, containing the
  release date of the GPC version in the format YYYYMMDD.  This
  can be used in units that require certain features of the
  compiler to make sure they are now compiled with a too old
  compiler.  Such a test might look like the following:

  {$if __GPC_RELEASE__ < 19980830}
  {$error This unit requires GPC release 19980830 or newer}
  {$endif}

- New/GetMem/Dispose/FreeMem can now be mixed freely with malloc()/free(),
  to ease interfacing GPC code to C routines, and with Mark/Release.
  (The only thing that does not work is free()ing a New/GetMem'ed block
  between a Mark and the corresponsing Release, something which is not
  likely to happen unintentionally.)

- New compiler options:

  --autolink (link units as used, but don't recompile them)

  When several --automake="foo", --autobuild="bar" and
  --autolink="baz" options are given, the "highest" one is
  valid, and the options of all of them are collected.

  --no-automake, --no-autobuild, --no-autolink (each of them
    disables all of --autolink, --automake and --autobuild)

  --gnu-pascal (disables any previously selected dialect options)

  --uses="foo" (automatically use a unit)

  --longest{int,real}-field-width (specify the field width in Write[ln]
    of long integer and real types)

- String routines:

  UpCase (B)
  LoCase
  UpCaseString
  LoCaseString
  UpCaseStr
  LoCaseStr

- CString routines:

  StrLen (B)
  StrEnd (B)
  StrScan (B)
  StrRScan (B)
  StrDup
  StrCmp
  StrCaseCmp
  StrPCopy (B)
  NewCString
  CString2String
  String2CString

- File and I/O routines and declarations:

  IOResult (B)
  InOutRes (B)
  Erase (B)
  Rename (B)
  ChDir (B)
  MkDir (B)
  RmDir (B)
  FileMode (B)
  Flush (B)
  FilePos (B)
  FileSize (B)
  Truncate (B)
  Append (B)
  GPC_StatFS

- File name routines and declarations:

  PathSeparator
  DirSeparator
  DirSeparators
  ExtSeparator
  DirSelf
  DirParent
  NullDevice
  TTYDevice
  ConsoleDevice
  GetCurrentDirectory
  GetTempDirectory
  GetTempFileName
  GetTempFileName_CString
  Slash2OSDirSeparator
  OSDirSeparator2Slash
  Slash2OSDirSeparator_CString
  OSDirSeparator2Slash_CString
  FileExists
  DirectoryExists
  FSearch (B)
  FSearch_Executable
  Expand_Environment
  FExpand (B)
  FSplit (B)
  DirFromPath
  NameFromPath
  ExtFromPath
  OpenDir
  ReadDir
  CloseDir

- Other routines and declarations:

  ExitCode (B)
  ErrorAddr (B)
  RunError (B)
  SizeType
  PtrDiffType
  High (B)
  Low (B)
  Random (B)
  Randomize (B)
  Pi (B)
  DayOfWeek
  new fields DayOfWeek, MicroSecond in the TimeStamp record

Items marked "(B)" are BP compatible routines/declarations.

For a more detailed list of fixed bugs and new features, see the
GPC TODO list, available online at

    http://fjf.gnu.de/gpc-todo_toc.html
    
or as Texinfo source at

    http://fjf.gnu.de/gpc-todo.texi.gz .

This version of GPC has been tested with and is expected to work
on Linux on the Pentium and the Alpha platform, but there are
known problems with packed arrays and "long" data types on
64-bit machines like the Alpha.

The GNU Pascal development team welcomes the new members
Nick Burrett and Matthias Klose.


Where to get it
===============

The source is available from

    ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/gpc-19980830.tar.gz .
    
Binaries for DOS (DJGPP), and Linux (ELF) will follow as soon as
possible and will be announced separately.


Acknowledgement
===============

I still have lost overview, but the GNU Pascal development team
thanks everybody who helped us by contributing useful ideas and
reporting bugs.  Thanks to all of you!


Greetings,

    The GNU Pascal Development Team

    Peter, Frank, Matthias, Jan-Jaap, and Nick
