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-width
s 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 FExpand
ed
- 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:
Extend
ing 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
return
ing 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:
FExpand
ing 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:
New
ing 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
goto
s 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 PString
s rather than CString
s
- 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)