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
On Mon, 31 Aug 1998, Peter Gerwinski wrote:
Hi Folks,
A new Beta version of GNU Pascal is now available: gpc-19980830.
the new version is not working on IRIX 6.2. Compilation is aborted like:
stage2/xgcc -Bstage2/ -DIN_GCC -DGPC -O2 -o ../gpc1 \ `cat stamp-gbe` ../c-aux-info.o ../c-iterate.o ../c-pragma.o ../choose-temp.o ../pexecute.o mkstemp.o gpc-common.o gpc-convert.o gpc-decl.o gpc-lang.o gpc-lex.o gpc-typeck.o module.o gpi-hash.o circle-buf.o objects.o parse.o rts.o types.o util.o setop.o version.o `if [ xobstack.o != x ]; then echo ../obstack.o; else true; fi` `case "stage2/xgcc -Bstage2/" in "cc -32") if [ x != x ]; then echo ../; else true; fi ;; esac` `if [ x != x ]; then echo ../; else true; fi`
ld: ERROR 33: Unresolved text symbol "version_flag" -- 1st referenced by module.o. ld: INFO 60: Output file removed because of error. make[1]: *** [../gpc1] Error 1 make[1]: Leaving directory `/usr/local/src/gcc-2.8.1/p' make: *** [gpc1] Error 2
Where is the definition for "version_flag"?
Cheers,
miklos
Miklos Cserzo wrote:
the new version is not working on IRIX 6.2. Compilation is aborted like: [...] ld: ERROR 33: Unresolved text symbol "version_flag" -- 1st referenced by module.o. [...]
Ah - sorry, the source distribution of gpc-19980830 contains an errorneous `diffs/gcc-2.8.1.diff'.
I am uploading a fixed one to ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/ .
Greetings,
Peter
On Fri, 4 Sep 1998, Peter Gerwinski wrote
Ah - sorry, the source distribution of gpc-19980830 contains an errorneous `diffs/gcc-2.8.1.diff'.
I am uploading a fixed one to ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/ .
I tryed to compile the gpc-19980830 using gcc-2.8.1.diff. When I run patch -s -p1 < gcc-2.8.1.diff, it shwos:
capricornus:[/usr/local/lib/gpc/gpc]> patch -s -p1 < p/patches/gcc-2.8.1.diff The text leading up to this was: -------------------------- |Changes for GCC version 2.8.1 for GNU Pascal 2.1 | |Before applying these diffs, go to the directory gcc-2.8.1 |and use the command | | patch -p1 | |feeding it the following diffs as input. | |*** gcc-2.8.1/convert.c.orig Thu Aug 7 12:44:17 1997 |--- gcc-2.8.1/convert.c Fri Sep 4 03:23:19 1998 -------------------------- File to patch:
######################################################################################
If I type Enter, it shows 'Skip this patch? [y]' If I type gcc-2.8.1/convert.c.orig or gcc-2.8.1/convert.c, it swhows 'No such file or directory'. What can I do? I searched the file convert.c.orig, expr.c.orig, ... and I didn't find it in the source code. Do I need to get this files? Why I can't run the patch?
Ricardo Kulzer rkulzer@lacesm.ufsm.br CRSPE - INPE/UFSM
Ricardo Luis Kulzer wrote:
run patch -s -p1 < gcc-2.8.1.diff, it shwos:
capricornus:[/usr/local/lib/gpc/gpc]> patch -s -p1 <
^^^^^^^^^^^^^^^^^^^^^^ This must be the directory where your gcc-2.8.1 source resides. Is it? If not, please move your `p' subdirectory from `gpc' to `gcc-2.8.1' and run `./configure' from there. Then, the patch will be applied automatically.
What can I do? I searched the file convert.c.orig, expr.c.orig,
... and I didn't find it in the source code.
Nope; the file to be patched is `convert.c'. Then, a file `convert.c.orig' (containing the original contents of `convert.c') will be produced.
Hope this helps,
Peter