============================================================
GNAT 3.14 NEW FEATURES LIST Current as of January 30th, 2001
============================================================

Copyright (c) 2001, Ada Core Technologies

This file contains a complete list of new features in version
3.14 of GNAT. A full description of all GNAT features can be
found in the GNAT User Guide and GNAT Reference Manual.

NF-314-0000-021 VMS GNAT MAKE /ALL does not require /STATIC

  GNAT MAKE (actually gnatbind) now recognizes when GNAT
  RTL files have been recompiled and automatically forces
  linking with the GNAT RTL object library (so that
  duplicate symbols will not clash with the GNAT RTL shared
  library). This is for the VMS version of GNAT only.

NF-314-5827-001 New -u switch for gnatmake

  The command gnatmake -u only recompiles the main file when
  needed. Gnatmake can now be used as the main and only
  interface to the compiler since a single compilation can be
  launched with "gnatmake -u -f".

NF-314-6806-001 Source reference pragmas read by gnatchop

  The gnatchop utility now recognizes and respects existing
  source reference pragmas that it finds in the input file,
  so that the output files always properly reflect the
  original source file.

NF-314-6813-011 Asis queries to evaluate static expressions

  A new set of queries is added to package Asis.Extensions.
  These queries allows an ASIS application to evaluate the
  value of a discrete static expressions and to get the low
  and high bound of a static 'Range attribute. The results
  are returned as string images of expression values, The
  'Pos value is returned for enumeration expressions. See
  specification of Asis.Extensions for more details.

NF-314-6816-003 Symbolic tracebacks implemented on SGI IRIX

  The package GNAT.Traceback.Symbolic is now implemented
  under IRIX.

NF-314-7001-006 Better messages on non-visible entities

  The warnings for non-visible entities have been improved
  to exclude implicit entities, and entities declared in
  the private part of GNAT internal units. This results in
  more helpful error messages for undefined variables.

NF-314-7008-003 New package GNAT.Sockets

  This package provides a high level interface to the sockets 
  API. Most of the features are implemented. This high level
  and portable interface is based on the GNAT.Sockets.Thin API
  which is a thin binding to the OS sockets API.

NF-314-7110-008 New package GNAT.Most_Recent_Exception

  This package provides subprograms giving access to the
  exception occurrence, or exception occurrence access for
  the most recently raised exception. Unlike the routines
  in GNAT.Current_Exceptions, these routines do not have to
  be called statically from within an exception handler.

NF-314-7207-004 Issue error for bad Source_Reference pragma

  The Source_Reference pragma is (and always has been)
  required to be the first line of the file. This is now
  clearly documented, and a diagnostic is issued if the
  first Source_Reference pragma is not the first line in
  the file. See also NF-314-7515-007
  pragma appears other than in the first line of the file.

NF-314-7207-006 Warn when Duration unexpectedly used

  A new warning has been added when a universal fixed
  expression is interpreted as type Standard.Duration.
  Although this is correct according to RM semantics,
  it is almost always suspicious and represents an
  unintended meaning.

NF-314-7215-008 Improve msg for missing WITH of predef unit

  The error message handling for cases of forgotten WITH's
  of predefined library routines has been improved.

NF-314-7314-004 Remove useless initialization checks

  Initialization procedures for arrays were doing
  unnecessary subscript range checks, that have now
  been suppressed, since an out of range condition is
  impossible in this context.

NF-314-7319-005 Traceback support for VxWorks PowerPC/Alpha

  The support for absolute tracebacks (via GNAT.Traceback
  or the -E gnatbind switch) has been added under VxWorks
  for the PowerPC and Alpha architectures.

NF-314-7418-008 New switch for gnatchop to exit on errors

  The new -x gnatchop switch causes gnatchop to exit on
  detecting parse errors. Now gnatchop also sets the exit
  status to indicate errors.

NF-314-7425-012 Traceback support for HPUX

  Traceback support is now available for HPUX. This means
  that the packages GNAT.Traceback, GNAT.Traceback.Symbolic
  can be used, and that tracebacks are available if a
  program is terminated by an unhandled exception.

NF-314-7506-010 Improve message for access param comparison

  A comparison of an access parameter with null is illegal.
  This was always caught by GNAT, but with a confusing error
  message that complained about the types of the operands.
  Now a specific error mesage is given pointing out that it
  is not allowed for an access parameter to be null in the
  first place.

NF-314-7509-002 Improve warning for possibly null values

  The warning for possibly null values has been improved
  to be more precise and to catch some previously
  uncaught cases.

NF-314-7515-007 Multiple Source_Reference pragmas allowed

  It is now permitted for a single file to have more than
  one Source_Reference pragma. All pragmas must refer to
  the same original file, but the sections referenced need
  not be contiguous. This permits correct processing of
  files with configuration pragmas that are chopped using
  gnatchop with the -c and -r switches.

NF-314-7516-012 Better warning messages for Storage_Error

  In some cases, a warning about possible storage error was
  posted on the offending statement in a generic template.
  Now the message is always on the relevant instantiation
  with a pointer to the generic template location.

