The detailed GNU Pascal Changes List.
This is the list of fixed bugs and implemented features for the
GNU Pascal Compiler, version 2.1.
Information about GPC as well as GPC itself for download can be
found on the GPC home page.
This list is part of GNU Pascal.
Copyright (C) 1997-2002 Free Software Foundation, Inc.
Node:Fixed Bugs,
Next:Implemented Features
Problems that have been solved
This section lists the bugs fixed since 1st Oct 1997, together with
the date (YYYYMMDD) on which they were fixed.
- 20020425: packed array types declared in units do not behave correctly (martin3.pas)
- 20020424: error when declaring a forward pointer to an overwritten type of name
Word (carel2*.pas)
- 20020423: runtime error on
EOLn when text file does not end in newline (emil20.pas)
- 20020423: error in debug entries generated for objects <8F990E3D9A6FD1118F3B0000F81EA1D84985D7@exchsa2.dsto.defence.gov.au>
- 20020410: HP/UX:
unrecognizable insn error in connection with conformant or const string parameters) <199809280741.JAA17719@rug105.cs.rug.nl> (sietse1.pas), <Pine.SOL.4.10.9908051751550.23095-100000@niflheim.rutgers.edu>, <396C3531.3A327722@cs.rug.nl>
- 20020410: a schema which contains another schema whose discriminant depends on the first schema's disciminant, while no part of the inner schema depends on its discriminant, is not initialized properly (emil19*.pas)
- 20020410: differences of unsigned integer constants are treated as unsigned, even if their value is negative (emil18.pas)
- 20020409:
ParamStr is not accepted as the first argument of ReadStr and Val (maur10a.pas)
- 20020409: GPC accepts function results of string type as well as
Re and Im as "lvalues" (fjf657*.pas, fjf658*.pas)
- 20020409: string constants are not accepted as actual parameters for conformant arrays of
Char (fjf655*.pas)
- 20020409: building GPC with
-pipe fails <200204081912.16296.georges@its.caltech.edu>
- 20020407: using a unit of the same name as one of the RTS's units (e.g.,
Files) does not work (carel1.pas)
- 20020401:
file of record end fails at runtime (emil1[56].pas)
- 20020325: GPC crashes on invalid comparisons between arrays and string constants (fjf652.pas)
- 20020323:
Val reads only one digit in some circumstances (fjf651b.pas)
- 20020323:
ReadStr and Val evaluate their first argument twice (fjf651[ab].pas)
- 20020322: assigning/passing fixed strings (i.e.,
array ... of Char) to CStrings doesn't work correctly (emil17.pas, fjf390[a-d].pas)
- 20020322: GPC crashes on
Page without parameters (mike1.pas)
- 20020318: missing type checking in
>< (fjf649a.pas); >< can't be overloaded (fjf649b.pas)
- 20020314: GPC crashes on
packed array [...] of record end; (emil14.pas)
- 20020314: GPC accepts
[packed] array ... of Void (emil13[a-c].pas) and [packed] file [...] of Void (fjf648[a-d].pas)
- 20020314: GPC segfaults on
set of Void (emil12.pas)
- 20020308: calling a virtual method
Size doesn't work (maur9.pas)
- 20020226:
Re, Im and Arg do not accept integer and real arguments (fjf641*.pas)
- 20020224: arrays whose domain is an enum type (not a subrange) behave slightly wrong with initializers containing schemata (fjf638.pas)
- 20020224:
inline and asmname don't work together when compiling without optimization (maur3.pas)
- 20020224: identifiers declared in a unit that have the same name as some object method are not visible (russell2.pas, fjf278.pas, fjf571.pas)
- 20020223: some redeclaration errors are not strict enough (fjf565*.pas)
- 20020222: the warnings about unused variables don't work for global variables (fjf632[ab].pas)
- 20020222: the VMT of object variables is not initialized until a constructor is called (fjf631.pas)
- 20020214: gcc-2.95.x (mostly): spurious warnings (with
-Wall and -O) about uninitialized variables near case statements
- 20020214:
Break and Continue don't work correctly in a for ... in [] loop (i.e., iterating over a constant empty set) (forloop.pas)
- 20020214:
Low and High yield wrong results when applied to set constructors (fjf626.pas)
- 20020211: GPC might crash in the presence of corrupt GPI files
- 20020211: automake doesn't recompile programs/modules/units that depend indirectly on interfaces that were changed
- 20020211: GPC might crash or produce wrong results when mismatching GPI files are used together, e.g. due to limitations of the automake mechanism (after fixing this bug, it aborts with a
checksum mismatch error message in this case)
- 20020210: enumeration types do not always properly survive transport through two interfaces that depend on each other (miguel2.pas) or two interfaces of the same module (daj2.pas)
- 20020209: constant declarations whose values contain RTS calls can give wrong results or lead to compiler crashes (emil11*.pas)
- 20020208:
SizeOf does not work on uninitialized non-polymorphic objects (chief32.pas)
- 20020208: the operators
pow and ** cannot be redefined (maur7.pas)
- 20020208: schema components of array fields of schemata are not initialized correctly <3A93D0C0.8F5A8308@zkm.de> (sven19[ab].pas)
- 20020208: methods returning records, arrays or pointers (chief39*.pas) and functions without parameters returning arrays or pointers (fjf619*.pas, fjf299.pas) don't work correctly
- 20020207: initializers of arrays of length 1 don't work (fjf320*.pas, fjf617.pas)
- 20020207: declaring several
absolute variables at once doesn't work correctly (fjf616.pas)
- 20020205:
-pedantic wrongly warns about standard routines such as WriteLn (emil10.pas)
- 20020203: GPC sometimes crashes with
-g <Pine.SGI.4.10.9903231101500.6691-100000@pugh.bip.bham.ac.uk>
- 20020202: don't allow assignments to and other modifications of schema discriminants (e.g., string's
Capacity) (fjf615*.pas)
- 20020201: import and export of huge interfaces is very slow (quadratic time behaviour)
- 20020201: bug with const parameters and derived object types (chief42.pas)
- 20020128:
const object parameters don't accept actual parameters of derived object type (chief42.pas)
- 20020125: complex
ArcTan yields inaccurate results in some cases (emil9.pas)
- 20020124:
protected and untyped files don't work in procedural types (fjf601[a-d].pas)
- 20020123: sizes of schema types containing variant records are computed wrong (fjf600.pas)
- 20020122: too weak type checking in assignment and initialization of procedural variables (fjf598*.pas)
- 20020122: pointer types pointing to themselves don't work (fjf244.pas)
- 20020117: complex
pow yields wrong results with a negative exponent (emil8.pas)
- 20020116: packed arrays of types of size 24, 40, 48, ... bits are not really packed (fjf582.pas)
- 20020115: inlining of functions which locally declare a subrange type etc. can cause GPC to crash, especially when debug info is generated (emil7.pas)
- 20020114: assignments to packed array fields whose RHS involves the field itself don't work correctly (emil6.pas)
- 20020112: complex
Abs overflows too early (maur8.pas)
- 20020111: give an error rather than a warning when using
Return without a value in a function <3BEC86B3.85264A58@alcatel.be>
- 20020108:
MinReal, MaxReal and EpsReal don't work (emil4.pas)
- 20020108: complex
SqRt aborts with the false error argument to `SqRt' is < 0 on some arguments close to the real line (emil3.pas)
- 20011229: the
DST field of TimeStamp contains wrong values (fjf580.pas)
- 20011229: the test scripts don't work on systems that use
a.exe instead of a.out, e.g. Cygwin
- 20011229: Cygwin:
LineBreak should not contain a CR
- 20011227: Intl: automatically link
-lintl when necessary
- 20011227:
Get does not behave lazy, unlike Read (emil2.pas)
- 20011214: GPC accepts string capacities <= 0 (fjf579[a-c].pas)
- 20011214: fatal range overflows in set constructors (couper8.pas, couper10.pas) <2C4F3FEF.20000809173117.FOO-13A6.frank@g-n-u.de>
- 20011214: missing type checking in set constructors (fjf57[67][a-l].pas)
- 20011213: packed records of (e.g.) 16 bit wide subranges are not handled correctly is assignments (emil1.pas)
- 20011202: packed records break when imported from units/module interfaces (martin2[ab].pas)
- 20011201: spurious warning when setting a function return value via
Str (fjf575.pas)
- 20011201: overflows in real constants are not detected at compile time (fjf573.pas)
- 20011130: real numbers that are very slightly larger than a power of 10 are output incorrectly with
Write on some platforms (e.g., IA32) (ian7.pas)
- 20011129:
mod yields a wrong result when the result should be 0 and the right operand is a signed type (fjf572a.pas)
- 20011123: some comparisons on packed subranges don't work correctly (couper1.pas)
- 20011122: two-unit bug with objects (adam2.pas) <Pine.GSO.4.30.0108011501180.14499-100000@math>
- 20011121:
protected parameters are not always respected; type of must not preserve protectedness; sets constructed with type of give a type mismatch; for ... in a protected set parameter doesn't work; const parameters of real or LongInt type to procedural types don't work; const set parameters don't work; set expressions don't always work as actual parameters (fjf383.pas, fjf447.pas, fjf569[a-w].pas)
- 20011121:
setlimit doesn't work as a compiler directive (fjf215.pas)
- 20011121:
set of Integer (42) doesn't work (fjf215.pas)
- 20011121: GPC crashes on
set of Real (fjf568.pas)
- 20011120: Alpha/OSF:
mips-tfile crashes when the source is read from standard input (fjf519[abe].pas)
- 20011120: don't pass
-x options with --automake (fjf567[ab].pas)
- 20011119: 64 bit machines: reading
MedCard variables doesn't work (readg9.pas)
- 20011119: 64 bit machines: set operations
in, Include, Exclude and some set constructors fail (mirsad[00-12].pas)
- 20011119:
shl should use the longest possible result type when necessary (shl.pas)
- 20011119: Alpha/OSF: compiling C files to be linked fails in
mips-tfile
- 20011115: some more obscure cases of operator precedence and associativity are wrong (fjf566[a-m].pas)
- 20011114: infinite compiler recursion when a unit uses itself (sven18[a-c].pas) <3A2275D8.F2DEA31A@zkm.de>
- 20011114: fixed string comparisons are wrong (takashi1.pas)
- 20011114: GPC doesn't handle sets with negative lower bounds correctly (fjf563*.pas, couper11.pas, wnj.pas)
- 20011111: enumeration types declared within a set or record type or variable or constant declaration or the case selector of a record within a unit are not visible in the main program (fjf211*.pas, fjf239[ab].pas)
- 20011108: the test suite scripts don't work with non-GNU versions of
sed and awk
- 20011108: results of set operations are truncated to the left operand's range (especially noticeable when it is a constant set) (drf3[a-c].pas)
- 20011108: GPC should not accept
set of Integer etc. (drf2[ab].pas, couper11.pas)
- 20011108: GPC crashes on
set of Integer (couper11.pas)
- 20011108: functions returning sets don't work (fjf554[a-x].pas, setret.pas, chief41.pas)
- 20011107: too many parameters to
New are not checked (fjf553[bd].pas)
- 20011107:
New of an untyped pointer should not be allowed (fjf553a.pas)
- 20011107: GPC accepts reals as the bounds of subrange types (eike1[ab].pas)
- 20011106: guarantee full evaluation in
{$B+} (fjf552[ab].pas)
- 20011106:
const and protected parameters are accepted as the second argument to Move, MoveLeft and MoveRight (fjf550[a-f].pas)
- 20011106: GPC doesn't allow Booleans and enum types for the 3rd parameter to
FillChar (BP allows this) (fjf549[ab].pas)
- 20011103: type-checking for
+ etc. is not strict enough (fjf277.pas, fjf309.pas, fjf399[ab].pas, fjf488xk.pas, fjf547[a-o].pas)
- 20011103: for
mod with a negative operand, behave standard-conformant by default, but non-standard in --borland-pascal and similar modes (fjf424[ac-e].pas)
- 20011026: GPC searches compiled units first in the current directory rather than the
unit-path etc.
- 20011025:
UpCase and LoCase don't accept character constants (fjf544[ab].pas)
- 20011025: MIPS: writing reals doesn't work (gcc bug with varargs) <Pine.SGI.4.10.9903240952350.12280-300000@pugh.bip.bham.ac.uk>, <39DDC168.7CFFE872@larc.nasa.gov>
- 20011024: the second parameter of
Insert and the first parameter of Delete must not be constant (fjf268[a-d].pas, fjf473[ab].pas)
- 20011024: non-default integer types like
MedInt (and therefore SizeType under DJGPP) are not accepted as the 4th parameter to BlockRead and BlockWrite (chief33.pas, fjf252.pas, fjf543[a-f].pas)
- 20011024:
Concat with only one argument does not work (fjf542.pas)
- 20011024:
Trunc, Round and Polar don't accept integer parameters where reals are expected (fjf229.pas, fjf303.pas, fjf541[ab].pas)
- 20011023:
{$local} and {$ifopt} don't work with dialect options (e.g., gnu-pascal) (fjf535[a-d].pas, fjf536[a-k].pas)
- 20011021: GPC allows multiple declarations of the same variable if they are of the same type (dave1.pas, fjf316.pas, fjf453.pas)
- 20011021: const real parameters don't work (fjf227[ab].pas, fjf228[a-c].pas, fjf319.pas, fjf391[ab].pas, fjf530.pas)
- 20011017: declaration blocks in the wrong order are not detected in
--classic-pascal (chuck1[a-c].pas)
- 20011015: wrong type mismatches with
const and protected parameters used as array indexes, as case selectors, in writing to typed files, in Include, Exclude, in, in set assignments, or in file seeks (adam3[a-v].pas, chief31.pas)
- 20011014: files and discriminants of schemata inside arrays whose index is an enumeration type are not initialized correctly (theo1[ab].pas)
- 20011014: GPC wrongly allows
<, >, <= and >= comparison of char, enum and boolean values with integers (fjf235[a-d].pas, fjf392.pas, fjf463.pas, fjf503.pas, fjf529.pas)
- 20011014: missing constant range-checking in the upper bound of
for loops (chuck2.pas)
- 20010818:
BlockRead and BlockWrite can behave wrong when the actual third parameter is larger than Integer (especially on big-endian systems) (fjf526a.pas)
- 20010818: on systems where
LongReal has the same size as Real (e.g., AIX), when writing them while field-widths are given, the width for Real is used instead of that for LongReal
- 20010818: in
for loops with pointer counters, the pointer is always incremented/decremented by 1 instead of the correct type size (fjf525[ad].pas)
- 20010816: confusing error message when declaring a value parameter of file type (fjf521*.pas)
- 20010808: AIX etc.: StrSignal: segfaults when given an invalid signal number (fjf522.pas)
- 20010806: GetPasswordEntries: needs too much memory on systems with many users
- 20010801: CRT (X11 on AIX etc.): segfaults when program is interrupted by SIGINT
- 20010720: MD5: some bugs with macros, covered by the following bug on some platforms (md5test.pas)
- 20010720: the preprocessor treats
$ as part of identifiers on some platforms (e.g., Linux, DJGPP, ...) (fjf520.pas)
- 20010720: on the other platforms (e.g., AIX),
#$fe does not work at the beginning of a line (dosunixtest.pas)
- 20010713: the GPC configuration and build process fails on systems without GNU
grep
- 20010713:
-x Pascal or --language=Pascal causes gpc: Internal GPC problem: internal option `--amtmpfile' not given (fjf519*.pas)
- 20010707: GPC crashes in the presence of old GPI files <3A2275D8.F2DEA31A@zkm.de>
- 20010704: integer parameters to built-in routines are not always converted to the right type (fjf349.pas)
- 20010703: gcc-2.95: GPC should call
ld when collect2 is not available
- 20010623: initializers of arrays with non-zero lower bounds contained within other structures are wrong (fjf247*.pas)
- 20010619: Sparc: the preprocessor doesn't understand
defined (fjf266.pas,fjf238.pas,ian6.pas) <19990129132623.21658.qmail@euler.stams.strath.ac.uk>
- 20010604:
Delete (s, 3, MaxInt) segfaults (fjf509a.pas)
- 20010603: directory names in the unit path etc. are converted to lower case <156QP6-03q-00@ux.warez.linux.it>
- 20010601: writing a typed file of a structured type by assignments to the file buffer and
Put doesn't work correctly (daj23.pas) <74323@tcs01.demon.co.uk>
- 20010529: multiple
--uses options don't work (fjf508b.pas)
- 20010518: FreeBSD:
rts/rts.c does not compile because headers are included in the wrong order <Pine.BSF.4.21.0105160236480.63226-200000@hurricane.math.miami.edu>
- 20010516: file operations cause small memory leaks
- 20010501: some RTS functions that take string parameters don't accept
Char parameters (fjf488*.pas)
- 20010421: when reading from text files, sometimes a spurious space character appears at a newline <000c01c0bb97$2e0c7cc0$b900a8c0@gbtwireless.com>, <003101c0c9a9$773398a0$b900a8c0@gbtwireless.com> (george1.pas)
- 20010421: with
--nested-comments and -Wnested-comments, the preprocessor mistakenly complains about nested comments, e.g., in gpc.pas (nicola3[ab].pas)
- 20010420: GPC sometimes fails to link the runtime library <3A26A0D2.92344330@ujf-grenoble.fr>, <01041920501700.00458@hal>
- 20010419:
Halt does not return the correct status to the calling process (adam1.pas)
- 20010411: file variables aren't treated correctly when cross-building from a 32 bit system to a 64 bit system
- 20010410:
Reset etc. don't accept '' (only '-') for stdin/stdout (fjf484*.pas)
- 20010410:
Reset etc. on untyped files allow two buffer size parameters (fjf483.pas)
- 20010409: writing real numbers very close to 0 causes the program to hang (lrbug2.pas) <000401c0bff6$7d07d820$46261bd4@machine>
- 20010409:
ExecutablePath: the result should be FExpanded
- 20010325: when reading real numbers like
1.03e+02 with ReadLn etc., there is a slight avoidable rounding error (couper12.pas)
- 20010315: Mac OS X:
--dollars-in-identifiers should not be the default
- 20010210: CRT: programs can segfault when interrupted (SIGINT etc.) shortly after startup
- 20010207: StringUtils:
StringReadWord fails if the last word is a single character long (steve1.pas) <01020711035902.13914@klaatu>
- 20010205: removed the
LongReal2Str work-around for the varargs problem on the MIPS
- 20010121: Trap: nested traps don't work (trap2test.pas)
- 20010120: false warning if a function result is an array and is assigned field by field
- 20010120: don't require extended syntax for
SetLength
- 20010112: GPC crashes with invalid forward type declarations (nicola[12].pas)
- 20001223: point to the GPC mailing list instead of the GCC bug reporting facilities in compiler error messages
- 20001223: don't call procedures functions in error messages etc. <200007230522.BAA05497@strawberry.ncifcrf.gov>
- 20001206: DJGPP (and possibly other platforms): FileNameMatch (and related functions): patterns starting with
* or ? should not match file names starting with .
- 20001118: Linux/Alpha: build-problems in rts/rta-va.c <14812.54955.265326.731526@gargle.gargle.HOWL>
- 20001107: bug with two-dimensional schema arrays (rudy1.pas)
- 20001106: System: the return type of
MemAvail and MaxAvail should be Cardinal rather than Integer
- 20001025: FreeBSD:
`T_RESADFLT' undeclared (fixed by removing IllReservedAddress, IllPriviledgedInstruction, IllReservedOp which are not very useful and may not have been supported on any system, anyway)
- 20000902: if reading from files etc. is interrupted by signals, this causes an I/O error
- 20000717: GMP unit: doesn't work with version 3.x of the GMP library
- 20000626: slight errors in debug line number information for assignment or procedure call statements
- 20000606: CRT doesn't work with windows > 255 chars wide or high
- 20000529: the installation does not work without the
install program installed <latimer@phg.mc.vanderbilt.edu>
- 20000521: very hard reproducible bug(s?) (fjf212.pas; fh19980828.3)
- 20000520: fatal signal 6 when trying to write a GPI file into a non-writable directory
- 20000516: Dos: PackTime/UnpackTime give wrong results on big-endian machines
- 20000505:
-I options are forgotten after each include directive (ian4.pas)
- 20000505:
div also works as a real division (kevin14.pas)
- 20000505: the arguments of long real functions are converted to a wrong type <9811112136.AA18086@sunflower.agron.iastate.edu> (robert1[ab].pas)
- 20000505: problem with rewrite on file of packed array of packed record (daj7.pas) <48378@tcs01.demon.co.uk>
- 20000505:
Extending a file previously Reset without an intermediate Close doesn't work correctly (daj13.pas) <48469@tcs01.demon.co.uk>
- 20000503: Sparc: division by reals (fjf237.pas, matt1.pas) or
Round (real_constant) (chaput1.pas) make the compiler crash <199911040915.KAA11168@humulus.daimi.au.dk>
- 20000503: division of complex numbers by reals doesn't work (maur4.pas)
- 20000503: the Pascal main program does not get lineno stabs, so it is hard to debug it with GDB or RHIDE
- 20000503:
Val doesn't recognize hex numbers with $ (chief37.pas)
- 20000421: DosUnix: TranslateRedirections erroneously translates quoted redirections
- 20000420: the compiler segfaults on
--uses=foo,bar (fjf101[ab].pas)
- 20000420:
--executable-file-name doesn't work correctly with file names containing \
- 20000420: DJGPP:
--automake is more buggy than on other systems
- 20000406: the preprocessor only understands C operators in
{$if} directives, not Pascal operators like not, and, or (fjf423.pas)
- 20000324: unit/module initialization and finalization code is executed in the wrong order (fjf185.pas)
- 20000324: IRIX and AIX (and wherever else): unit/module initializers and finalizers are not executed
- 20000323: mingw: environment variables are not accessible
- 20000319: ignore text after
$else and $endif, but warn if --pedantic was given (fjf412[ab].pas)
- 20000319: character constants of the form #42 are not handled correctly in complicated macro usage (fjf205.pas)
- 20000308:
attribute (const) doesn't work
- 20000226: during GPC build, the info files should be created in the source rather than the build directory, because they're included in source distributions
- 20000221: global goto bug (goto4.pas, demos/parserdemo.pas) <3832137D.21C612FD@ujf-grenoble.fr>, <199911040324.WAA19382@kaylor.ncifcrf.gov>
- 20000213: processing of initialized arrays takes quadratic time
- 20000206: superfluous warning
cast increases required alignment of target type (tmp) (fjf398.pas)
- 20000202:
Close should not be predefined in --extended-pascal <199912112311.SAA25109@mail.bcpl.net> (fjf393.pas)
- 20000202:
case in the main program doesn't work correctly (e.g. pretty.pas) (tmp)
- 20000202: insufficient type checking with subranges (fjf305.pas)
- 20000202: gpc-lex must not seek back (fjf311.pas;
-pipe doesn't work correctly)
- 20000202: Big-endian machines: some set operations don't work correctly (fjf329[ab].pas)
- 20000202: gpc1 crashes when initializing a string with
ParamStr (1)
- 20000202: for a binary operation with a signed and an unsigned integer operand, use a signed type for the result (fjf325.pas, fjf326.pas)
- 20000201: a few BP compatibility routines in the Dos and WinDos units (e.g.
GetDate) don't accept parameters of type Word if it was redefined using -D__BP_TYPE_SIZES__
- 20000131:
--uses doesn't work in units
- 20000124:
gpc -B. -L. -v should not try to link
- 19991221: reference string parameters to RTS functions break after declaring a procedural variable with a value string parameter (fontana1.pas)
- 19991107: CRT, CRTDemo: improved behaviour in response to screen size changes
- 19990913: Sparc:
downto loops with variables of size 1 bit don't work (fjf374.pas)
- 19990905: GetCPUTime can't measure long CPU times reliably on some systems (e.g. Solaris)
- 19990804: the variable
Environment can be made invalid by PutEnv (e.g. on DJGPP), assignments to it are not allowed (e.g. glibc), and some other problems with environment variables (fjf371.pas)
- 19990802: GPM files are not stored in the unit-destination-path
- 19990725: opened files can't be erased
- 19990720: real constants of the form
0.5E+00 are not interpreted correctly (rick1.pas)
- 19990712: function results of a string type declared in another unit are not correctly converted to CStrings (fjf302.pas)
- 19990623: type error with schemata containing strings (fjf189.pas)
- 19990623: integer shifts should not alter the sign (fjf84[ab].pas, fjf355{,a}.pas)
- 19990622: computed constants that don't fit into a LongestInt don't work (fjf41.pas,fjf88.pas)
- 19990619: routines with const parameters don't work in procedural parameters (chief26.pas)
- 19990618: two-unit bugs (baby2.pas, sam12.pas, maur6.pas)
- 19990618: the construct
^f_oo is misinterpreted as a Borland-style char constant (fjf350.pas)
- 19990618: conformant array bounds of enum types don't work <C1256784.0026BE34.00@synln01.synstar.de> (pd2.pas)
- 19990618: enum variables cannot be used in a
for var in statement <C1256784.0027179B.00@synln01.synstar.de> (pd1.pas)
- 19990609: superfluous warning when
returning a char constant from a function returning a char (fjf249.pas,fjf351.pas)
- 19990601: the Graph and CRT units cannot be used together (requires PDCurses update compiled with -DLIBBCC)
- 19990512: Rewrite/Extend with a filename parameter don't check for the existence of the file (fjf348.pas)
- 19990504: DJGPP:
FExpanding x: and x:\.. can give strange results
- 19990428: IOSelect doesn't work with the X11 version of CRT (fix includes PDCurses patch)
- 19990412: bug with goto and local variables of non-constant size (berend3.pas) <004001be4bc2$24bfc9c0$0321a8c0@bmach.nederware.nl>
- 19990411: EGCS: new errors (tom4.pas); new errors with
-g -O3 (forvars1.pas)
- 19990411: EGCS:
Newing a File pointer doesn't work (chief30.pas)
- 19990410: missing range checking in
#42 char constants (fjf332.pas)
- 19990403: Dos-like systems: Dos: FindFirst/FindNext file name matching should be case-insensitive <3705B550.B1AA360E@ujf-grenoble.fr>
- 19990313: Solaris 2.7 (and perhaps other systems): FExpand doesn't work correctly with an empty directory name
- 19990308: don't turn the lower index of an array slice access to 1 (except for strings in
--extended-pascal) (fjf340[a-d].pas)
- 19990304: BlockRead and BlockWrite don't check if the file is open for reading/writing (fjf339.pas)
- 19990225:
Copy and some other built-in routines don't check the number of arguments (fjf333.pas)
- 19990223: DJGPP (and other systems without sinl() etc. in libm): long real Sin etc. produce linking errors <36D3063C.4D14F73C@cicc.unam.mx> (maur5.pas)
- 19990222:
Null is not accepted as an open or conformant array parameter
- 19990219:
Break and Continue with case statements are handled like in C, not like in BP <368563CE.F7F2D31C@mundivia.es> (fjf287[ab].pas)
- 19990204: pointers to
file don't work (chief28.pas)
- 19990203: the order of objects/libraries in a
{$L} directive is reversed
- 19990203: cardinals are not converted correctly in some expressions (fjf324.pas)
- 19990203:
Length should return integer, not cardinal (fjf323.pas) (tmp)
- 19990202: using undefined strings can cause segfaults at runtime (fjf322.pas)
- 19990202: chars are not accepted as value/const string parameters to
Insert (fjf254.pas)
- 19990202: DJGPP: CRT: ReadKey returns #10, not #13, for the enter key when CheckBreak is True
- 19990201: FreeBSD:
StatFS in the RTS doesn't compile <003001be4b65$1b0b2d50$0321a8c0@bmach.nederware.nl>
- 19990130:
ForceExtension doesn't handle empty wanted extensions or directory names with ExtSeparators in them
- 19990129:
RemoveDirSeparator erroneously removes the root directory slash
- 19990129: CRT with ncurses:
Read[ln] returns endless empty lines after the first line entered
- 19990129: Bind should remove trailing
DirSeparators from the file name (-> FSplit and some other functions don't work always/on all systems)
- 19990128: Big-endian machines: CRT: the declaration of
TWindowXY is wrong
- 19990127: automake and autolink can't use units without source (fh19990124.2)
- 19990127: let ExpandEnvironment, FileNameMatch and HasWildCards (formerly in GPCUtil, now in the RTS) handle
\ quotations (except under Dos systems, of course)
- 19990126: Extend/Append can cause segfaults under more or less strange circumstances
- 19990126: the (non-trimming)
> and <= string operators are mixed up (chief27.pas)
- 19990123: CRT: let CRT_Done be called before runtime errors so the error messages are not overwritten by closing curses
- 19990122: reading from TTYs/pipes doesn't handle #0's correctly (fjf318[ab].pas)
- 19990122: some superfluous warnings in
--borland-pascal mode
- 19990116: the compiler should abort if a C compilation fails (link8.pas)
- 19990116: const parameters of schema type should be passed by reference, not by value (fjf315[ab].pas)
- 19990115: problems treating
string as string(255) in connection with procedural parameters (fjf241.pas)
- 19990115: ignore
--executable-file-name, --executable-path, --unit-destination-path etc. when -S, -c, ... is given
- 19990112: Solaris (and other big-endian machines): writing chars doesn't work (fjf314.pas)
- 19990110: DJGPP: when {$executable-file-name} is given, stubify doesn't get the correct file name, so no .exe is created
- 19990109: linking errors with automake when a unit is not recompiled (fh19971015), <ABcLeYr887@e00827.vno.lt> (marius2[ab].pas)
- 19990109: choose a unique temporary file name for the (former) .gpc files so that concurrent compilations don't conflict
- 19990109: empty .gpc files before usage
- 19990109: automake doesn't handle
uses in implementation part of a unit (fjf200{,c}.pas)
- 19990109:
$L in units doesn't always work without --autobuild (link1[a-c].pas, link5[ab].pas)
- 19990106: when compiling without automake and a needed unit is not found, compilation should abort immediately
- 19990102:
$L at the beginning of a source file makes the compiler crash (link6.pas)
- 19981230: an integer subrange type is destroyed when a subrange of another type of the same size is being used as an array index (ross1.pas)
- 19981230: arguments to
Dispose are evaluated twice <36730596.81CC880C@mundivia.es> (miguel1.pas)
- 19981230: the result of
Copy can't be passed to Val (fjf306.pas) (tmp)
- 19981228: fatal signal 6 when trying to write a GPI file into a non-writable directory
- 19981227: autobuild doesn't recompile C files if the object file exists already
- 19981227: passing a CString result of a function with parameters to a string parameters works, although it shouldn't, at least not without conversion (fjf242.pas)
- 19981227: procedural variables should not be dereferenced when passed as an untyped parameter (fjf261.pas)
- 19981227: integers can be passed for string parameters (fjf253.pas)
- 19981227: for loops with counters of type subranges of char don't work correctly (chars2.pas) (tmp)
- 19981220: missing type checking in
absolute (fjf300.pas)
- 19981219: don't pass Pascal specific options (e.g.
--automake) to gcc1, but do pass the other ones (fjf203.pas)
- 19981217:
Polar doesn't accept integer constants (fjf303.pas)
- 19981212: DJGPP: fflush() clobbers the file position which causes some problems with GPC's file handling
- 19981211: procedural variables are always passed by value <ABcLeYr887@e00827.vno.lt> (marius1.pas)
- 19981208: the preprocessor gets confused by two Pascal comments in sequence in an unusual situation <199812081112.LAA25879@stams.strath.ac.uk> (ian2.pas)
- 19981207: set addition doesn't work correctly (ian1.pas)
- 19981207: bug in set addition (fjf262.pas)
- 19981207: some set operations don't work with optimization (fjf196.pas)
- 19981207: comparing sets doesn't always work (chris5.pas)
- 19981207: the automake mechanism doesn't always work properly to compile the Pascal parts of the RTS
- 19981206: the result of built-in string functions can be passed as var (fjf298[a-\infty].pas)
- 19981206: bugs on machines with strict alignment requirements (chris4.pas, confarr5.pas, pack{4,5,6,10,11,12}.pas)
- 19981205: truncate strings in
Copy (fjf40b.pas)
- 19981205: CString2String doesn't work correctly with CStrings of length > 4 (fjf295.pas,fjf297[a-c].pas) (tmp)
- 19981202: another instance of the two-unit problem (fjf294[ab].pas) (tmp)
- 19981202: GCC2: typed constants don't work with
-g -O3 (fjf36.pas)
- 19981202: don't allow files or structures containing files to be assigned via
:= or returned from a function (john2[a-d].pas)
- 19981202: only 1 parameter is accepted for C functions with varargs <3.0.6.32.19981110215411.007bb100@vegasnet.net> (ken1.pas)
- 19981130: autobuild should recompile a unit only once, even if it is used from multiple places
- 19981129: some invalid preprocessor directives cause infinite error messages (dollars.pas)
- 19981129: storage class qualifiers don't work with typed constants and initialized variables (fjf245{,a}.pas)
- 19981129: operator declarations with var parameters or const parameters of record type make the compiler crash (fjf232[a-c].pas)
- 19981129: missing type checking with const parameters of record type (fjf231.pas)
- 19981129: cyclic
uses don't work (jesper5.pas)
- 19981129: using a named subrange type as an array index spoils the range (sam11.pas)
- 19981119: enum types with 128 or more elements don't work (sam9.pas)
- 19981118: missing type checking with value string parameters (fjf291.pas)
- 19981118: superfluous warning with constant sets and unsigned variables (fjf290.pas)
- 19981118: missing type checking of method function results against string parameters (fjf289.pas)
- 19981118: gpc segfaults after the declaration of
array [Char] of Boolean (fjf288.pas)
- 19981118: increase every object's alignment to the maximum in order to prevent alignment warnings with child types (fjf286.pas)
- 19981118: schemata in variant records are not initialized correctly in some situations (fjf272.pas)
- 19981118: another Low/High bug (fjf269.pas)
- 19981118: another string parameter bug (cstrpar3.pas)
- 19981118: gpc segfaults on
operator +;
- 19981116: subranges that occur in packed records can't be passed by reference <802566BB.0043115A.00@buffer1.HQ.quantel> (sam8.pas)
- 19981116: val doesn't handle empty strings correctly (fjf292.pas)
- 19981104:
--ignore-function-results doesn't work with string return values (fjf282.pas)
- 19981104: gpc1 segfaults on a strange schema usage (fjf275.pas)
- 19981104: const void parameters don't work (fjf274.pas)
- 19981104: external variables shouldn't be initialized again (fjf273.pas)
- 19981104: missing type checking with High applied to arrays indexed by enumeration types (fjf271.pas)
- 19981104: indexing an
array [False .. True] ... doesn't work (fjf270.pas)
- 19981104: don't initialize schemata and files when using GetMem as a procedure (baby.pas)
- 19981020: string return values of object methods are not initialized (fjf281.pas) (tmp)
- 19981020: severe bug with CString2String in a case statement (fjf279.pas)
- 19980920: pass the correct specs to gcc1 (e.g. -D__i386__ on an IA32) (predef.pas)
- 19980918:
--executable-file-name doesn't work with program names like magic, format, and prefixes of them (magic.pas)
- 19980830: DJGPP: GPC crashes if the DJGPP variable is set incorrectly <ABfsDYraQI@e00827.vno.lt>
- 19980830: DJGPP:
JDIR problem
- 19980830: make the To-Do list, __GPC_RELEASE__ and GPC archive file names y2k safe
- 19980830: check conditions that are always true/false also for Cardinal (fjf225.pas)
- 19980830: superfluous warning with ParamStr(ByteVar) (fjf224.pas)
- 19980830: variables initialized by a function call don't work (fjf210.pas)
- 19980830: the preprocessor can't handle
elif (fjf236.pas)
- 19980826: type checking bug with ^Longint (fjf223.pas)
- 19980822: EGCS: new errors with
-g -O3 (objects.pas, retval.pas, testounit.pas)
- 19980822: CString2String evaluates its argument mutiple times (fjf208.pas)
- 19980822: give an error rather than a warning when passing/assigning incompatible pointer types (fjf201[a-h].pas)
- 19980822: {$executable-file-name} doesn't work without
program foo (results in a.out) (fjf51.pas)
- 19980822: array ranges are not checked in schemata (schema4.pas)
- 19980816: file buffers of files open for writing can't be read from (fjf220.pas) (tmp)
- 19980802: extend/append should only work for text files in
--borland-pascal (fjf202.pas)
- 19980802: type casts into
file don't work (fjf207.pas)
- 19980729: define
__NEED_ALIGNMENT__ when needed
- 19980729: incorrect cyclic
uses are not recognized properly (fjf161.pas,fjf161u.pas,fjf162.pas)
- 19980729: new does not work with an object pointer variable and constructor given (fjf155.pas)
- 19980729:
_p_binding() must only be called for files (fjf153.pas)
- 19980729: fatal signal 6 when confusing a schema type witha schema variable (fjf151.pas)
- 19980729: constant char arrays with boolean index range can't be declared like strings (fjf150.pas)
- 19980729: multi-dimensional packed arrays are packed only in the outermost dimension (fjf149.pas)
- 19980729: missing type checking of boolean array indices (fjf124a.pas)
- 19980729:
virtual memory exceeded with some sequences of automake options and an 8-char long program file name (fjf199aa.pas) (tmp)
- 19980729: defining a type equals to text doesn't work in a unit (fjf198.pas)
- 19980729: array slice access to CStrings doesn't work (fjf188.pas)
- 19980729: gpc crashes when trying to pass a const string parameter to a value string parameter (fjf182.pas) (tmp)
- 19980729: false warning when using
forward in the implementation part of a unit (fjf177.pas)
- 19980729: initialized variables in statement part don't work (fjf176.pas)
- 19980729: initialized records with no fields given (
()) don't work (fjf175.pas)
- 19980729: returning a string constant with
return doesn't work (fjf174{,a}.pas)
- 19980729: initialized string arrays, indexed with an enumeration type, don't work (fjf172.pas)
- 19980729: initialized variables of simple (no record or array) schema types does not work (fjf171.pas)
- 19980729: in some cases, a value type casting is done instead of a variable type casting for lvalues (fjf170.pas)
- 19980729: problems treating
string as string(255) in some cases (chief25a.pas)
- 19980728: Bug with SeekWrite (russell1.pas)
- 19980722: declaring an asmname for procedures in the implementation of a unit/module doesn't work
- 19980722: schema, pointer and record types do not properly survive transport through two interfaces (fjf164.pas,orland1.pas,fjf178.pas) <Pine.3.89.9805202229.A26897-e400000@bc.seflin.org.>, <Pine.3.89.9805211812.B6540-9200000@bc.seflin.org.>
- 19980722: DJGPP: Segfault while compiling a program which uses a unit with a long interface <3537FE98.A4417284@ujf-grenoble.fr>
- 19980722: GPC's preprocessor outputs too many empty lines when removing text between {$ifdef} ... {$endif} (fh19971115), <ABcLeYr887@e00827.vno.lt>
- 19980722: missing file mkstemp with GCC2
- 19980722: set constants are not accepted for const set parameters (chief21.pas)
- 19980722: With dynamic variables whose discriminant is initialized with a function call, the function is called twice (john1a.pas)
- 19980722: set constants don't work in units (fjf195.pas)
- 19980722: CString2String doesn't work on nil (fjf191{,b}.pas) (tmp)
- 19980722: filename argument to reset is not handled properly (fjf186.pas,fjf187.pas)
- 19980722: bug with string parameters (fjf184.pas) (tmp?)
- 19980722: preprocessor bug with unterminated strings constants in undef-ed parts (fjf183.pas)
- 19980722: High/Low don't work with schema-arrays and strings (fjf181{,a}.pas) (tmp)
- 19980722: when assigning a string to a CString, no #0 is appended (fjf180.pas) (tmp)
- 19980722: bug with converting big integer constants to reals (fjf179.pas) (tmp?)
- 19980722: substrings of string constants give strange results (fjf168.pas)
- 19980722: initialized strings with a #0 in them are cut after the #0 (fjf168.pas)
- 19980722: operations should be promoted to the bigger operand's size (fjf167a.pas,fjf167b.pas)
- 19980722: the last parameter of BlockRead and BlockWrite is not type checked (fjf163.pas)
- 19980722: schema discriminants are not assigned in
New (fjf152.pas)
- 19980722: strings within a schema type are not recognized in read/write (fjf148.pas)
- 19980722: exit doesn't work in main program in some situations (fjf147.pas)
- 19980722:
--executable-file-name has problems with 8+3 character long file names (fjf141aa.pas)
- 19980722: strange error message at strange position (fh19980121:fjf140.pas)
- 19980722: var parameters of type untyped file don't work (fjf138.pas)
- 19980722: reset, rewrite, extend on untyped files should require a size parameter (except in
--borland-pascal; there: default to 128 and give a warning) (fjf136.pas,fjf137.pas)
- 19980722: reset, rewrite, extend on untyped files don't allow a size parameter when given a file name, too (fjf126.pas)
- 19980722: array with two dimensions, indexed by booleans, doesn't work (fjf124.pas)
- 19980722: wrong comparison of byte with integer (fh19971130.2:fjf118.pas)
- 19980722: don't allow
type y(b:integer)=array[1..b] of integer;x=y; in --extended-pascal (fjf115a.pas)
- 19980722: schema types that are no records or arrays (fh19971124:fjf114.pas,fjf114a.pas)
- 19980722: don't allow writing strings to a file of char (fh19971130:fjf111.pas)
- 19980722: constants can't be written to typed files (fjf110.pas)
- 19980722: no constant range checking in FillChar (fh19971124) (fjf102.pas)
- 19980722: ReadStr doesn't work with bit fields (fjf37a.pas) (tmp?)
- 19980722: bug with constants and parameters of function type (knuth1a.pas)
- 19980715: assigning string constant pointers to string pointer variables doesn't work (fjf194{,a,b,c}.pas)
- 19980715: file variables should be automatically bindable without
--extended-pascal (fjf193{,a,b}.pas)
- 19980715: empty string constants don't work (fjf192.pas)
- 19980715: superfluous warning when automatically adding the #0 terminator to const strings (fjf190.pas)
- 19980630: System: The declaration
Integer = Integer (16) should come before pInteger = ^Integer, and similarly for other declarations
- 19980630: System: remove built-in procedures Seek and RunError
- 19980629: an object type cannot be called
Time <359458B1.9EC44A39@ujf-grenoble.fr>
- 19980629: superfluous warnings
no previous prototype for __init_unitname in Pascal parts of the RTS when making GPC
- 19980629: gpc does not return an error status after a used unit does not exist (neither as source nor precompiled) or when auto-making a unit failed
- 19980629: fixed size strings are not accepted for const string parameters (fixstr1.pas)
- 19980629: superfluous warnings when initializing CStrings with a string constant and when assigning a string to a CString (fjf176.pas)
- 19980611: writing to files via
filevar^ doesn't always work (fjf173.pas)
- 19980531: allow resetting a file that was opened with rewrite, don't close it temporarily <199710081754.KAA17185@gnarly.swdc.stratus.com>
- 19980523: EMX (dos?,os/2!): randomize doesn't work
- 19980521: automake doesn't work on djgpp in gpc980401 <352539F3.92DE9585@ujf-grenoble.fr>
- 19980520: strings are passed to Insert and Delete by value rather than by reference after the declaration of a procedure with a value string parameter (fjf166.pas)
- 19980520: name space conflict with strcmp and other functions (chief24.pas)
- 19980520: System: set ExitProc to nil before calling
- 19980520: System: remove built-in procedures fillchar, move, assign, paramcount, paramstr, insert, delete, pos, copy, str, val, int, frac, binfile stuff
- 19980520: GPCTypes: type declarations (esp. string=bpstring) should rather be in system
- 19980520: GPCTypes: use the modern integer type declarations; Integer,Word 16 bit;comp 64 bit with _Borland_16_Bit_
- 19980520: Dos: include a dummy
SwapVectors procedure
- 19980512: don't pre-read the buffer in typed files after read (fjf104.pas)
- 19980512:
Seek and SeekRead etc. do not yet work in all situations (fjf95b.pas)
- 19980416: non-text files opened with reset are not writable (fjf157.pas)
- 19980416: position for writing into a file opened with reset is wrong by one record (fjf157.pas,fjf158.pas,fjf159.pas,fjf160.pas)
- 19980410:
EOF doesn't work with untyped files in djgpp (tc19980324)
- 19980410: Dos line endings are not handled correctly in
ReadLn
- 19980405: reading chars from text files doesn't work (fjf131.pas) (tmp)
- 19980405:
--borland-pascal: superfluous warnings compiler directives ... incompatible for {$define}, {$if[n]def}, {$b+/-}, {$x+/-}
- 19980405: make parameter to
GetFile const, not var
- 19980405: read/write don't work with a text file as the only argument (fjf132.pas)
- 19980405: randomized automake (fh19971015)
- 19980405: chars are not accepted for const string parameters (chief22.pas)
- 19980405:
xor doesn't work with booleans (fjf154.pas)
- 19980405: const parameters of undiscriminated schema type don't work (fjf144.pas)
- 19980405: don't accept object methods that were not declared with the object type (fjf143.pas)
- 19980405: GPC barfs on type checking with Boolean values in
case statements <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>
- 19980405: Nested packed conformant arrays do not yet work in all cases <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>
- 19980405: Inside
New, all methods of an object become visible and may cause name clashes <199801171504.QAA13384@agnes.dida.physik.uni-essen.de>
- 19980405: string value parameters don't work (fjf125.pas), <199802022303.SAA20015@mint.mint.net>
- 19980405: pack and unpack don't work with conformant arrays
- 19980405: checking of string var parameters is not strict enough (fh19971213:fjf123.pas)
- 19980405: check for division by zero in constants at compile time (fh19971201:fjf121.pas)
- 19980405: missing type checking of different integer types in var parameters (fh19971130:fjf109.pas)
- 19980405: variable type casting of
^Integer into Pointer for passing as var parameter doesn't work (fh19971130:fjf108.pas)
- 19980405: GPC crashes when writing an array of char to a file of char <199711262349.SAA17009@mint.mint.net> (kevin3.pas)
- 19980405: type casts of integer constants to
[Long]Real don't work (fh19971124) (fjf113.pas)
- 19980405: don't allow
Dec(Length(S), Count) (fjf117.pas), S[0] (fjf116.pas) <199711181231.NAA14069@helena.mi.uni-erlangen.de> (2*fh19971124)
- 19980405: produce an error instead of warning for constants out of range (fh19971124) (fjf103.pas)
- 19980405: EMX:
Extend doesn't work <199803090440.XAA08386@mint.mint.net>
- 19980405:
Read[ln]: make INT_READ_HEX_MASK the default in --borland-pascal; Write[ln]: REAL_CAPITAL_EXP_MASK (capexp.pas), make it the default in --borland-pascal
- 19980401: fatal signal 11 with assignment to function method return value with a local type declaration (fjf142.pas)
- 19980220:
ReadStr causes an error when reading strings and source is empty
- 19980215:
Seek doesn't work with block devices
- 19980215:
Seek doesn't work with untyped files
- 19980209: treat nil CStrings as empty in write
- 19980120:
Overlay is not a reserved word in BP
- 19980113: bit fields don't work in read (bitfields.pas)
- 19980112:
Int and Frac don't work on constants <199801091201.HAA06756@mint.mint.net> (fjf74.pas) (tmp)
- 19980106: when reading strings from text files, the capacity is too big by 1 (fjf133.pas)
- 19971230: read doesn't work with packed arrays of char <199712300500.AAA30736@mint.mint.net>
- 19971229: don't allow
4 .. 1 <199711270257.VAA06393@mint.mint.net> (subrw2.pas)
- 19971229: too strict type checking with conformant arrays of char (confarr4.pas)
- 19971229: too strict type checking in
case statement with chars (chars2.pas)
- 19971216: don't pre-read the buffer in files (fjf120.pas) <199712051906.UAA00483@agnes.dida.physik.uni-essen.de>
- 19971215: use
LongReal for long real constants (fh19971105) (fjf77.pas)
- 19971215: file and string variables declared in the statement part are not initialized (fh19971130:fjf106.pas,fjf107.pas)
- 19971215: too strict type checking with Seek (kevin4.pas)
- 19971215: segfault with for loop in init code of a unit (bpcompat1.0:system.pas),(fh19971005) (maur1.pas)
- 19971130: move whole words and take care of alignment when necessary in MoveLeft, MoveRight (moves2.pas) (moves3.pas)
- 19971130:
Seek to elements just written doesn't work (fh19971130:fjf110.pas) (tmp)
- 19971130: remove
Bound_objects and Bound_free_list <199710151621.SAA02929@helena.mi.uni-erlangen.de> (ciriaco1.pas)
- 19971121: give a warning for
SizeOf (constant)
- 19971121:
sizeof(1+1)=4; sizeof(2)=8; types of constants (fh19971113:fjf92.pas)
- 19971121: LongInt constants for varargs parameters are passed as integers (fjf56.pas,fjf92.pas)
- 19971121: sizes of [packed] subranges (fjf86.pas,fjf87.pas)
- 19971121: detect integer constant overflows (fh19971113:fjf76.pas,fjf81.pas,fjf82.pas,fjf83.pas)
- 19971121: make real numbers assignment compatible with complex numbers <97101711354779@petrella.cfilm.ba.cnr.it> (pg19971113)
- 19971121: allow sizeof(discriminated schema type) (fjf99.pas); don't allow sizeof(undiscriminated schema type) (2*fh19971115) (fjf98.pas)
- 19971121:
Seek bug (2*fh19971113) (fh19971113) (fjf94.pas,fjf95.pas) (tmp); SeekRead bug (seekrd.pas)
- 19971121:
array[boolean] of String(2000) doesn't work (fh19971113) (fjf96.pas) (tmp)
- 19971121: local inline functions after var declaration aren't parsed correctly (fh19971013) (fjf75.pas)
- 19971121:
const procvar = proc (fh19971113:fjf90.pas)
- 19971121: check string var parameters for matching capacity (fh19971113:fjf91.pas)
- 19971121: accept
else/otherwise in a case statement without preceding ; (fh19971112) (fjf80.pas)
- 19971121:
else/otherwise bug in case (multiple statements); don't allow a colon before it <199710061122.HAA26981@mint.mint.net>, <Pine.OSF.3.96.971007133527.1198C-100000@capella.hut.fi>
- 19971121: wrong error messages for Insert (2*fh19971109) (fjf93.pas) (tmp)
- 19971121: pointer addition: allow
+/- and Succ/Pred; bug: adds n*Sqr(SizeOf(...)) instead of n*SizeOf(...) (fh19971113:fjf72.pas)
- 19971121: don't allow reading of (non-typed) constants (error, not only warning) (fh19970928) (fjf45.pas)
- 19971121: segfault with assembler code using a record component in a procedure (fh19971015) (fjf73.pas)
- 19971121: wrong error message for invalid record components <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf71.pas)
- 19971116: accessing a packed array in a variant record does not work correctly <199711161700.SAA09857@agnes.dida.physik.uni-essen.de>
- 19971116: capacity is not stored in a string in a variant record <199711161700.SAA09857@agnes.dida.physik.uni-essen.de>
- 19971113: write blanks before
NaN (pg19971113) (tmp)
- 19971112:
Str in --borland-pascal: only a numeric argument (strbool.pas)
- 19971112: bug with
goto in a unit <3.0.2.32.19971005235702.006a032@icenet.com.au>
- 19971112: array schema types of text files don't work (fh19971016) (fjf64.pas)
- 19971112: don't allow schema object types (fh19971016) (fjf65.pas)
- 19971112: don't allow the same identifier for schema type discriminator and a field of the schema (fh19971016) (fjf66.pas)
- 19971112: fatal error with schema type referring to another schema type (fh19971016) (fjf67.pas)
- 19971112: Pointers to string constants don't work (fh19971016) (fjf68.pas)
- 19971112: bug with multidimensional conformant arrays <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf69.pas)
- 19971112: don't allow arrays with negative size (fh19970928) (fjf44.pas)
- 19971112:
var procvar value proc: last program in <199707022313.BAA08656@helena.mi.uni-erlangen.de>,(fh19971003)
- 19971112: segfault with
SqRt in constant declaration in a unit (fh19971111) (fjf78.pas) (tmp)
- 19971112: procedure in a unit accessing an array passed by reference segfaults (fh19971111) (fjf79.pas) (tmp)
- 19971112: string overflows <6dRwLb2VlJB@rufus.central.de> <3258461722101997/A08869/HDC5/11BAB46E3A00*@MHS> (fjf40a.pas) (fh19971013)
- 19971112: SubStr/Copy bug (fh19971013)
- 19971112: sizes of [packed] subranges (fjf85.pas,fjf88.pas)
- 19971111: bug with Rewrite,Reset with filename as second parameter <1948441422101997/A07437/HDC5/11BAB3AC2F00*@MHS>
- 19971110:
prior parameter's size depends on ... bug <80256546.003DB078.00@buffer1.quantel.com>
- 19971110: unknown identifiers in module implementations <Pine.BSI.3.96.971108223417.5629A-100000@malasada.lava.net>
- 19971106: string length check is off by 1 char (fh19971105)
- 19971106: read and write without parameters are not accepted (fh19970928) (fjf43.pas)
- 19971106: warn about assigning strings to chars (fh19971008)
- 19971106: type checking in a case statement (fh19971008) (fjf58.pas)
- 19971106: superfluous warning after reading in the return value of a function (fh19971003)
- 19971106:
x absolute procvar: second to last program in <199707022313.BAA08656@helena.mi.uni-erlangen.de>,(fh19971003) (fjf48.pas)
- 19971102:
Write (LongRealValue) doesn't work with very big or small or unnormal numbers (2*fh19971105)
- 19971101: problems with resetting an already open file <m0xIyyF-0006OkC@bockermann.ping.de>
- 19971101: division of LongReals doesn't use full precision
- 19971101: segfault with wrong program (undeclared array bound) (fh19971010)
- 19971101: accept strings like
#48#49 <6dRwLb2VlJB@rufus.central.de>, <SIMEON.9710101739.A@muahost.cc.keele.ac.uk>, <199710102323.BAA15175@helena.mi.uni-erlangen.de>
- 19971101: sometimes
*.gpc files are not removed (fh19971015)
- 19971101: give a warning for an assignment (or parameter passing) of a string to a char
- 19971101: integer function result can't be assigned to a cardinal <199710282015.VAA17667@helena.mi.uni-erlangen.de> (kevin1.pas)
- 19971022: uses in implementation part of a unit; circular unit references <7420001522101997/A07601/HDC5/11BAB3C01400*@MHS>
- 19971013:
Dispose (nil) causes a segfault (fjf63.pas)
- 19971001:
type x=packed record a,b:packed 1..6 end: SizeOf (x) = 8 (fjf31.pas) <199706271232.OAA15639@helena.mi.uni-erlangen.de>
- 19971001: objects bug <SIMEON.9704041456.A@muahost.cc.keele.ac.uk>
- 19971001: pointers to fields of packed arrays/records <199705010212.EAA29018@helena.mi.uni-erlangen.de> (3 items) (fjf55.pas)
- 19971001: bug with redefined operator <6ZV6gbuMRMB@p-wendt.chateau.line.org> (chris1.pas)
- 19971001: minor bug <199708111750.AA05985@hoover.gilbarco.com> (rphil5.pas)
- 19971001: exported type bug <1.5.4.16.19970613155920.32b721e4@icenet.com.au>
- 19971001: the set code generated in the Alpha causes runtime errors in the generated code
- 19971001: put global variables into the data segment, not on the stack <199707261050.MAA21734@agnes.dida.physik.uni-essen.de>
- 19971001: bug with call of
Sqr/Abs/Round/... in an expression as a parameter <6dNsBq9VlJB@rufus.central.de>
- 19971001: GPC doesn't recognize equal types in connection with two units <2754032017091997/A08645/HDC5/11B98D033600*@MHS>
Node:Implemented Features,
Previous:Fixed Bugs
Features that have been implemented
This section lists the new features implemented since 1st Nov 1997,
together with the date (YYYYMMDD) on which they were implemented.
- 20020424: new procedures
Initialize, Finalize (fjf659*.pas)
- 20020423: GMP: also supports GMP library version 4 now
- 20020407:
asmname for programs, units and module interfaces (fjf656*.pas)
- 20020306: new function
CStringStrError
- 20020225: new field
Parent in PObjectType; new operators is and as (fjf639*.pas)
- 20020224: abstract methods and object types (fjf637*.pas); new options
-W[no-]implicit-abstract, -W[no-]inherited-abstract
- 20020224: new field
Name in PObjectType, containing a pointer to the object type's name (fjf636*.pas)
- 20020224: new built-in type
PObjectType with fields Size and NegatedSize, returned by TypeOf and required by SetType (fjf636*.pas)
- 20020216: new function
FormatString, new variable FormatStringTransformPtr (fjf629*.pas)
- 20020203: additional make targets
pascal.install-with-gcc, pascal.bindist-with-gcc
- 20020125: new function
Ln1Plus (fjf602.pas)
- 20020103: (start of) translation of the manual into Croatian
- 20011221: BP compatible
Graph unit (in GRX package)
- 20011220: Intl: new unit
- 20011213: new function
LTrim
- 20011201: before adding
#0 when assigning/passing string as CStrings, check if there is a #0 already, to avoid faults if the memory is read-only (fjf265.pas, fjf574a.pas)
- 20011111: new options
-W[no-]semicolon (warn about a semicolon after then, else or do) (fjf562*.pas)
- 20011108: changed the syntax for computed
gotos from goto *Ptr to goto (Ptr) (only half as ugly:-) (drf4.pas)
- 20011103: new options
--[no-]double-quoted-strings (fjf546[a-f].pas)
- 20011102: support
InitProc (fjf482.pas)
- 20011023: new options
--[no-]typed-address, also as compiler directives {$[no-]typed-address} or {$T+}/{$T-} (fjf540[a-h].pas)
- 20011023:
asmname and uses ... in now allow concatenated strings (fjf539[ab].pas)
- 20011023: new
public and private directives for interfaces (fjf538[ab].pas)
- 20011023: new options
--big-endian, --little-endian, --print-needed-options for targets whose endianness can vary
- 20011022: make
{$gpc-main} work in units (fjf545.pas)
- 20011018: new predefined symbol
__GPC_VERSION__
- 20011018: new options
--classic-pascal and --classic-pascal-level-1 (equivalent to --standard-pascal and --standard-pascal-level-1, and meaning to supersede the latter in the future)
- 20011016: new parameters
TimeZone, DST, TZName1, TZName2 to UnixTimeToTime; new fields TimeZone, DST, TZName1, TZName2 in TimeStamp
- 20011007: StringUtils: new procedure
StrHashTableUsage
- 20010816: StringUtils: new function
ShellTokenizeString
- 20010713: new option
-x Preprocessed-Pascal or --language=Preprocessed-Pascal (fjf519*.pas)
- 20010704: optimize string assignments
- 20010704: optimize (non-padding) comparisons with and assignment of the constant empty string
- 20010704: warn about some string comparisons and
in tests that are always True or always False
- 20010614: ParserDemo: add support for
cot and angle degree notation
- 20010604: allow
Delete to be called with two or three arguments (fjf509b.pas)
- 20010531: CRT: new key codes
kbShCtrlIns, kbShCtrlDel
- 20010529: new option
--init-modules (ian3.pas, ian5[ab].pas) <01051815483106.01126@ida>
- 20010524: new variable
FakeHighLetters
- 20010524: StringUtils: new routines
ShellQuoteString, AllocateTPStrings, ClearTPStrings, TokenizeString
- 20010506:
InOutResString and InOutResCErrorString are now PStrings rather than CStrings
- 20010506: new argument
Caller to the argument Proc of ForEachMarkedBlock
- 20010503: new options
--[no-]read-base-specifier, --[no-]read-hex, --[no-]read-white-space
- 20010502: new field
Links in BindingType
- 20010501: DosUnix: new functions
OEM2Latin1 and Latin12OEM
- 20010430:
GetTerminalName now returns a string rather than a CString
- 20010421: make some lower-level RTS routines available in
gpc.pas, marked "mostly for internal use"
- 20010420: new function
ReadLink
- 20010417: moved the
PExecute code to the Pipe unit
- 20010417: new parameter
CloseFlag to AssignHandle; new field CloseFlag in BindingType
- 20010415: new function IsTerminal
- 20010412: many error messages now include libc's error message for a more accurate description
- 20010412: new procedure RuntimeErrorErrNo; new variable InOutResCErrorString;
InOutResStr: renamed to InOutResString, moved to the GPC unit from a built-in declaration; new parameter ErrNoFlag to IOError, IOErrorInteger, IOErrorCString and IOErrorFile
- 20010409: make GPC build with gcc-2.95.3
- 20010312: new routines
GetDayOfYear, GetSundayWeekOfYear, GetMondayWeekOfYear, GetISOWeekOfYear
- 20010304: new procedure
ChOwn
- 20010227: System: new Delphi compatible routines and variables
CompToDouble, DoubleToComp, AllocMemCount, AllocMemSize, Assert, DefaultAssertErrorProc, AssertErrorProc, NoErrMsg
- 20010227: removed the alternative address operator
& (@ is still there)
- 20010227: removed the dialect specific behaviour if GPC is invoked as
pc, epc, bpc, etc.
- 20010224: replaced the
ReleaseCount function by a more general ForEachMarkedBlock procedure
- 20010223: BP compatible
binobj utility
- 20010223: System: new conditional
__BP_PARAMSTR_0__
- 20010121: Trap: new procedure
TrapReset
- 20010110:
uses and import may now occur multiple times in a program, unit/module interface or unit/module implementation, even between declarations
- 20010108: ParserDemo: add factorial support
- 20010107: new functions
IsAlpha, IsSpace
- 20001216: CRT: new functions
AltGrKey, ExtraKey
- 20001215: new function
GetTempFileNameInDirectory
- 20001210: new function
FormatTime, new constant InvalidYear
- 20001206: new constant
MaskNoStdDir
- 20001205: the constant
MonthLength was replaced by a function of the same name that handles leap years
- 20001201: new constant
FileMode_Text_Reset_ReadWrite
- 20001115:
shl and shr can also be used as procedures now
- 20001112: new switches
-W[no-]object-directives
- 20001106: StringUtils: new routines
AppendStr, StrCut, Char2Boolean, StrSkipSpaces, StrReadQuoted, StrReadDelimited, StrReadWord, StrReadConst, StrReadComma, StrReadInt, StrReadReal, StrReadBoolean, StrReadEnum
- 20001017: DisposePPStrings
- 20001016:
GetIOErrorMessage now returns a string rather than a CString
- 20001016: RegExType: changed the field
Error from CString to PString
- 20001016: GlobBuffer: replaced fields
Count and Result by Result (PPStrings)
- 20001015:
GetOptErrorFlag is now True by default
- 20001014: StringUtils: new functions StrCount, StrReplace, Char2Digit, QuoteString, UnQuoteString, ExpandTabs, ExpandCEscapeSequences
- 20001007: many new docdemo programs
- 20001007: new options
-W[no-]underscore
- 20001003: many new docdemo programs
- 20001001: many new
Reference entries and new material in the Programming chapter in the manual
- 20000917: added the
Size field of BindingType again
- 20000910: don't add a newline on
Extend to text files that were bound as binary
- 20000909:
GetOptLong can now optionally derive the short options from the LongOptions array
- 20000909:
CStringCharPos, CStringLastCharPos: renamed to CStringChPos and CStringLastChPos to avoid confusion with CharPos and LastCharPos
- 20000902: CRT: new procedure CRTSetTerminal
- 20000828: new procedure FileMove
- 20000826: new constant DayOfWeekName
- 20000825: integrated the FAQ into the GPC Manual
- 20000820: new routines SystemInfo, FileLock, FileUnlock, Alarm
- 20000819: StringUtils: new unit, implementing a string hash table (further routines to be added)
- 20000817: CRT: new routines CRTSavePreviousScreen, CRTSavePreviousScreenWorks
- 20000806: new function GetTerminalName
- 20000803: new functions UserID, GroupID
- 20000723: new parameter
AccessTime to SetFileName
- 20000716: renamed the file mode constants from
fmfoo to fm_foo
- 20000716: new routines MemoryMap, MemoryUnMap
- 20000626: the default make target for testing GPC is called
pascal.check (or check-pascal) rather than check-gpc now; the test must be run in the build directory (not the p subdirectory) or in the test subdirectory of the source directory now
- 20000619:
--borland-pascal: ignore everything after end. (also takes care of "^Z" characters at the end of Dos text files)
- 20000613: Dos: special versions of GetCBreak and SetCBreak for MS-Windows
- 20000612: Dos: new procedures (not only on DJGPP) DosVersion, SetDate, SetTime
- 20000611: CRT: new procedures
SetScreenSize, SetMonochrome; renamed IsMonoMode to IsMonochrome
- 20000610: each of the parameters
Dir, Name and Ext to FSplit may now be Null
- 20000607: Single RTS command line options are now recognized with
--gpc-rts=option as well, and this can be given multiple times
- 20000607: new procedure ResetGetOpt
- 20000606: CRT: new functions CtrlKey, AltKey; new constants chCtrlA ... chCtrlZ, kbCtrlA ... kbCtrlZ
- 20000605: new routines BlockSignal, SignalBlocked
- 20000605: CRT with ncurses: 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
- 20000604: Dos: new procedures (not only on DJGPP) GetCBreak, SetCBreak, GetVerify, SetVerify
- 20000604: new routines SetInputSignals, GetInputSignals
- 20000531: new demo program
DynamicArrayDemo
- 20000530: integrated the interface of all units included with GPC into the GPC Manual; formatted the interfaces, also of gpc.pas, more nicely
- 20000528: integrated the To-Do list and the list of new GPC features into the GPC Manual
- 20000528: include the demo programs printed in the GPC Manual (currently 59, but expected to become more) into binary distributions in a directory
docdemos
- 20000527: restructured the GPC Manual
- 20000526: in the GPC Manual, 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
- 20000526: changed the license of most units and the RTS from LGPL + exception to GPL + exception
- 20000525: ReverseBytes, ConvertFromLittleEndian, ConvertFromBigEndian, ConvertToLittleEndian, ConvertToBigEndian: new parameter
ElementSize; new demo program EndianDemo
- 20000523: derive the keyword list in the documentation directly from the source
- 20000521: WinCRT: new unit (identical to CRT)
- 20000521: CRT: GetScreenSize renamed to ScreenSize (WinCRT compatibility); added some missing WinCRT compatibility stuff
- 20000519: new function GetMountPoint
- 20000516: new field Device in BindingType
- 20000516: BlockReadLittleEndian, BlockReadBigEndian, BlockWriteLittleEndian, BlockWriteBigEndian: new parameter
ElementSize
- 20000516: new procedures ReadStringLittleEndian, ReadStringBigEndian, WriteStringLittleEndian, WriteStringBigEndian
- 20000509: System: new functions Ofs, Seg, Ptr, CSeg, DSeg, SSeg, SPtr and a number of variables (mostly useless and only for BP compatibility)
- 20000507: new procedure IOErrorFile
- 20000505:
asmname in variable and constant declarations must now come after the type; furthermore, asmname doesn't imply external anymore
- 20000502: SeekEOF, SeekEOLn
- 20000421: new function InstallSignalHandler
- 20000418: recognize files with
.pp or .dpr extension as Pascal sources
- 20000415: new switch
{$[no-]debug-statement[=foo]} (call a procedure automatically before each statement for debugging)
- 20000415: RTS command line options are now recognized after
--gpc-rts instead of -Grts
- 20000415: removed
__cstring__, __void__
- 20000414: 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)
- 20000412: runtime errors are now printed with their address to help debugging (using addr2line), and the address is stored in ErrorAddr
- 20000411: new functions ReturnAddress, FrameAddress
- 20000411: local compiler directives and defines with
{$local} and {$endlocal} (fjf430*.pas)
- 20000409:
{$ifopt}
- 20000409: case-[in]sensitve defines with {{$csdefine}} and {{$cidefine}} (or
--csdefine and cidefine); {$define} (but not --define) is now case-insensitive
- 20000407: make
mod with negative right operand work like in BP; allow expressions like -2 * +3
- 20000407:
make check now runs the current test suite rather than the (obsolete and removed) dejagnu tests; the test suite now produces a summary output by default, make pascal.check-long (or check-pascal-long) produces the long output format as before
- 20000407: new option
-W[no-]warnings (enable/disable warnings)
- 20000407: make single-letter compiler directives BP compatible (
--borland-pascal: ignore $F, $O etc., ignore numbers after $M); new option --[no-]stack-checking, also as compiler directives {$[no-]stack-checking} or {$S+}/{$S-}; replace {$P+}/{$P-} by {$[no-]pedantic} (or --[no-]pedantic on the command line); ignore {W+}/{W-} in --borland-pascal mode
- 20000406: CRT: new variable CRTAutoInitProc; new procedure CRTNotInitialized
- 20000405: new switches
--[no-]macros
- 20000402: new switches
-W[no-]field-name-problem
- 20000402: allow all
-Wfoo options also as {$W foo} directives (no more {$Wfoo} like in the last alpha release!)
- 20000331: replace
--no-nested-comments by --mixed-comments (and vice versa); new options --[no-]nested-comments, -W[no-]mixed-comments, -W[no-]nested-comments (mixcom*.pas, nest*.pas); allow comments (but not compiler directives) within compiler directives
- 20000331: make C style char escapes the default for strings enclosed in
"" (like --char-escapes used to do), and use \" rather than "" to get a verbatim " in them; remove the --[no-]char-escapes switch and the {$E[+-]} compiler directive
- 20000331: Delphi style
// comments, new switch --[no-]delphi-comments and compiler option {$[no-]delphi-comments}
- 20000327: new header gpc-in-c.h for inclusion of GPC code into C programs; new demo program GPC_C_Pas to demonstrate this
- 20000327: allow
^const to create a pointer to a constant
- 20000327: don't expand macros in
--borland-pascal and --delphi
- 20000327: Dos: added the unportable Dos-only routines under DJGPP if
__BP_UNPORTABLE_ROUTINES__ is defined
- 20000326: removed
__asmname__, __const__, __external__, __inline__, __static__, __volatile__, __byte__, __short__, __long__, __longlong__, __unsigned__
- 20000322: cleaned up the lexer; removed some fossils, e.g.
--c-numbers
- 20000306: 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)
- 20000221: new types ByteBool, ShortBool, WordBool, MedBool, LongBool, LongestBool, Boolean(n) (fjf395.pas)
- 20000219: build in
Include, Exclude
- 20000213: make
nil also a value of any procedural/functional type (fjf258[a-e].pas)
- 20000211: new functions
PathExists, DataDirectoryName, new parameter Prefix to ConfigFileName
- 20000211: new fields SymLink, TextBinary in BindingType; new procedure AssignBinary; removed variable TextFilesBinary
- 20000202: new options
--[no-]progress-messages, --[no-]progress-bar
- 20000202: ignore
{$L+}/{$L-} directives (for BP compatibility)
- 20000131: new unit MD5; new demo program MD5Demo
- 20000124: new unit FileUtils; new demo program FindFilesDemo
- 20000111: changed the internal file handling from using
FILE * to integer file handles, to make it more efficient and get rid of some problems; replaced the CFile field in BindingType by a Handle field; replaced the AssignCFile procedure by an AssignHandle procedure; removed the GetFile function (note FileHandle)
- 20000111: new function Integer2String
- 20000106: new functions IsPrintable, CharSet2RegEx
- 19991217: System: new functions RealToBPReal, BPRealToReal
- 19991217: new functions IsInfinity, IsNotANumber, SplitReal
- 19991124: new demo program ProcVarDemo
- 19991117: new function
LongReal2Str to work-around the Work (Real) problem on the MIPS
- 19991110: CRT: DJGPP: added support for 40 column modes (requires updated PDCurses library)
- 19991104: new demo program FExpandDemo
- 19991103: CRT: changed the define to get an X11 version from XCURSES to X11
- 19991102: added
Special field to BindingType
- 19991101: new function GetShellPath
- 19991101: new option
--[no-]transparent-file-names to derive the external file names from the file variable names <199909010105.VAA23844@kaylor.ncifcrf.gov> (fjf394.pas)
- 19991025: CRT: new procedures SimulateBlockCursor, SimulateBlockCursorOff
- 19991023: CRT: don't initialize curses at the beginning of the program, but initialize it automatically when the first CRT routine is called (for BP compatiblity); new procedure CRTInit to explicitly initialize CRT which also sets some defaults (PCCharSet and update level) to more natural (and less BP compatible) values
- 19991023: CRT: allow any of the parameters to GetWindow to be
Null
- 19991014: new procedure ReAlloc; previous ReAlloc function (libc) renamed to CReAlloc; new variable ReAllocPtr
- 19991014: new functions GetPasswordEntryByName, GetPasswordEntryByUID, GetPasswordEntries; make ExpandEnvironment recognize
~user
- 19991006: RegEx: support for converting subexpression references to upper/lower case while replacing them with
\u7/\l7
- 19990924: new functions MemCompCase, StrEqualCase, PosCase, LastPosCase, PosFromCase, LastPosTillCase, IsPrefixCase, IsSuffixCase, ExecuteNoTerminal
- 19990922: System: new procedure SetTextBuf for BP compatibility
- 19990905: before building the RTS, make sure that the compiler version used is current, to prevent strange bugs when building with an older version <17698.990820@mg.dp.ua>
- 19990805: new procedure SeedRandom; new variable SeedRandomPtr; automatically initialize the random number generator like Randomize does at the first call to Random unless SeedRandom was called before (only for the default RNG; not the BP compatible one in the System unit)
- 19990802: new procedure RestoreTerminalClearCRT
- 19990801: CRT: added support for panels (overlapping windows); new routines GetActivePanel, PanelNew, PanelDelete, PanelBindToBackground, PanelIsBoundToBackground, PanelActivate, PanelHide, PanelShow, PanelHidden, PanelTop, PanelBottom, PanelMoveAbove, PanelMoveBelow, PanelAbove, PanelBelow, IgnoreCursor
- 19990728: new demo program ArraySliceDemo
- 19990727: CRT: replaced the variables PCCharSet and UseControlChars by routines SetPCCharSet, GetPCCharSet, SetControlChars, GetControlChars
- 19990727: GMP: new procedures mpf_exp, mpf_ln, mpf_pow, mpf_arctan, mpf_pi
- 19990726: implemented environment variable management in Pascal, so that it's independent of libc differences (e.g. the presence or not of
environ); new routines UnSetEnv, GetCEnvironment; removed PutEnv and CSystem functions (obsoleted by SetEnv and Execute); turned the Environment variable into a schema which contains the environment variables as CStrings; allow empty and case-sensitive environment variables within GPC programs even under Dos
- 19990723: make
{$gnu-pascal} completely equivalent to --gnu-pascal; add {$gnu-pascal} to all included units so they can also be compiled with --automake when --foo-pascal options are given (dialec[1-6].pas)
- 19990723: new options
-W[no-]typed-const and -W[no-]near-far
- 19990720: new functions SetTerminalProcessGroup, GetTerminalProcessGroup
- 19990719: new demo program RealPower
- 19990709: new constants for signals; new routines Kill, WaitPID, SetProcessGroup (formerly in the Pipe unit)
- 19990622: new function FileHandle; un-built-in GetFile - it is now in the GPC unit, but obsolete
- 19990622: new routines AllocateBigMem, DisposeBigMem, MoveToBigMem, MoveFromBigMem, MapBigMem for uniform access to big memory blocks for GPC and BP; new demo program BigMemDemo
- 19990617: integrated the
PExecute unit into the RTS
- 19990612:
register directive
- 19990609: integrated the GetOpt unit into the RTS (because the RTS uses it, anyway); removed the Internal unit from the installation (because using it from programs is really not recommendable)
- 19990603: new procedure SetEnv (makes obsolete libc's PutEnv)
- 19990601: included a
GPC unit for BP to provide some GPC compatibility to BP programs
- 19990527: new demo program TrapDemo
- 19990527: new units HeapMon, Trap
- 19990527: new function ReleaseCount
- 19990526: new routines RegisterRestoreTerminal, UnregisterRestoreTerminal, RestoreTerminal
- 19990502: new routine SetProcessGroup
- 19990424: new function RegExPosFrom
- 19990403: new constant FileNamesCaseSensitive, new function FileNameLoCase
- 19990327: added 20 demo programs
- 19990325: new function GetMicroSecondTime
- 19990324: 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
- 19990308:
--no-default-paths
- 19990307: new functions IOSelect, IOSelectRead
- 19990225:
--no-{unit,object}-path
- 19990225:
--[no-]io-checking and {$[no-]io-checking} as synonyms for {$I+-}
- 19990219: recognize (but currently ignore) published/public/protected/private
- 19990218: renamed DataReady to CanRead
- 19990213: change warnings of the form
Foo-Pascal does not have foobars into foobars are {GPC-specific|a GPC extension} and add spaces before all but the first line of multi-line messages
- 19990211: new procedures Sleep, SleepMicroSeconds, GetCPUTime
- 19990211: CRT: new procedures CRTUpdate, CRTRedraw, SetScroll, CRTSetCursesMode
- 19990209: renamed the __BP_INTEGERS__ (System unit) and _Borland_16_Bit_ (Dos and WinDos units) defines to __BP_TYPE_SIZES__
- 19990209: Pipe: new parameter
Process to Pipe; new functions WaitPipeProcess, StrSignal, Kill, WaitPID; new constants (actually variables) for the signals
- 19990205: new routines HasWildCardsOrBraces, BraceExpand, MultiFileNameMatch, GlobOn, MultiGlob, MultiGlobOn, QuoteFileName, UnQuoteFileName, FExpandQuoted, ForceAddDirSeparator, FindNonQuotedChar, FindNonQuotedStr, NameExtFromPath; new parameter
Quoted to RelativePath
- 19990202: new declarations DirRoot, QuotingCharacter, EnvVarChars, EnvVarCharsFirst, WildCardChars, FileNameSpecialChars, ShellExecCommand
- 19990127: new functions IsUpCase, IsLoCase, IsAlphaNum, IsAlphaNumUnderscore
- 19990127: CRT: catch some signals and return pseudo function keys for them if CheckBreak is False
- 19990125: added
User, Group, Mode and INode fields to BindingType; new procedure ChMod
- 19990125: CRT: react to screen size changes by external events and return a pseudo function key
- 19990115: built in
Null (= nil^)
- 19990115: Pipe unit (also for Dos!)
- 19990115: new function DataReady to check if data can be read from a file without blocking
- 19990110: integrated the
PExecute unit into GPC
- 19990102: pass all given options to automake compilations too (without having to repeat them with
--automake="foo"), remove --automake="foo"
- 19990101:
--[no-]autolink (default is autolink)
- 19981228:
--[no-]executable-path, --[no-]unit-destination-path, --[no-]object-destination-path
- 19981222: implemented buffering to speed up reading from files
- 19981213: integrated the following units into GPC:
GetOpt, RegEx, GMP, Ports
- 19981212: new string routines: SetString, StringOfChar (Delphi compatibility)
- 19981212: integrated the
DosUnix unit into GPC
- 19981210: integrated the
GPCUtil unit into GPC
- 19981208: integrated the following units into GPC:
System, Turbo3
- 19981208: remove {$W-} as much as possible in the units
- 19981208: built in Addr, Assigned
- 19981207: integrated the following units into GPC:
CRT, Dos, Overlay, Printer, Strings, WinDos
- 19981206:
--unit-path (upath.pas), --object-path (opath.pas); don't allow them in a source file
- 19981206: allow
Copy with 2 arguments (fjf40e.pas)
- 19981205:
FileName function with a Pascal string return value
- 19981205: interpret
{$L foo} as -lfoo; accept files with .so extension in {$L}
- 19981203: pre-define
__OS_DOS__ on Dos-like systems
- 19981202:
--uses=foo(bar.pas),bar,baz(../baz.pas) (fjf101b.pas)
- 19981202: make
= and so on for strings work as exact comparisons (--borland-pascal; --[no-]exact-compare-strings) (fjf38{,[a-f]}.pas)
- 19981201: pre-define __BORLAND_PASCAL__ etc. depending on the dialect options and __GNU_PASCAL__ if no dialect option was given (dialdef{,[1-6]}.pas)
- 19981108: new time routines UnixTimeToTimeStamp and TimeStampToUnixTime
- 19981108: added
AccessTime, ModificationTime and ChangeTime fields to BindingType
- 19981021: added a
Force field to BindingType
- 19980921: procedures to convert the endianness of single variables (ReverseBytes, Convert{From,To}{Little,Big}Endian) and to do this while reading/writing them from/to untyped files (Block{Read,Write}{Little,Big}Endian)
- 19980919: MaxLongInt
- 19980918: a number of new CString routines, including almost all (that weren't already there) of BP's strings unit
- 19980918: WinDos: portable BP compatible unit with most of the routines (those that can possibly be implemented in a portable way)
- 19980917: CRT: some win (TP 5), wincrt and tpcrt compatibility routines and some extensions added
- 19980915: Internal: unit, with the internal RTS declarations from gpc.pas moved into it
- 19980914: System: remove built-in procedures UpCase, LoCase, ChDir, MkDir, RmDir, FileSize, AddNullTerminator, InOutRes, IOResult, FileMode
- 19980914: System: GetDir, Lo, Hi, Swap, MemAvail, MaxAvail, HeapError, HeapErrorNilReturn
- 19980912: declared CGetMem, CFreeMem, ReAlloc
- 19980909: build in GetMemPtr, FreeMemPtr
- 19980830: allow
RunError without arguments (error code -1)
- 19980830:
--no-automake, --no-autobuild, --no-autolink (each of them disables all of --autolink, --automake and --autobuild)
- 19980822: internally remove the
type parameter to _p_bind()
- 19980818: build in GPC_StatFS
- 19980724: procedures UpCaseString, LoCaseString, functions UpCaseStr, LoCaseStr
- 19980722: longest{int,real}-field-width (fieldw.pas)
- 19980722: allow collecting options in several
--automake oder --autobuild options
- 19980719: build in ExitCode, ErrorAddr
- 19980719: Dos: portable BP compatible unit with most of the routines (those that can possibly be implemented in a portable way)
- 19980717: added a
DayOfWeek field to TimeStamp and a DayOfWeek function
- 19980715: define __GPC_RELEASE__
- 19980702: new CString functions: StrLen, StrEnd, StrScan, StrRScan, StrDup, StrCmp, StrCaseCmp
- 19980701: new file name declarations and routines: PathSeparator, DirSeparator, DirSeparators, ExtSeparator, DirSelf, DirParent, NullDevice, TTYDevice, ConsoleDevice, GetCurrentDirectory, GetTempDirectory, GetTempFileName, GetTempFileName_CString, Slash2OSDirSeparator, OSDirSeparator2Slash, Slash2OSDirSeparator_CString, OSDirSeparator2Slash_CString, FileExists, DirectoryExists, FSearch, FSearch_Executable, Expand_Environment, FExpand, FSplit, DirFromPath, NameFromPath, ExtFromPath, OpenDir, ReadDir, CloseDir
- 19980629: runtime I/O error handling with {$I+-}
- 19980629: build in NewCString, StrPCopy, CString2String (fjf156.pas); String2CString
- 19980629: build in UpCase, LoCase (locale-dependent, except in
--borland-pascal, there only 7 bit ASCII) (fjf165a.pas,fjf165b.pas)
- 19980629: build in High, Low (for ordinal types and arrays)
- 19980629: build in Random (for LongestCard and LongestReal), Randomize
- 19980629: build in SizeType, PtrDiffType
- 19980629: build in Pi <Pine.SGI.3.96.980318113542.2662B-100000@pugh.bip.bham.ac.uk>
- 19980629: build in Erase, Rename, ChDir, MkDir, RmDir, FileMode, Flush
- 19980628: internally remove the unused second parameter of Dispose/FreeMem
- 19980626: allow mixing of New/GetMem/Dispose/FreeMem with malloc()/free() and with Mark/Release (except free() with Release in some cases)
- 19980623: Turbo3 unit
- 19980619: Printer: portable (piping to lpr under Un*x)
- 19980613:
--gnu-pascal
- 19980611: CRT: portable ncurses-based unit
- 19980604: print error messsages in the form:
a.out: [internal error:] unknown code in Write (error #904)
- 19980531: when opening a file with a file name, do a binding actually (fjf169.pas)
- 19980523: added a
MicroSecond field to TimeStamp
- 19980520: printer unit for Dos
- 19980520:
--uses="foo" (fjf101.pas,fjf101a.pas)
- 19980511: build in FilePos, FileSize, Truncate, Append
- 19980511: build in RunError
- 19980405: accept (but currently ignore) {$ifopt}
- 19980405: When passing a long string value to a PChar parameter, automatically add a #0 terminator
- 19980405: allow
type y(b:integer)=array[1..b] of integer; x=y; (fjf115.pas)
- 19980405: Fail (FreeMem, when constructor called by New)
- 19980405: rename AssignLength and AssignType to SetLength and SetType, resp., for Delphi compatibility
- 19980405: warn about absolute declarations and type casts that can cause alignment problems
- 19980405:
--autobuild
- 19980129: predefine symbols for endianness
- 19980114: recognize
--[no-]truncate-strings in WriteStr (fjf59.pas,truncstr.pas)
- 19980114: build in untyped files and BlockRead, BlockWrite (blockop.pas)
- 19971230: build in Int, Frac (fjf129.pas)
- 19971215: build in PtrInt, PtrCard, PtrWord
- 19971130: allow opening files to
'' or '-' for stdin/stdout
- 19971121: different versions of math functions for LongReal
- 19971121: allow
with for schema types <199710152102.XAA04800@helena.mi.uni-erlangen.de> (fjf70.pas)
- 19971121: allow
(var) := expr (fjf100.pas)
- 19971112: build in ParamCount, ParamStr (params.pas)
- 19971112: initialize arrays of text in a loop rather than individually (fh19971016) (fjf64.pas)
- 19971112: build in Seek
- 19971112: build in FillChar, Move (moving whole words), MoveLeft, MoveRight (moving single bytes) (moves.pas)
- 19971106: build in Delete (fjf62.pas) (fh19971008), Pos (delinspos.pas), Copy
- 19971106: AssignLength (alength.pas)
- 19971101: make the char array in a String
[1..Capacity+1] so that there's always space for a #0 terminator
- 19971101: build in Str and Val; Str in
--borland-pascal: only one argument
- 19971101: build in StdErr
- 19971101: optimize
in with set constructors
- 19971101: build in Insert (fjf61.pas)