Mail Archives: djgpp-announce/1999/02/02/14:24:27
This is the announcement of
GNU Pascal, beta version gpc-19990118
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 (gcc-2.8.1 and egcs-1.1.1)
i386-linux-glibc2 (egcs-1.1.1)
alpha-unknown-linux-gnu
alphaev56-dec-osf4.0d
mips-sgi-irix6.2
sparc-sun-solaris2.6
i386-pc-djgppv201 (for MS-DOS)
i386-pc-mingw32 (egcs-1.1.1; for MS-Windows 9x/NT)
i386-pc-emx0.9d (for MS-DOS and OS/2)
This is intended to be the next-to-last beta release before
the release of GPC 2.1. If you have some suggestions for
GPC 2.1 that are not yet listed in the GPC To-Do list at
http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html,
please contact us at the GPC mailing list <gpc AT hut DOT fi> without
delay.
About GNU Pascal
================
The GNU Pascal Compiler (GPC) is part of the GNU compiler
family, GNU CC or GCC. It combines a Pascal front-end with the
proven GNU C back-end for code generation and optimization.
Unlike utilities such as p2c, this is a true compiler, not just
a converter.
This version of GPC corresponds to GCC version 2.8.1 or EGCS 1.1.1.
The purpose of the GNU Pascal project is to produce a Pascal
compiler which:
1) combines the clarity of Pascal with powerful tools suitable
for real-life programming,
2) 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)
3) supports other Pascal standards (UCSD Pascal, Borland Pascal,
Pascal-SC) in so far as this serves the goal of clarity and
usability,
4) can generate code for and run on any computer for which the
GNU C compiler can generate code and run on.
The current beta release gpc-19990118 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/ .
Changes since the previous beta release
=======================================
Units
-----
The main focus in this GPC release is the inclusion of many standard
units. Besides a complete set of BP compatibility units -- except
the Graph unit (which is currently distributed separately due to its
license) and the OOP stuff --, there are some units to make C
functionality available for GPC and some new units.
BP compatibility units:
- CRT: Curses based text screen handling. Compatible to BP's unit,
even in a lot of minor details like the values of function key
codes. Includes some routines for compatibility with TP5's `Win'
unit as well as BP's `WinCrt' and Turbo Power's `TPCrt' units,
and some extensions.
- Dos: Portable implementation of those routines from BP's unit that
are useful to most programs. Those routines that are only meant
for access to Dos internals and cannot be implemented in a portable
way, have intentionally been left out.
- Overlay: Dummy replacement for BP's unit, since GPC doesn't need
overlays.
- Ports: Access routines for the hardware ports on the x86, as a
partial replacement for BP's `Port' and `PortW' pseudo arrays.
- Printer: Implementation of BP's interface for Dos (using printer
devices) and Unix systems (using printer utilities). Might need
porting to mingw32 to use its native printing abilities.
- Strings: Almost empty since most of BP's CString routines have
been included into GPC's RTS (available by using the `GPC' unit).
- System: Portable implementations for BP's more exotic routines
which are not built into GPC's RTS (ExitProc, Lo, Hi, Swap,
GetDir, HeapError, MemAvail, MaxAvail), and on special request (by
setting some defines), also BP compatible integer type sizes and a
100% BP compatible random number generator.
- Turbo3: Compatibility unit for BP's TP3 compatibility unit. ;-)
- WinDos: Portable implementation of BP's unit, see the comments
for the Dos unit.
Other units:
- DosUnix: A unit, intented to be growing when necessary, to
overcome some differences between Dos and Unix systems. Currently
features translation of bash style input/output redirections
(`foo 2>&1') into `redir' calls for DJGPP (`redir -eo foo') and a
way to read files with Dos CR/LF pairs on any system.
- GetOpt: Comfortable command line option parsing.
- GMP: Interface to the GNU Multiprecision Library to handle
integer, rational and real numbers of unlimited size/precision.
- GPCUtil: Some utility routines by The Chief, including
implementations of some routines from Turbo Power's units for BP.
- Internal: Unit which contains declarations for internal RTS
routines that are not declared in the `GPC' unit. Only meant for
low-level access by people who know what they're doing.
- PExecute: Executing processes. Overcomes some of the differences
between Dos and Unix systems.
- Pipe: Start a child process and write to/read from its
Input/Output/StdErr via pipes. Emulated transparently under Dos as
far as possible.
- RegEx: Matching and replacing text with regular expressions.
Some of the units come with demo programs to show their usage that
are installed in <prefix>/doc/gpc/demos/ .
A few of the units (in particular: CRT, GMP and RegEx) require C
libraries. The sources of the libraries, sometimes with small
patches when necessary, and binaries for i586-pc-linux-gnulibc1,
i386-pc-go32 and sparc-sun-solaris2 are available from
ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/libs/ .
Compiler features
-----------------
The new compiler features have concentrated on making it easier to
write and use the units. The AutoMake mechanism is now much more
reliable than it was, doesn't recompile units unnecessarily any
more, and does not require repeating the options, i.e. instead of
writing `--foo --bar --baz --automake="--foo --baz --baz"' one can
now simply write `--foo --bar --baz --automake'.
The following directives, related to units, are now understood:
- --unit-path -- search path(s) (can be used multiple times) for
units used by a program.
- --object-path -- search paths(s) for object, assembler, C, or
other external files used by a program. Defaults to the unit
path(s).
- --unit-destination-path -- the destination path for units compiled
by AutoMake.
- --object-destination-path -- the destination path for C, assembler
or other external files compiled by AutoMake. Defaults to the
unit destination path.
- --executable-path -- the destination path for executables compiled.
- --uses=foo(bar.pas),bar,baz(../baz.pas) -- automatically using
units in a program, optionally specifying a source file name.
Useful e.g. for maximum BP compatibility to use units like `GPC'
and `System' without changing the source code.
The unit and object paths default to the directory where the
standard units are installed, i.e.
<prefix>/lib/gcc-lib/<target>/<version>/units/, so these units are
found automatically.
Libraries can now be used by a `{$L foo}' compiler directive, just
like simple object files, and this directive also works in units
(used a lot in the standard units).
The compiler pre-defines `__BORLAND_PASCAL__' etc. depending on the
dialect option used or `__GNU_PASCAL__' by default if no dialect
option was given (besides `__GPC__' as before, regardless of the
dialect used). `__OS_DOS__' is pre-defined on Dos-like systems.
Other declarations
------------------
Some of the following declarations are built into the compiler,
others are declared in the `GPC' unit.
- Memory:
Addr (B)
Assigned (B)
CGetMem
CFreeMem
ConvertFromLittleEndian
ConvertFromBigEndian
ConvertToLittleEndian
ConvertToBigEndian
FreeMemPtr
GetMemPtr
Null (D?)
ReAlloc
ReverseBytes
- Files and I/O:
BlockReadLittleEndian
BlockReadBigEndian
BlockWriteLittleEndian
BlockWriteBigEndian
DataReady
FileName
New fields Force, AccessTime, ModificationTime and ChangeTime
in the BindingType record.
Text files now use internal buffering to speed up reading and
writing -- even on operating systems that do good buffering
themselves. (B ;-)
- Strings:
Copy with only 2 arguments
SetString (D)
StringOfChar (D)
A number of new CString routines, including almost all (that
weren't already there) of BP's `Strings' unit. (B)
The string comparison operators (`=', `>', etc.) now work like
in BP by default, and as described in the ISO-10206 Standard in
`--extended-pascal' mode or with the `--no-exact-compare-strings'
switch. (B)
- Date/Time:
GetUnixTime
IsLeapYear
TimeStampToUnixTime
UnixTimeToTimeStamp
`(B)': BP compatibility
`(D)': Delphi compatibility
Have fun,
The GNU Pascal development team
- Raw text -