NF-314-7524-009 GNAT version string is in executable

  The executable now contains a string identifying the
  GNAT version in the form "GNAT Version: xxx(xxx)" where
  xxx(xxx) is the version number. The external name of
  this constant is __gnat_version.

NF-314-7530-009 Consistency checking for -gnatE mode

  Units compiled with -gnatE and without -gnatE can be
  mixed under certain conditions, now properly documented
  in the GNAT Users Guide. The binder now checks that the
  rules for safe mixing are properly followed.

NF-314-7531-010 VMS tasking performance improvements

  Upcalls are no longer turned on by default, with
  appropriate changes made in the runtime to support this,
  especially in delays and interrupt handling.

NF-314-7606-012 Improve equality ambiguity error messages

  In the case of ambiguous operands for equality, -gnatf
  now gives details on the possible resolutions discovered
  by the compiler, making it easy to diagnose the cause of
  this error in non-obvious situations.

NF-314-7607-007 Improved control for NT temporary files

  Under NT, it is now possible to control where temporary
  files are created. First, the TMP environment variable
  is checked, and if this is set, it specifies the
  directory to be used. If TMP is not set, then c:\temp
  is used. If both of these checks fail, then, and only
  then, is the current working directory used.

NF-314-7611-007 Warnings for WITH of internal GNAT unit

  The only units that should be WITH'ed by application
  programs are those that are documented in the RM or
  in the GNAT documentation. Any WITH of an internal
  GNAT implementation unit not documented in one of
  these two locations now generates a warning. This
  warning can be controlled individually by use of
  the -gnatwi/-gnatwI switches. It is on by default.

NF-314-7614-005 Avoid use of a-types.h in runtime

  The use of a-types.h is now avoided in building the
  runtime library. This reduces unnecessary symbol table
  and debug information

NF-314-7619-008 Access to source related information

  A new package GNAT.Source_Info provides some useful
  utility subprograms that provide access to source code
  informations known at compile time, such as file name,
  line number and enclosing entity.

NF-314-7620-002 More flexible source file naming

  The Source_File_Name pragma has been enhanced so that it
  can provide general pattern driven rules for constructing
  file names. The scheme is powerful enough to accomodate
  all common schemes for deriving file names from unit names
  that we are aware of, and in particular it supports standard
  schemes used by other Ada 95 compilers. This means that for
  most purposes the large set of Source_File_Name pragmas can
  be replaced by two pragmas, giving pattern rules for bodies
  and specs.

NF-314-7622-004 New packages for CGI programming

  A new package GNAT.CGI provides basic services for CGI
  (Common Gateway Interface) programming. A subsidiary
  package GNAT.CGI.Cookies provides facilities for dealing
  with "cookies" (data kept in Web client software). A
  third package GNAT.CGI.Debug provides debugging facliities.
  Between them, these packages enable an easy interface for
  Web programming from Ada.

NF-314-7626-013 Automatic backtraces during exception handling

  A new package GNAT.Exception_Traces is now available for
  platforms on which the backtrace features is implemented.
  This provides a feature for enabling automatic output of
  backtraces upon exception occurrences. Two options are
  available, enabling traces either for every occurrence
  or only for occurrences that are not caught by a user
  defined handler. The latter is typically useful to get
  traces when a task dies because of an unhandled exception.

NF-314-7708-001 New Setenv procedure in GNAT.OS_Lib.

  A procedure Setenv has been added in GNAT.OS_Lib. This
  procedure can be used to add or remove environment variables
  for the current and child process. This is not yet supported
  under VMS, but is fully supported for all other GNAT ports.

NF-314-7709-004 New unit GNAT.AWK (AWK style file parsing)

  A new package GNAT.AWK (file g-awk.ads) provides AWK-like
  file parsing with an easy interface for parsing one or
  more files containing formatted data. The file is viewed
  as a database where each record is a line and a field is
  a data element in this line.

NF-314-7711-001 New function Paren_Count in GNAT.Regpat

  A new function Paren_Count is now provided in GNAT.Regpat
  to return the maximum number of parentheses pairs in the
  compiled regular-expression.

NF-314-7712-005 Support for honoring gcc -fno-common

  The -fno-common gcc command line option is now recognized.
  The use of this option causes the allocation of uninitialized
  global variables to be moved to the bss section of the object
  file, rather than generating them as common blocks. This
  solves problems caused by the presence of a symbol both in a
  library and in an explicitly linked object file.

NF-314-7713-002 Improved error message placement

  The error message noting that only subtype marks can be
  used in a generic array formal are now more accurately
  placed and point specifically to the offending construct.

NF-314-7713-003 Front-end inlining

  The -gnatN switch enables front-end inlining. In this
  compilation mode, the front-end replaces a call to a
  subprogram that has an Inline pragma by the expanded body
  of the subprogram, provided the body is short enough. This
  supplements the inlining performed by the GCC back-end, and
  replaces it altogether for targets where the GCC back-end
  is not used. 

NF-314-7717-001 Task_Name pragma provided to set task name

  A new pragma Task_Name can be used in a task definition
  to specify the name used for a task for debugging
  purposes and by Ada.Task_Identification.Image. The
  argument is the task name, and can be an expression
  referencing the task discriminants, allowing different
  names to be given to different instances of the same
  task type.

