This file was generated automatically from news.texi.
DO NOT CHANGE THIS FILE MANUALLY!

GPC News
********

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 or `(D)' for Delphi
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 programs, but we suppose they're rare and
easy to overcome. They are marked with `(@)'.

   * `initialization', `finalization' (D)

   * `TimeZone' in `TimeStamp' counts seconds _east_ of UTC now (not
     west, as before) (datetimedemo.pas) (@)

   * `export FOO = all (...)' (fjf811*.pas)

   * new options `-W[no-]local-external' (implied by `-Wall')

   * type-casts are BP compatible now, in particular, value type-casts
     between ordinal and real or complex types don't work anymore (B)
     (@)

   * all non-ISO-7185 keywords can be used as identifiers (with two
     small exceptions) (fjf440.pas)

   * `pack-struct' does not imply bit-level packing anymore (only
     explicit `packed' records and arrays do) (@)

   * new options `--[no-]ignore-packed' (`--ignore-packed' is the
     default in BP mode) (fjf796*.pas) (B) (@)

   * new option `--maximum-field-alignment=N'

   * new options `{$[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 (@)

   * combining several dialect options (such as `--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)

   * Mac Pascal directives `definec', `macro', `undefc', `ifc',
     `ifoptc', `elsec', `elifc', `endc', `errorc' (treated as
     equivalent to the corresponding existing ones) (M)

   * units without `implementation' part (M)

   * new options `--vax-pascal', `--mac-pascal'

   * attributes `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)

   * the utilities `gpidump' and `binobj' are installed with GPC (B)

   * new options `-W[no-]identifier-case',
     `-W[no-]identifier-case-local' (fjf751*.pas)

   * new compiler directive `$R foo', equivalent to `$L foo.resource'
     (B)

   * dropped `--[no-]borland-char-constants' (now simply coupled to
     dialect options) (@)

   * test suite: support progress messages (`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 (@)

   * irrelevant operands and arguments (e.g.: `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 (@)

   * accept only one program, unit, module interface or implementation
     or a module interface and the implementation of the same module in
     one file; new options `--[no-]ignore-garbage-after-dot'
     (fjf735*.pas) (@)

   * new options `-W[no-]implicit-io' (fjf734*.pas)

   * new options `--enable-keyword', `--disable-keyword' (fjf733*.pas)

   * `CBoolean' (fjf727.pas)

   * dropped the usage of `GetMem' as a function with one parameter
     (only the BP compatible usage as a procedure with two parameters
     remains) (@)

   * accessing the variable `FileMode' now requires using the `GPC'
     (or, for BP compatibility, the `System') unit (@)

   * `DupHandle'

   * dropped the predefined dialect symbols `__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)

   * use environment variables `GPC_UNIT_PATH', `GPC_OBJECT_PATH'

   * new options `-W[no-]float-equal'

   * new option `--ucsd-pascal'

   * dropped the syntax `type foo = procedure (Integer, Real)' (i.e.,
     without parameter names) (@)

   * CRT: new argument `On' to `CRTSavePreviousScreen'

   * `SetUserID', `SetGroupID'

   * `HeapChecking'

   * new built-in procedure `Assert'; new switches `--[no]-assert'
     (also `{$C+}', `{$C-}' for Delphi compatibility) (fjf665*.pas) (D)

   * `ProcessGroup'

   * StringUtils: `QuoteEnum'

   * `CurrentFunctionName' (fjf752.pas)

   * TFDD: new unit

   * gpc-run: new options `-e FILE' and `-E FILE' (redirect/append
     standard error)

Have fun,

The GNU Pascal Development Team

