Node:News, Next:FAQ, Previous:Highlights, Up:Top
GPC's new or changed features since the last (non alpha/beta) GPC release are listed here. Items without further description refer to new routines, variables or options.
Features implemented for compatibility to other compilers are marked
with, e.g., (B)
for BP compatibility.
A few old and obsolete features have been dropped or replaced by
cleaner, more flexible or otherwise more useful ones. This might
lead to minor problems with old code, but we suppose they're rare
and easy to overcome. They are marked with (@)
.
EQPad
etc.) (fjf873.pas)
-W[no-]interface-file-name
SeekEOF
and SeekEOLn
use Input
implicitly when no file is given (fjf871.pas) (B)
with
statements (Sun Pascal) (tom6.pas)
--sun-pascal
-W[no-]field-name-problem
removed, @)
published
, public
(both equivalent), protected
(scope limited to object type and derived object types), private
(scope limited to current unit/module) (fjf864*.pas) (options -W[no-]object-directives
removed, @)
+
and -
is now as defined in EP by default (and as in BP with --borland-pascal
) <Pine.LNX.4.44.0210251249500.6181-100000@duch.mimuw.edu.pl> (fjf863*.pas) (@)
Integer (16)
etc. changed to Integer attribute (Size = 16)
(works for integer and Boolean types) (fjf861.pas) (@)
;
) (fjf860*.pas)
--borland-pascal
mode, Assign
unconditionally (re-)initializes its file parameter (fjf858.pas)
gpm
files anymore (instead, each module has an implicit modulename-all.gpi
interface which is a regular gpi
file)
static
in C sense), omit them if easily possible
-W[no-]parentheses
(fjf848*.pas)
interface
modules with empty implementation part (pmod1.pas, fjf843.pas)
maximum-field-alignment
and [no-]field-widths
work as local compiler directives now (fjf842.pas)
{$debug-statement}
(should not be necessary anymore, now that debug info mostly works)
--[no-]longjmp-all-nonlocal-labels
iocritical
(fjf824*.pas), ignorable
(fjf839*.pas) for routines
goto
(never worked for nonlocal goto
into the main program, implementing it would be quite difficult, probably not worth it) (@)
AnyFile
for parameters and pointer targets (fjf821*.pas)
TimeStamp
is now a packed record (E)
--interface-only
does not require -S
or -c
anymore (and does not create an object file)
initialization
, finalization
(D)
TimeZone
in TimeStamp
counts seconds east of UTC now (not west, as before) (datetimedemo.pas) (@)
export Foo = all (...)
(fjf811*.pas)
-W[no-]local-external
(implied by -Wall
)
pack-struct
does not imply bit-level packing anymore (only explicit packed
records and arrays do) (@)
--[no-]ignore-packed
(--ignore-packed
is the default in BP mode) (fjf796*.pas) (B) (@)
--maximum-field-alignment=N
{$[no-]pack-struct}
as a compiler directive
attribute
for routines doesn't imply forward
anymore (so you don't have to declare routines twice in a program or implementation part when setting the linker name or some other attribute) (@)
static
, volatile
and register
for variables and inline
for routines are no prefix-directives anymore, but attribute
s (@)
--extended-pascal --borland-pascal
) doesn't work anymore (what should this mean, anyway? Combine the features, but also the warnings from both!?!?!?) (@)
external
without name
defaults to all-lowercase now (@)
c
, c_language
and asmname
are deprecated (@)
external name 'foo'
(fjf780.pas), external 'libname' name 'foo'
(where libname
is ignored) (B)
definec
, macro
, undefc
, ifc
, ifoptc
, elsec
, elifc
, endc
, errorc
(treated as equivalent to the corresponding existing ones) (M)
implementation
part (M)
--vax-pascal
, --mac-pascal
const
for variables and name
for variables, routines and modules; assembler names and module/unit file names can now be expressions (which must yield string constants) (fjf781*.pas, fjf809*.pas)
gpidump
and binobj
are installed with GPC (B)
-W[no-]identifier-case
, -W[no-]identifier-case-local
(fjf751*.pas)
$R foo
, equivalent to $L foo.resource
(B)
--[no-]borland-char-constants
(now simply coupled to dialect options) (@)
TEST_RUN_FLAGS=-p
from the Makefile; -p
in testgpc); see http://fjf.gnu.de/misc/progress-messages.tar.gz
=
and <>
comparisons of structures (arrays, records, ...) except strings and sets are forbidden now (@) (E)
foo in []
; bar * []
; Im (baz)
if baz
is of real type) are not necessarily evaluated anymore (which is allowed by the standard); instead, a warning is given if they have side-effects (@)
--[no-]ignore-garbage-after-dot
(fjf735*.pas) (@)
-W[no-]implicit-io
(fjf734*.pas)
--enable-keyword
, --disable-keyword
(fjf733*.pas)
CBoolean
(fjf727.pas)
GetMem
as a function with one parameter (only the BP compatible usage as a procedure with two parameters remains) (@)
FileMode
now requires using the GPC
(or, for BP compatibility, the System
) unit (@)
DupHandle
__CLASSIC_PASCAL__
, __STANDARD_PASCAL__
, __EXTENDED_PASCAL__
, __OBJECT_PASCAL__
, __UCSD_PASCAL__
, __BORLAND_PASCAL__
, __DELPHI__
, __PASCAL_SC__
and __GNU_PASCAL__
(one can use {$ifopt borland-pascal}
etc. instead) (@)
Succ
, Pred
, Inc
, Dec
for real numbers (fjf714*.pas)
GPC_UNIT_PATH
, GPC_OBJECT_PATH
-W[no-]float-equal
--ucsd-pascal
type foo = procedure (Integer, Real)
(i.e., without parameter names) (@)
On
to CRTSavePreviousScreen
SetUserID
, SetGroupID
HeapChecking
Assert
; new switches --[no]-assert
(also {$C+}
, {$C-}
for Delphi compatibility) (fjf665*.pas) (D)
ProcessGroup
QuoteEnum
CurrentFunctionName
(fjf752.pas)
-e FILE
and -E FILE
(redirect/append standard error)
Have fun,
The GNU Pascal Development Team