NF-314-7718-001 Linker_Options extensions now documented

  The documentation (GNAT Reference Manual) has been
  enhanced to contain full documentation of the GNAT
  implementation of the Linker_Options pragma. GNAT
  allows multiple arguments, and also allows the use
  of ASCII.NUL to separate arguments in a single string.

NF-314-7718-003 New warning option to detect hiding

  New flags -gnatwh/-gnatWH are provided to enable/disable
  checking for the case where an inner entity hides an
  outer one. This is of course legal, but in some
  environments such hiding is discouraged, and this
  warning option (which is by default off) can be used
  to enforce this requirement. Note that the common case
  of one character identifiers such as I,J,K is excluded
  from consideration.

NF-314-7721-002 Improved range analysis for subtraction

  The circuit for range analysis for subtraction has been
  enhanced. This eliminates some range checks, and some
  additional warnings at compile time for cases where the
  result is known to  be out of range.

NF-314-7721-003 Implement range analysis 'Length

  Range analysis for the Length attribute has been added,
  resulting in elimination of some range checks, and also
  some additional warnings at compile time for cases where
  the result is known to be out of range

NF-314-7722-016 Improved error msg for name conflict

  The error message for a conflict between an enumeration
  literal and a later declared constant of the same name
  has been improved.

NF-314-7723-005 GLIDE xref works even if compile errors

  The new switch -gnatQ can be used to force generation of
  an ALI file even if there are compile errors. This is
  most useful in connection with GLIDE and similar tools,
  since it means that cross-reference information is
  available even after compiler errors.

NF-314-7723-012 Unreferenced labels generate warnings

  In -gnatwu mode, GNAT now diagnoses labels that are not
  referenced other than by their initial occurrence.

NF-314-7731-012 New unit GNAT.Dynamic_Tables

  A new package GNAT.Dynamic_Tables provides a resizable
  one-dimensional array. It is similar to GNAT.Table except
  that the table type is a declared type, so that it can be
  used in more general contexts.

NF-314-7801-005 Warning for aliased discriminanted objects

  GNAT now generates a warning for an assignment to an
  aliased discriminated object that is known to generate
  a constraint error at run time.

NF-314-7802-002 GLIDE can go to any file in error message

  When an error message from the compiler includes several
  file:line references, it is now possible to click on any
  of them to display the appropriate file, instead of just
  the first one.

NF-314-7814-013 x86 stack traceback for foreign threads

  Under x86 targets it is possible to get the stack
  traceback through a foreign thread. This is true for
  unhandled exceptions and for GNAT.Traceback services.

NF-314-7817-001 GNAT now compatible with Solaris 2.8

  GNAT is now fully compatible with Solaris 2.8. This
  includes proper building and operation of the florist
  package (which did need some modifications to be
  2.8 compatible).

NF-314-7820-008 Better 'Valid handling for large subtypes

  If an object of a discrete type has a larger size than the
  base type (e.g. from the use of a component clause in a
  record representation clause), then 'Valid will check all
  the bits of the object (previously the code simply used
  part of the field, which was an allowable implementation
  according to the RM, but nevertheless surprising).

NF-314-7821-010 ASIS tutorial is available

  A simple hands-on ASIS tutorial is added to the ASIS
  distribution. It consists of two parts. One part is
  based on the asistant tool and the task is to get the
  initial experience with using ASIS queries. Another part
  is based on the ASIS application templates and the task
  is to implement simple ASIS tools starting from these
  templates. For all the tasks full documented solutions
  are provided.

NF-314-7821-008 ASIS application templates are available

  A set of ASIS application templates is added as a part
  of the ASIS distribution. This set contains the Ada
  components which are the same or very similar for
  many ASIS-based tools. These templates may be used
  as a "quick start" for ASIS beginners.

NF-314-7822-009 Dynamic elaboration checks improved

  Elaboration checks are suppressed for calls to
  subprograms in packages to which a pragma Elaborate
  applies. The cases of Elaborate_All and Elaborate_Body
  already suppressed the check, but checks were not
  suppressed for Elaborate.

NF-314-7822-016 Improved handling of unconstrained return

  On SGI Irix (o32 and n32), the implementation of return
  of unconstrained (variable length) items is improved to
  avoid the use of a secondary stack. This is a significant
  performance gain for some programs. This improvement will
  be propagated to other versions of GNAT in the future.

NF-314-7824-003 Symbolic tracebacks implemented on Tru64

  The package GNAT.Traceback.Symbolic is now implemented
  under Tru64 (DEC Unix).

NF-314-7826-009 gnatdll supports binder arguments

  Gnatdll now supports the -bargs parameter passing
  arguments to the binder. For example, this can be
  used to build a DLL with stack tracebacks stored
  in the exception occurences (gnatbind -E option).

NF-314-7826-010 pragma Comment restriction removed

  The placement of pragma Comment is now unrestricted.
  This pragma can appear anywhere within the main unit,
  including as the first line of the file.

NF-314-7827-011 control of warnings for address overlays

  The warning switch -gnatwo turns on overlay warnings for
  address clauses where implict initialization can cause
  the overlaid memory to be clobbered. The swich -gnatwO
  turns off these warnings. The warnings have been
  implemented for a while. What is new is allowing them
  to be selectively turned off (the default is that this
  warning is enabled).

NF-314-7829-002 Control over validity checking is provided

  GNAT now provides a new switch -gnatVx that allows you
  to control the level of validity checking. The options
  are n/d/f for none/default/full. None means no checking
  for invalid data, default (which is the default setting)
  provides sufficient checking to meet the requirements of
  the RM, and full provides extensive validity checking,
  particularly useful when used with Normalize_Scalars.

NF-314-7829-003 New warning for hiding loop variables

  A common mistake for those familiar with other languages
  is to fail to realize that a for loop implicitly declares
  the loop variable, and programmers provide a useless and
  unused outer level variable definition with the same
  name. GNAT now specifically detects this situation and
  provides an explicit warning.

NF-314-7830-008 ASIS Corresponding_Name_Definition_List

  The Asis.Expressions.Corresponding_Name_Definition_List
  query in ASIS for GNAT is now fully implemented.

NF-314-7830-014 New warning for overlay by access type

  The warning for possible unexpected initialization has
  been extended to include access types. The warning is
  generated if an access type has an address clause
  causing overlay, and there is no pragma Import, so
  that initialization to null will take place. Note that
  NF-314-7827-011 gives the capability of controlling such
  warnings. Note also that GNAT 3.13a had a (now corrected
  error) that caused such expected initializations to
  be omitted.

NF-314-7906-017 New package Ada.Interrupts.Signal

  A new package Ada.Interrupts.Signal (file a-intsig.ads)
  has been created to provide an easier and more portable
  way of generating Ada95 interrupts.

NF-314-7910-004 Uniform behavior for Slice subprograms

  In packages Ada.Strings.Bounded/Ada.Strings.Unbounded,
  the Slice function now returns with the bounds of the
  slice expressions, rather than with a lower bound of 1.
  This was discussed in the ISO WG9 ARG, and it was agreed
  that this was the preferable approach. This change also
  improves the efficiency of these two functions.

NF-314-7914-009 Optimization for object declarations

  If an object is declared with an unconstrained nominal
  type and the expression is a function call, it is in
  general necessary to compute the result of the call first
  and then copy that result into the object, after deter-
  mining the bounds. GNAT now suppresses that copy in many
  cases. The copy is still used if the type is controlled,
  if it is classwide, or if the object is declared at the
  library level.

NF-314-7918-012 Enhanced variant of Spawn in GNAT.OS_Lib

  In the package GNAT.OS_Lib, a new Spawn function now
  returns the exit status of the executed command as an
  Integer value. The existing Spawn procedure only gives
  a boolean result.

NF-314-7924-003 Immediate output switch (-gnate) replaced

  The immediate output switch -gnate is no longer defined,
  reflecting the fact that this is intended only for use
  in diagnostic mode following a compiler crash. In those
  cases where this is needed, the effect can be obtained
  by use of the -gnatdO debug switch. The purpose of this
  change is to avoid accidental use of this switch, which
  disables many useful error message circuits.

NF-314-7925-003 Protected types visible in entities menu

  In addition to subprograms, types and tasks, the entities
  menu in GLIDE now includes an entry for protected objects
  and types. This is also available in the speedbar panel.

NF-314-7926-006 Allow SPARK annotations in -gnatyc mode

  The -gnatyc mode now allows comments starting with --x
  where x is any special character in the lower half of
  the ASCII range (16#21#..16#2F#,16#3A#..16#3F#). This
  in particular allows the --# comments that appear as
  annotations in the Praxis SPARK language.

NF-314-7929-004 Value_Size and Object_Size output by -gnatR

  The -gnatR switch now outputs Value_Size and Object_Size
  separately for types where these two values are different.
  If the values are the same, then the output simply lists
  this common value as the Size value.

NF-314-7930-001 Value_Size and Object_Size for all types.

  The Value_Size and Object_Size can now be separately
  specified for composite types (records and arrays). The
  meaning is as for scalar types. The Value_Size is used
  for unchecked conversion and packing purposes, and the
  Object_Size is used for allocation of objects.

NF-314-7930-006 New attribute Standard'Wchar_T_Size

  This attribute returns the size of the C type wchar_t,
  which may differ from the Ada Wide_Character type. The
  attribute is primarily intended for the construction
  of the wchar_t type in Interfaces.C.

NF-314-7930-007 Changed children of System to be pure

  Many more packages in the System hierarchy have been marked
  pure. This change documents that the functions in those
  packages are in fact side-effect free, which gives the
  compiler more optimization opportunities.

NF-314-7931-001 Additional in-place assignments for aggregates

  Assignments of the form:  S (1 .. N) := (others => Expr);
  are now performed in place, without generating a temporary
  for the aggregate (as long as Expr is independent of S,
  of course). In addition, array assignments where the
  right-hand side is an aggregate with only an others clause
  are performed in place even if the bounds of the array are
  non-static.

NF-314-7931-002 Improved handling of enumeration image tables

  The handling of enumeration type image tables (for support
  of the Value, Image, and Width attributes for enumeration
  types has been improved). The tables are now generated
  statically, and are significantly smaller than they were
  previously (1-4 bytes overhead per entry instead of 12-15).

NF-314-7931-003 NT Win32Ada binding reformatted for -gnaty

  The sources of Win32Ada binding were reformatted to meet
  the style requirements for compiling with the -gnaty switch.

NF-314-8001-002 The -gnatg switch is now fully documented

  The -gnatg switch is the GNAT internal implementation switch.
  It is intended only for use by GNAT itself. The documentation
  now fully describes this switch and explains why it should
  not be used by application programs.

NF-314-8004-004 Unchecked_Conversion now fully documented

  The GNAT Reference Manual now contains complete documentation
  on the approach used by GNAT in handling unchecked
  conversions where the sizes of the source and target types
  are different.

NF-314-8006-002 Improved output for representation information

  The -gnatR switch now takes an optional parameter which can
  have the value 0,1,2. No representation output is generated
  in -gnatR0 mode. In -gnatR1 (same as -gnatR), representation
  information is generated for arrays and records. For -gnatR2,
  representation information for all user declared types and
  objects is generated.

NF-314-8010-003 NT Detect duplicate Value/Object_Size clauses

  The appearence of more than one Value_Size or Object_Size
  clause for a single entity, which was previously allowed
  (with the earlier one being ignored), is now detected as
  an error, which seems more appropriate and more consistent
  with the treatment of duplicate Size clauses.

NF-314-8010-005 Spell checking in GLIDE

  The standard ispell command can now be used to spell check
  the comments while editing an Ada source file. The checking
  only applies to comments and not to Ada source code other
  than comments.

NF-314-8010-012 More flexible GNAT.Threads.Create_Thread

  Create_Thread now returns the task id so that this value is
  easily known on the client side.

NF-314-8012-002 New warning for unexpected rounding

  Warn in cases where the static evaluation rules of Ada as
  described in RM 4.9(38) result in different rounding than
  would have been obtained at runtime. This rule is a rather
  surprising one, and has caused confusion in the past.

NF-314-8014-002 Additional information on unused entities

  Warning messages on unused entities (generated by compiling
  with -gnatwu) now indicate the kind (variable, function, etc)
  of the entity to which the warning applies.

  Cross-references are now generated when an entity appears as
  a default actual in an instantiation. This inhibits warnings
  if the entity is not used explicitly elsewhere, and is also
  used by tools that rely on xref information (e.g. GLIDE).

NF-314-8019-001 Documentation on variant object size

  An extensive section has been added to the GNAT Reference
  manual describing how GNAT treats the Size attribute when
  applied to variant record objects.

NF-314-8022-004 Improved documentation for -gnato switch

  More extensive documentation is provided for the -gnato
  switch that enables overflow checking, emphasizing that
  overflow checking is off by default, and explaining the
  rationale behind treating overflow checks differently
  from other kinds of range checks.

NF-314-8023-003 Document Size Limit

  GNAT enforces a maximum Size of objects of 2**31-1, which
  since Size is in bits, corresponds to a size of 256
  megabytes. This limit has always been enforced, but it
  is now properly documented in the GNAT Reference Manual.

NF-314-8023-005 Improved documentation for GNAT.Task_Lock

  The documentation for GNAT.Task_Lock has been enhanced to
  make it clear that calling Lock multiple times from the
  same task works as expected for nested use of Lock/Unlock.

NF-314-8024-002 C_Pass_By_Copy convention now standardized

  The implementation of the C_Pass_By_Copy convention has
  been modified to be consistent with the agreed specification
  in AI95-00131, which is part of the official technical
  corrigendum for Ada 95. For GNAT, the modification is that
  now C_Pass_By_Copy is rejected for any entities other than
  record types and subtypes. Convention C can always be used
  instead for other entities (GNAT used to treat C_Pass_By_Copy
  as identical to C for other entities).

NF-314-8025-009 Documentation of GNAT Library Units

  The GNAT Reference Manual now contains complete reference
  documentation for all GNAT specific units in the GNAT,
  System, Interfaces, and System. This includes several
  units that have been present in GNAT, but not previously
  documented, including System.Address_Image (to convert
  Address values to strings) and Ada.Command_Line.Remove
  (for logically removing command line arguments).

NF-314-8028-002 SIGUSR1/SIGUSR2 now handled in GNU/Linux

  Using native threads (aka LinuxThreads), it was not possible
  to handle the SIGUSR1 and SIGUSR2 signals. This limitation
  has now been removed. This change affects all versions of
  GNAT for GNU/Linux including Debian GNU/Linux and also
  Redhat Linux.

NF-314-8030-011 New style-check for exit of named loop

  The -gnatye switch now includes checking for missing exit
  labels. It will now cause a warning to be posted if an exit
  statement appears which refers to a labeled loop but the
  statement does not include the label.

NF-314-8030-014 Improved output from gnatbind -e switch

  The output now excludes all output for gnat internal units.
  The dependency information for internal units is of interest
  only for implementors, and tends to be voluminous and useless
  for normal use. A -de debug flag is introduced to provide the
  old behavior for system implementors use.

NF-314-8031-012 More extensive misspelling warnings

  The error messages for undefined variables now include
  additional cases where a suggestion of a possible misspelling
  is provided. This message now includes cases where the
  entity is in a with'ed package and has explicit
  qualification.

NF-314-8031-013 Nested package bodies included in -gnatR

  The output from the -gnatR switch now includes declarations
  that appear in nested package bodies.

NF-314-8031-019 Clear labeling of output in -gnatR output

  The output from the -gnatR switch now makes it clear whether
  the unit for which representation information is listed is
  a spec or a body.

NF-314-8101-005 Alignment warnings for bad address clauses

  It is the program's responsibility to ensure that the value
  in an address clause is consistent with (i.e. a multiple of)
  the alignment of the object to which it is applied, and in
  general this cannot be checked at compile time. However it
  is possible to post warnings in some cases where the value
  is known at compile time and is clearly wrong, and this is
  now done.

NF-314-8104-007 New Glide variable ada-prj-gnatfind-switches

  This variable can be customized to change the default
  switches used for gnatfind when you select the menu item
  "Show All References". For example this can be used to
  add the -a switch, in case you often work with read-only
  ALI files.

NF-314-8105-007 New convention Win32 equivalent to Stdcall

  The convention Win32 is now recognized as equivalent to
  Stdcall or DLL (all three conventions are identical in
  effect and considered to be conformant). This eases porting
  of code from other compilers that use this convention name.

NF-314-8106-010 New unit Ada.Exceptions.Is_Null_Occurrence

  This GNAT addition to the Ada hierarchy allows a program
  to test if an occurrence is the null occurrence
  (Null_Occurrence) without enerating an exception. This
  capability is not present in the predefined subprograms
  in Ada.Exceptions.

NF-314-8106-010 Warnings for useless type conversions

  A warning can be generated for type conversions of the
  form a(b) where b is a simple entity name which is of
  type a (i.e. the conversion has no effect). This warning
  is normally off but can be set on by the use of
  @code{-gnatwr}.

NF-314-8106-011 Warnings for useless assignments

  A warning can be generated for assignments of the
  form a := a; (i.e. assignments of a variable to itself)
  which are obviously useless. This warning
  is normally off but can be set on by the use of
  @code{-gnatwr}.

NF-314-8108-006 Warnings for accidental hiding by child unit

  A warning is generated when a child unit in the context
  of a parent hides a compilation unit of the same name.
  For example, Foo.Ada, if it appears in the context of the
  body of Foo, will hide an occurrence of the predefined Ada
  in the same context, which can lead to surprising visibility
  errors later on.

NF-314-8108-004 Better error messages for bad array aggregate

  If an array aggregate is missing elements (e.g. it has the
  index values 1,2,8,9 and is missing 3 .. 7), the error
  messages will now give a full list of missing values.

 NF-314-8114-002 Named numbers included in -gnatwu check

  The warning option -gnatwu (check unreferenced entities) now
  includes named numbers, so unreferenced named numbers will
  now also cause warnings to be generated.

NF-314-8114-016 Better msg placement for with'ed unit not found

  In some cases, the error message for a WITH that directly
  or indirectly lead to a file not found could be placed on
  a location other than the WITH statement. It is now always
  placed in the most convenient place.

NF-314-8116-001 Support for wide char to string conversions

  The library units System.Wch_Con and System.Wch_Cnv provide
  a method for converting between wide characters and the
  corresponding string representation, using any of the
  implemented methods for encoding.

NF-314-8118-003 Backtrace decorators for automatic backtraces

  GNAT.Exception_Traces now includes a backtrace decoration
  facility, allowing customization of the way the set of
  addresses for a backtrace is output. A typical use of
  this feature is to provide a function that returns the
  symbolic information associated with each address, as
  computed by GNAT.Traceback.Symbolic.

NF-314-8120-006 Improved dead code detection

  The warning circuitry for unreachable code has been improved.
  Now an IF or CASE statement, all of whose statement sequence
  end with some transfer of control is recognized, and code
  after such a statement is flagged as dead code with an
  appropriate warning.

NF-314-8127-007 Improved parser error messages

  Some improvements in parser error messages have been made.
  If "|" is used in an expression in an inappropriate manner,
  the parser suggests that "or" may have been intended. If a
  component is declared in the visible part of a protected
  object, the diagnostic reminds that such components can
  only be in the private part.

NF-314-8203-008 Default thread library is now LinuxThreads

  Under the GNU/Linux operating system, the default tasking run
  time is now based on the native LinuxThreads library. The
  alternate FSU threads implementation is still available as
  an alternative (see file README.TASKING for more details).
  This change applies to all versions of GNU Linux, including
  Redhat Linux.

NF-314-8205-001 New package Ada.Characters.Wide_Latin_1

  This package provides definitions analogous to those in
  the RM defined package Ada.Characters.Latin_1 except that
  the type of the constants is Wide_Character instead of
  Character. The provision of this package is in accordance
  with RM (A.3(27)). Note: this package has been available
  for some time, but was not properly documented, so from
  a formal point of view was not available to application
  programs, but now it is a first class citizen which is
  fully documented.

NF-314-8213-003 More flexible placing of address clause

  Previously when an address clause and Import pragma were
  given for a subprogram, the pragma was required to be given
  first. There is now no restriction on the ordering.

NF-314-8214-004 Style violations are now warnings not errors

  Style errors resulting from the use of a pragma Style_Checks
  or the -gnaty flag are now treated as warnings rather than
  errors, which means that an object file can be created if
  there are no other errors, and that also the compiler will
  find semantic problems even if there are syntactic style
  errors. If the previous behavior of treating these as errors
  is desired, the -gnatwe flag can be used.

NF-314-8218-005 New Elaboration_Checks pragma

  A new configuration pragma Elaboration_Checks can be used
  to select the RM dynamic model of elaboration or the GNAT
  default static model. This may be used in gnat.adc for
  partition wide application, or within sources for unit
  by unit control. See also feature NF-314-7530-009.

NF-314-8218-009 More efficient memory allocation

  The GNAT run-time file a-raise.c can now easily be recompiled
  with lock suppression to improve the efficiency of memory
  allocation and deallocation if certain conditions are met.
  See the comment on NO_LOCK in a-raise.c itself for details.

NF-314-8220-005 Generic sort packages in GNAT now Pure

  The units GNAT.Heap_Sort_G (g-hesorg.ads), GNAT.Bubble_Sort_G
  (g-busorg.ads) are now Pure instead of Preelaborate, allowing
  them to be with'ed and instantiated by Pure clients.

NF-314-8220-006 Automatic float control for Float Input-Output

  Floating-point conversion in Text_IO no longer relies on the
  floating-point processor being correctly set. This means that
  the need for explicit calls to GNAT.Float_Reset is limited to
  programs which explicitly use Long_Long_Float. This feature
  is especially helpful on NT, where system services of all
  kinds seem to reset the floating-processor into low precision
  mode.

NF-314-8225-001 Project file capability for gnatmake

  The gnatmake utility is now project file aware, and can be
  used with the new GNAT Project Files (see new documentation
  section in the users guide). It now accepts the new
  switches -Pproject, -vPx and -Xname=value.

NF-314-8226-007 Better handling of invalid enum opnds for Image

  The Image function for enumeration types yielded rubbish
  strings for abnormal and invalid operands (e.g. created by
  unchecked conversions). A validity check (subject to control
  by the -gnatV switch) is now performed so that an exception
  (Constraint_Error) is raised for an invalid operand.

NF-314-8230-001 Style check option for ordered subprograms

  The -gnatyo switch (ORDERED_SUBPROGRAMS in the VMS version)
  activates a style check that subprogram bodies within a given
  scope (e.g. a package body) must be in alphabetical order.

NF-314-8302-004 Project file capability for gnatls

  The gnatls utility is now project aware, and can be used with
  the new GNAT Project Files (see new documentation section in
  the users guide). It now accepts the new switches -Pproject,
  -vPx and -Xname=value.

NF-314-8304-001 RPM packages are now provided for GNU/Linux

  Under GNU/Linux, GNAT is now provided as either a compressed
  tar file as before, or as RPM packages which means that the
  installation is simplified on various versions of GNU/Linux,
  including Redhat Linux, and Debian GNU/Linux.

NF-314-8305-003 Better folding of attributes of objects

  The Alignment, Size, First, Last, Length, and Component_Size
  attributes applied to objects are now treated as compile time
  constants if the value can be determined by the front end.

NF-314-8305-005 Florist now configurable without pthreads

  In order to mix POSIX calls with a GNAT tasking run time
  based on non posix compliant thread libraries (e.g libathread
  under IRIX o32), Florist implements with a new configure
  option --disable-threads. See the INSTALL file in the
  Florist distribution for more details.

NF-314-8317-003 Floating-point range checks now catch NaN's.

  In GNAT, Machine_Overflows is False for floating-point types,
  which means that operations such as 0.0/0.0 can generate
  NaN's. The RM does not require that NaN's be caught by
  subsequent range checks, but it is certainly convenient
  if this is the case, and GNAT has now been modified so
  that NaN's will always fail any range check and cause
  Constraint_Error to be raised.

NF-314-8322-016 Program units now distinguished by gnatxref

  The cross-reference section of the ali file now distinguishes
  between generic and non-generic units, and between functions,
  packages and procedures. The gnatxref utility has been
  enhanced to take advantage of this new information and
  now distinguishes these different kinds of units in
  identification of entities.

NF-314-8323-004 Additional documentation on elaboration issues.

  A new section has been added to the users guide, entitled
  "Additional Elaboration Order Considerations", which
  discusses the issue of elaboration ordering requirements
  that are not dictated by the language, but rather arise
  out of extra-lingual logic requirements of the program.

NF-314-8328-012 Better handling of max size of variant record

  If a discriminant range is wider than it needs to be (e.g.
  we have a Natural discriminant, which is used as the upper
  bound of an array whose maximum bound is 10), then GNAT now
  uses the maximum array bound in computing the maximum size
  of the record, at least in most simple cases. In any case
  it is a good idea to use a discriminant range that reflects
  the range of actual valid values.

NF-314-8330-008 End positions of constructs now in ali file

  The cross-reference information in the ALI file now includes
  all labels on END lines, and also marks the end of specs and
  bodies of tasks, subprograms, packages, protected types,
  blocks, loops, entries and accept bodies. This information
  is provided in the output from gnatxref.

NF-314-8407-012 Objects and types distinguished by gnatxref

  The cross-reference output output by gnatxref distinguishes
  type and object entities (for example an entity is labeled
  as an "integer type" or "integer object", rather than simply
  being identified as "Type: integer" in both cases).

NF-314-8409-001 Tree output can be forced with -gnatQ -gnatt

  It is now possible to force tree output using a combination
  of the -gnatQ and -gnatt switches (it may also be appropriate
  to use -gnatq in this context). This allows the use of ASIS
  on some illegal programs, though if the error is severe
  enough to cause a malformed tree, ASIS may blow up when
  presented such a tree.

NF-314-8411-002 Boolean types now distinguished by gnatxref

  The cross-reference section of the ali file now distinguishes
  between boolean types and other enumeration types, and the
  gnatxref utility has been enhanced to take advantage of this
  new information and now distinguishes these types in the
  entity identification information.

NF-314-8412-006 New option for gnatlink for object list file

  The switch -f for gnatlink forces the generation of a
  separate file containing a list of objects for the linker,
  even if the threshhold for command line length is not
  exceeded. This is useful to get around some cases of
  unexpectedly exceeding this limit (e.g. due to system
  environment issues that reduce the limit). The switch
  can only be used on targets for which linker object list
  files are implemented. In addition the limit for
  generation of such files on Tru Unix (Alpha) has been
  reduced to 10_000, since on some systems the previous
  limit (30_000) was too high.

NF-314-8412-010 New file routines in GNAT.OS_Lib

  A new routine has been added into GNAT.OS_Lib to rename
  a file. All routines dealing with files now have two
  implementations: one using the String type and one using
  an address to specify the filename. This is a general
  clean up to fix inconsistencies.

NF-314-8413-005 Stream size now taken from first subtype

  Previously GNAT was using the size of the base type to
  determine the number of storage units for use by stream
  routines for elementary types. This is now changed to
  meet the new recommendations of AI-195, which suggest
  using the size of the first subtype. GNAT now uses the
  size of the first subtype for this determination.

NF-314-8420-006 New tasking run time under Solaris

  Under Solaris Sparc, GNAT now comes with a new tasking run
  time based on posix threads (rts-pthread). This run time
  has the advantage of being mostly shared across all
  POSIX compliant thread implementations, and also provides
  under Solaris 8 the semantics of PTHREAD_PRIO_PROTECT and
  PTHREAD_PRIO_INHERIT. The predefined Ceiling_Locking
  policy for pragma Locking_Policy is used to specify
  PTHREAD_PRIO_PROTECT, and a new implementation defined
  policy, Inheritance_Locking, can be used to specify the
  use of PTHREAD_PRIO_INHERIT.

NF-314-8430-004 Enhanced style checking for references

  For cases in which there is a separate body entity
  (packages, subprograms, entries, tasks, protected
  types, accept statements, subprogram formals), the
  switch -gnatyr now checks the casing of the body
  entity to make sure that it is the same as that of
  the spec entity.

NF-314-8509-011 New package GNAT.Expect

  This package provides a set of subprograms similar to what
  is available with the standard Tcl Expect tool, allowing
  you to easily spawn and communicate with an external
  process. You can use this package to send commands or
  inputs to the process, and compare the output with some
  expected regular expression.

NF-314-8514-003 Improved error message for access discriminants

  When declaring a self-referential structure as a limited
  record that contains a discriminated component that points
  to the enclosing record, a common mistake is to define the
  type of the component as having a discriminant with a general
  access type, rather than as a proper access discriminant.
  This results in an accessibility violation (RM 3.10.2 (21)).
  The new message indicates that the error is in the
  discriminant declaration itself.

NF-314-8522-001 Solaris programs do not depend on libthread.so

  On the Solaris operating system, for programs that do not
  use tasking, the generated executables no longer depend on
  libthread.so so that a link can be successfuly completed
  without requiring this library to be present.

NF-314-8526-003 Record'Size evaluated at compile time

  In the case where the size of a record type is specified
  using a size representation attribute clause, the front
  end now folds the attribute reference at compile time. The
  result is still not a static expression, but the quality
  of code is improved, and in addition, representation
  clauses (such as component clauses) that require values
  and types to be statically known at compile time are
  permitted in additional cases as a result of this change.

NF-314-8530-002 Better support for the PPC 860 in GNAT for VxWorks

  GNAT for VxWorks/PowerPC now comes with an alternate GNAT
  library compiled with software floating point support.

