======================================================
GNAT 5.03 NEW FEATURES LIST Current as of Jan 13, 2006
======================================================

Copyright (c) 2004-2005, Ada Core Technologies

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

An ISO date (YYYY-MM-DD) appears in parentheses after the
description line. This date shows the implementation date
of the feature. Any 5.03w wavefront subsequent to this
date will contain the indicated feature, as will any
subsequent releases.

NF-503-E331-011 XDR stream attributes raise Data_Error (2005-06-11)

  Per AI95-00132, the default implementation for stream-oriented
  attributes must raise Ada.IO_Exceptions.End_Error when end-of-stream
  is encountered during a Read operation. For consistency's sake, the
  XDR version now defines System.Stream_Attributes.Data_Error to be a
  renaming of End_Error as well.

NF-503-E205-005 Tornado 653 user hook called after interrupt (2005-02-17)

  In system mode on Tornado 653, a user-defined hook is
  called every-time a breakpoint is hit. The debugger has
  been enhanced such that interrupting asynchronously the
  target causes the same hook to be called. The interruption
  is achieved by either pressing Control-C, or by pressing
  the stop button in GPS.

NF-503-E131-004 Output per-file call graph info (2005-05-25)

  A new GCC switch -fcallgraph-info has been implemented.
  It makes the compiler output callgraph information for
  the program, on a per-file basis, to auxiliary text
  files that can be easily parsed or viewed.

NF-503-DB29-008 Additional warning on unreferenced entities (2004-11-29)

  When warnings are enabled, the compiler now reports
  properly on unreferenced entities declared in subprogram
  bodies that have a previous subprogram declaration.
  Previously, messages were only produced for entities in
  bodies without a prior declaration.

NF-503-DB26-008 Output per-function stack usage (2005-05-25)

  A new GCC switch -fstack-usage has been implemented. It
  makes the compiler output stack usage information for the
  program, on a per-function basis, to auxiliary text files
  that can be easily parsed.

NF-503-DB23-005 New project path section for gnatls -v (2004-11-24)

  When gnatls -v is invoked, in addition to the source and
  object path section, a new section indicating the project
  search path is displayed. The project path is found
  in the environment variable ADA_PROJECT_PATH, or if this
  environment variable is not defined or empty, it defaults
  to <prefix>/lib/gnat, where <prefix> is the intallation
  directory of GNAT.

NF-503-DB01-005 Independent control of extra paren check (2004-11-13)

  The warning check for extra parens around conditional
  expressions has been removed from the redundant construct
  warning, and been replaced by a new style option -gnatyx
  (STYLE_CHECKS=XTRA_PARENS in VMS) which controls this
  specific check. This change reflects the observation
  that this is really more of a style check, and also
  allows it to be controlled independently of the other
  useful redundant construct warnings.

NF-503-DA26-004 Improved definition of No_Streams (2004-11-01)

  The restriction No_Streams is now more useful. It only
  disallows actual creation of objects of a stream type
  (by either an object declaration or an allocator). But
  it does not disallow withing Ada.Streams, which means
  that library packages with such with statements can
  still be used, provided no stream object is created.

NF-503-DA25-027 GNAAMP saves asm file after errors (2004-10-27)

  On the AAMP target only, if there are errors reported
  by the back end, such as for a stack frame exceeding the
  target limit, an assembly file will still be generated
  as an aid to the programmer in determining the source
  of the errors.

NF-503-DA11-016 Better handling of aggregates in allocators (2004-10-14)

  For many aggregates that are used as expressions in
  allocators, GNAT builds these arrays directly in dynamic
  storage, rather than constructing them first on the stack
  and then copying them to the heap. This allows the
  handling of aggregates that would otherwise lead to stack
  overflow.

NF-503-DA08-015 No warnings for gnatclean -q (2004-10-09)

  When gnatclean is invoked with -q and not with -v,
  warnings for undeletable files are not output.

NF-503-DA08-014 New gnatclean switch -f (2004-10-09)

  A new switch -f has been added to gnatclean to allow
  deletions of files that are not writable when the user
  has write permission on the containing directory.

NF-503-DA04-005 Facilities for setting file permissions (2004-10-06)

  New subprograms Set_Executable, Set_Writable and
  Set_Read_Only have been added to the GNAT.OS_Lib
  package. They allow setting the corresponding file
  permission flags in the file directory entry.

NF-503-D923-025 Improved dead code checking for blocks (2004-09-28)

  The circuitry for detecting unreachable code has been
  enhanced so that it works for the case of a block where
  all exit paths from the block (including any exception
  handlers) terminate with an unconditional transfer of
  control. In such cases, the statement after the block
  is unreachable, and this is now properly detected and
  generates a warning message.

NF-503-D923-010 Virtual extension of Library Projects (2004-10-13)

  When using "extends all", Library Projects may be
  virtually extended, however the virtual extending project
  is no longer a library project.

NF-503-D913-001 Avoid possible reserved word Interface (2004-09-20)

  It seems possible, perhaps likely, that INTERFACE will
  become a new reserved word in the next Ada standard. To
  avoid being forced to make an incompatible change at a
  later point, we have decided to rename components in
  GNAT.Sockets.Option_Type at this point: Interface was
  renamed to Local_Interface, and Multiaddr was renamed
  to Multicast_Address. That means that you may need to
  modify programs explicitly mentioning these components.
  We recommend that at the same time you remove any other
  use of this identifier from your programs.

NF-503-D905-001 Packed arrays no longer initialized (2004-09-17)

  The compiler no longer generates initialization of small
  packed array variables to zero bits. This avoids the
  unexpected behavior of such variables in contexts where
  the initialization is visible (notably for address
  clauses and for pragma Import).

NF-503-D817-011 Documentation for -fverbose-asm (2004-08-17)

  The -fverbose-asm switch (in VMS /VERBOSE-ASM) is now
  documented. This has been available for some time but
  was not previously documented in the GNAT users guide.
  This switch is used in conjunction with -S to cause the
  resulting assembly language file to be annotated with
  names of variables.

NF-503-D813-011 GNAAMP breakpoints on procedure end line (2004-09-28)

  For the AAMP target, the compiler now generates LINE
  mark information for implicit return statements that
  immediately precede the end of a procedure to indicate
  the "end" line of the procedure. This allows a breakpoint
  to be set on the "end" line that will be triggered when
  the procedure reaches its end.

NF-503-D805-012 Compile more robust when using -gnatQ (2004-08-08)

  The use of -gnatQ occasionally results in internal errors
  resulting from bad syntactic trees. Another instance of
  this behavior has been corrected. The eventual intention
  is that all cases of bad programs are correctly handled
  using -gnatQ and none result in internal errors.

NF-503-D802-005 New gnatlink switches to create map files (2005-08-05)

  Two new switches have been added for gnatlink on platforms
  that support the creation of map files, -M<map> to create
  a map file with name <map> and -M to create a mapping file
  with name <mainprog>.map.

NF-503-D723-008 Enhanced variants of Spawn in GNAT.OS_Lib (2004-11-02)

  In package GNAT.OS_Lib, two new procedures Spawn have
  been added. These procedures redirect the output from
  the spawned program into either a file descriptor,
  or a file.

NF-503-D709-013 Improved loading time in GDB for VxWorks (2004-07-29)

  The time for GDB to read a object file and load it to the
  target has been significantly reduced; instead of buiding
  its complete debug table at load time, GDB now does it on
  demand.

NF-503-D707-004 OS_Lib.Spawn uses parent priority on Windows (2004-11-14)

  Processes launched with all spawn routines found in
  GNAT.OS_Lib are using the priority class of their parent
  on Windows. For example, this is the case for gnatmake
  where the compiler is launched with gnatmake's priority
  class. Therefore, it is now possible to control the
  priority of a project build.

NF-503-D704-002 New attribute Has_Access_Values (2004-07-06)

  The attribute Has_Access_Values may be applied to any
  type or subtype. The result is True if the subtype is
  an access type, or is a composite which has a component
  (at any level) that is an access type. The most useful
  application is when the prefix is a generic formal type.

NF-503-D701-008 Warnings for I/O of access values (2004-07-10)

  A new warning is activated if Direct_IO or Sequential_IO
  is instantiated with a type that contains access values.
  This is dubious since if the file is read back in when
  the accessed value is no longer available (e.g. in a
  different program), the result may be meaningless or
  even dangerous if there is an attempt to use the value.

NF-503-D701-003 Better message for bad representation clauses (2004-07-01)

  When an illegal representation clause for a primitive type
  is given, the error message now indicates the minimum
  power of 2 that would be a legal size specification for
  the type.

NF-503-D630-012 Better debugging for task entries (2004-07-29)

  For tasks waiting on a task entry, the commands "info
  task" and "info tasks" gives now the id of the task
  which is accepting the rendezvous.

NF-503-D629-009 Improved secondary stack handling (2004-07-31)

  For those cases where the secondary stack is still used
  for return of variable length values (see also D621-002),
  the code has been improved to reduce the number of calls
  to determine the current task, improving performance.

NF-503-D626-003 Project files allow null declarations (2004-06-26)

  Empty declaration "null;" may now be used in Project
  files everywhere a declaration is allowed. They have
  no effect.

NF-503-D623-007 New gnatdll's option to generate map file (2004-09-02)

  A new gnatdll option (-m) has been implemented to
  generate a map file.

NF-503-D621-014 Break during shared library elaboration (2004-07-06)

  There was a limitation in the mips-irix debugger that
  made breakpoints ineffective during the short period
  where the initialization code of each shared library
  is executed (this phase occurs during the loading of
  the program, before it is executed). As a consequence,
  it was not possible to stop the debugger during thia
  automatic elaboration of Standalone Libraries. This
  limitation has been lifted.

NF-503-D621-002 Reduced use of secondary stack (2004-07-06)

  Variant records that have default discriminants and do
  not contain variable length arrays no longer require the
  use of the secondary stack when values of such types are
  returned by a function. This results in significantly
  improved efficiency.

NF-503-D618-018 Improved handling of large arrays (2004-06-20)

  The inefficient size checks for large arrays have been
  entirely eliminated. Another benefit is that now it is
  possible to allocate much larger arrays, particularly
  on 64-bit systems.

NF-503-D617-009 Style check for max nesting level (2004-06-17)

  A new style switch (-gnatyLnnn, MAX_NESTING=nnn in VMS)
  allows restriction of the maximum nesting of source
  constructs (including loops, conditionals, subprograms,
  etc). This check is off by default.

NF-503-D617-002 gnat metric and extending project (2004-06-18)

  When gnat metric is called on an extending project,
  gnatmetric is called on all the extended project sources
  including the inherited sources, not only the sources
  that are defined or redefined in the extending project.

NF-503-D616-019 Improved code for array comparison (2004-06-19)

  The efficiency of the generated code for comparison of
  arrays in many simple cases has been greatly improved.

NF-503-D526-002 Lower minimum task stack size on Windows (2004-06-22)

  The minimum task stack size on Windows was 8kb. This
  has been lowered to 1kb to better support low memory
  footprint constraints.

NF-503-D522-009 Pragma Profile (Restricted) implemented (2004-06-12)

  The new Ada 2005 pragma Profile is now enhanced to allow
  Restricted as a parameter. This pragma may be used in Ada
  95 mode. The effect is the same as the previous pragma
  Restricted_Run_Time which is still recognized but which
  is considered to be obsolescent.

NF-503-D519-001 Improved performance for GNAT.HTable (2004-05-21)

  The default hashing algorithm for strings has been
  improved. The improvement is particularly noticeable
  for short strings.

NF-503-D517-003 Pragma Profile_Warnings implemented (2004-06-12)

  A new pragma Profile_Warnings is implemented which has
  the same form as pragma Profile, but activates the set
  of restrictions for the profile in warning mode rather
  than error mode.

NF-503-D517-001 Pragma Profile allowed in system.ads (2004-06-12)

  A pragma Profile may now be placed in system.ads. This
  allows a desired profile to be enforced autaomatically
  for a specific run-time library configuration.

NF-503-D514-013 Option for gnatpp to suppress backup copies (2004-05-26)

  A new option "-rnb" (/NO_BACKUP in VMS) is implemented
  for gnatpp. When this option is specified, gnatpp
  replaces the input source file by the reformatted
  version without creating any backup copy of the
  original source file.

NF-503-D511-024 Warning on pragma Unchecked_Union (2004-05-26)

  The usage of pragma Unchecked_Union does not constitute
  a reference to the argument of the pragma. Compiling with
  the -gnatwu switch will correctly emit a warning if the
  type is not referenced.

NF-503-D511-023 Warning on representation clause (2004-05-25)

  The usage of a representation clause does not constitute
  a reference to the argument type. Compiling with the
  -gnatwu switch will correctly emit a warning if the
  type is not referenced.

NF-503-D511-022 Warning on deferred constants (2004-05-25)

  The full declaration of a deferred constant does not
  constitute a reference. Compiling with the -gnatwu switch
  will correctly emit a warning if the constant is not
  referenced.

NF-503-D508-005 Concatenation allowed for pragma Eliminate (2004-05-08)

  The arguments for pragma Eliminate that previously used
  to require string literals now allow concatenations of
  string literals. This is particularly useful for the
  new form of the Source_Location argument, which can
  get quite long if long path names are used.

NF-503-D508-004 No line length check in config pragma file (2004-05-08)

  The parsing of configuration pragma files always did a
  line length check against the default maximum line size
  (typically 255 characters) and there is no way to use
  a -gnatyMnnn switch to override this since the pragma
  file is read before this switch is active. The compiler
  has been enhanced to ignore all line length checking
  during config pragma file scans, allowing arbitrary
  length (up to 32767 characters long) lines.

NF-503-D507-012 Asis.Extensions.Is_Exported function added (2004-05-10)

  This function checks if its argument is a defining name
  to which a valid pragma Export applies.

NF-503-D504-005 Exclusion of comment formatting in gnatpp (2004-05-14)

  An option ('-c0') is added to gnatpp which turns off all
  comment formatting, so the comments are just copied into
  the reformatted source exactly in the same form as in
  the source input file.

NF-503-D426-016 Change in error message of GNAT.Debug_Pool (2004-06-10)

  The error messages emitted by GNAT.Debug_Pool now start
  with "error:", like the compiler's, so that it is easier
  to search the output of your application for such errors.

NF-503-D426-012 Tasking support debugging Tru64 core file (2004-04-28)

  The debugger has been enhanced to provide better tasking
  support on Tru64 when inspecting a core file. The
  debugger is now able to print the list of tasks, and
  to switch from task to task. To take advantage of this
  feature, the core file must have been opened using
  read-write access, which is achieved by using the
  following command: "set write on". Beware that this
  will allow the debugger to write inside the core file,
  and therefore potentially change its contents. It is
  therefore recommended that the core file be backed up
  before being opened by the debugger.

NF-503-D425-003 New debugger command: start (2004-05-26)

  The debugger provides a new command named "start". It
  starts the execution of the program until it reaches
  the beginning of the main program, and works for all
  languages. It replaces the "begin" command, which was
  only supported for Ada. For upward-compatibility,
  "begin" is still provided as an alias of "start".

NF-503-D423-010 Optimization of local indirect calls (2004-04-26)

  If a value of a remote access-to-subprogram type
  designates a subprogram on the local partition, and
  pragma All_Calls_Remote does not apply to the enclosing
  library unit, dereferences of that value are now
  optimized as local calls instead of going through
  the Partition Communication System.

NF-503-D422-003 Check for duplicated export name (2004-07-10)

  A check is made for the case of an export name duplicated
  in a single compilation, and if this situation is found,
  a clear error message is given at compile time, instead
  of a mysterious assembler error.

NF-503-D420-006 Better exception support on Tru64 5.1b (2004-07-23)

  Added the required support for unwinding through signal
  handlers on Tru64 5.1b. It allows exception propagation
  through signal handlers when using the zero cost exception
  mechanism.

NF-503-D413-007 Better error msg for illegal indirect call (2004-04-16)

  If a call to a dereference of an access-to-subprogram
  value is made with actual parameters of the wrong type,
  the error message now indicates the name of the
  access-to-subprogram type if the -gnatf (full error
  messages) flag is in effect.

NF-503-D413-006 'kill' aborts all tasks in multi-tasks mode (2004-06-03)

  The debugger for VxWorks provides a way to kill all tasks
  in the application, instead of killing just the current
  task. It is now the default behavior of the kill command
  in multi-tasks mode.

NF-503-D404-002 Better error msg for comma between with/use (2004-04-04)

  If a comma is used instead of a semicolon between WITH
  and USE clauses, a clear error message is now given
  instead of a missing identifier message.

NF-503-D402-006 Projects for external libraries (2004-10-07)

  It is now possible to create library project files for
  externally built libraries. Only the library file need
  to be put in the library directory. The read only ALI
  files that would normally be in the library directory
  should be put in the object directory. The library
  directory should contain no ALI files. No object files
  should be in the object directory. The sources in the
  source directory may be limited to what is necessary,
  for example the interfaces for a Stand-Alone Library.

NF-503-D401-003 Pass -mxxx and -fxxx switches to gnatlink (2004-04-01)

  When gnatmake is invoked with -mxxx (e.g., -m64) or -fxxx
  (e.g., -ftest-coverage), these switches are passed not
  only to the compiler, but also to gnatlink, because
  compiling the binder generated files with these GCC
  switches may be necessary.

NF-503-D331-010 New warning for null pointer dereference (2004-04-27)

  Some new cases where a potentially null pointer is
  dereferenced are now detected and reported.

NF-503-D329-015 Lower bounds of 1 from Current_Exception (2004-04-04)

  The functions in GNAT.Current_Exception always return a
  lower bound of one for returned strings. Previously the
  lower bound from Exception_Name could be greater than 1.

NF-503-D329-010 Improved warnings on constant pointers (2004-04-01)

  Some new cases where a pointer is declared without the
  'constant' keyword but never modified are now detected,
  and trigger a warning when -gnatwk (warn on constant
  variables) is in effect.

NF-503-D326-016 Warning on assigned but never read (2004-05-27)

  A warning is now generated on composed types that are
  assigned but never read when compiling with the
  -gnatwa switch.

NF-503-D326-004 Documentation of -m switches (2004-05-23)

  A section has been added to the users guide on the use of
  GCC -m switches to tailor the generated code. The general
  summary is that these will typically work fine with GNAT
  Pro, but we do not qualify with these switches set, so
  they should not be used unless there is a strong reason
  for their use.

NF-503-D322-004 Improved minimal recompilation (2004-03-30)

  Minimal recompilation (gnatmake -m) has been improved.
  In particular, changing the case of an identifier or
  adding an underscore in a literal number will not trigger
  recompilation.

NF-503-D320-001 Shared runtime supported on Windows (2004-10-12)

  GNAT for Windows now comes with a shared runtime. This
  is made possible by the enhanced support for DLL's in
  this release. GNAT for windows now has the same level
  of support for shared libraries as GNU/Linux systems.

NF-503-D319-016 New parameter format for pragma Eliminate (2004-04-20)

  Homonym_Number is removed, because it does not ensure
  the correct homonym elimination. Instead, the new
  Source_Location parameter is added. The gnatelim
  tool automatically generates pragmas with this
  new parameter.

NF-503-D318-003 New gnatmake switch -eL (follow links) (2004-04-17)

  By default, the Program Manager, when looking for source
  files will not check if a file is a symbolic link. In
  some circumstances, the same source file may be accessed
  via more than one path name, some of them being symbolic
  links, and this may lead to errors. A new gnatmake switch
  -eL instructs the Project Manager to check and follow all
  symbolic links, to avoid such errors.

NF-503-D302-008 More flexible use of pragma Unreferenced (2004-03-08)

  The warning when an entity in a pragma Unreferenced is
  referenced is now restricted to the unit (including its
  spec/body and subunits). Most usefully this means that
  if a generic formal is unreferenced in the generic unit,
  then a pragma Unreferenced can be used to suppress the
  warning when this unit is compiled, without causing
  warnings in child units or references to instantiations.

NF-503-D216-002 gnatpp can remove tabs in comments (2004-03-03)

  A new option '-notab' is added to gnatpp. If this option
  is set, gnatpp removes VT characters from the comment
  text and replaces HT with the sequences of space
  characters needed to get to the nearest tab stop.

NF-503-D209-009 --RTS option is added to gnatpp (2004-03-03)

  The option '--RTS' is added to gnatpp. It has the same
  meaning as the gcc '--RTS' option and it is passed to
  the gcc call generated by gnatpp

NF-503-D201-001 Clean up operators in error messages (2004-02-07)

  In a number of cases, operators in error messages were
  surrounded with two sets of quotes (e.g. ""+""). The
  error output circuit has been enhanced to always ensure
  that only one set of quotes surrounds operator names.

NF-503-D128-001 Consecutive Update calls for GNAT.MD5 (2004-01-28)

  Consecutive calls to procedure Update in GNAT.MD5 with
  string arguments are now equivalent to a single call
  with the concatenation of these strings.

NF-503-D127-013 New restriction Simple_Barriers (2004-04-30)

  This restriction forbids the use of Boolean expressions
  in entry barriers other than static Boolean expressions
  or a Boolean component of the enclosing protected object.
  This supersedes the restriction Boolean_Entry_Barriers.
  The new form is the one intended to be standardized in
  the new revision of Ada. The form Boolean_Entry_Barriers
  is retained as a synonym for back compatibility with
  older versions of GNAT.

NF-503-D127-011 New restriction No_Requeue_Statements (2004-01-29)

  This restriction forbids the use of requeue statements.
  This supersedes the older restriction No_Requeue. The
  new form is the form intended to be standardized in the
  new revision of Ada. The old GNAT form No_Requeue is
  retained as a synonym for back compatibility.

NF-503-D127-008 New pragma Profile (2004-02-06)

  Pragma Profile has been implemented. The only allowed
  argument is Ravenscar, specifying the ravenscar profile.
  This is similar in effect to the previous Ravenscar
  pragma (although the exact details of the profile has
  changed slightly). This previous pragma is retained
  for backwards compatibility.

NF-503-D127-007 New restriction No_Task_Attributes_Package (2004-02-04)

  This restriction ensures at compile time that there are
  no implicit or explicit dependencies on the package
  Ada.Task_Attributes. This supersedes the older
  restriction No_Task_Attributes. The new form is the
  form intended to be standardized in the new revision
  of Ada. The old GNAT form No_Task_Attributes is retained
  as a synonym for back compatibility.

NF-503-D127-005 New restriction No_Dynamic_Attachment (2004-04-25)

  This restriction ensures that there is no call to any of
  the operations defined in package Ada.Interrupts. This
  supersedes the older restriction No_Dynamic_Interrupts.
  The new form is the form intended to be standardized in
  the new revision of Ada. The form No_Dynamic_Interrupts
  previously implemented in GNAT is retained as a synonym
  for back compatibility.

NF-503-D122-011 New switch to turn off style checks (2004-02-08)

  A new style check switch -gnatyN (STYLE_CHECKS=NONE on
  VMS) cancels all previously set style checks.

NF-503-D122-010 GNAAMP checks size of local environment (2004-04-23)

  On the AAMP target only, the compiler now checks that
  the local data size of a subprogram does not exceed the
  maximum allowed size of 32767 words.

NF-503-D116-003 Access at run time to restrictions info (2004-01-03)

  A new package System.Restrictions provides run-time
  access to information on what restrictions were
  specified for the partition at compile time, as well
  as information on what restrictions were violated.

NF-503-D110-002 Documentation for varargs interfacing (2004-02-08)

  A section has been added to the documentation which
  discusses interfacing to varargs functions. The only
  guaranteed portable way of doing this is to create a
  C wrapper with a fixed number of arguments and then
  the Ada program interfaces to the wrapper (this is a
  documentation change only).

NF-503-D102-001 Stand alone volatile constant error msg (2004-01-02)

  The error message for the use of a stand alone constant
  atomic or volatile object has been clarified by adding
  an appropriate RM reference since this requirement is
  a bit obscure (and there is a useful AARM annotation).

NF-503-CC12-005 gnatpp can process multiple source files (2004-02-01)

  Now it is possible to supply several file names or
  wildcards on the same call to gnatpp.

NF-503-CC02-016 The -gnatg switch now implies -gnatwa (2003-12-31)

  The implementation switch -gnatg now automatically
  implies -gnatwa, turning on all normal warnings.
  This means that the compiler/tool/library sources
  are now all compatible with -gnatwa. Generally we
  recommend against using -gnatg outside the GNAT
  sources, but if you do, you will have to make sure
  that your code is compatible with this change.

NF-503-CB28-011 Better msg for function used as procedure (2004-01-01)

  A clearer error message is now given for the case of
  using a function name in a procedure call statement.
  This is a common error made by C programmers since in
  C the function return value can be ignored.

NF-503-CB28-010 Better msg for eliminated subprogram (2003-12-30)

  The error message for an attempt to call an eliminated
  subprogram is improved and now contains the location of
  the relevant Eliminate pragma

NF-503-CB19-012 Windows uses Zero Cost Exceptions (2004-12-06)

  GNAT for Windows now uses the zero cost exception
  mechanism by default. This speeds up most applications
  built with this new default runtime. The previous
  runtime, known as SJLJ (SetJump/LongJump) runtime,
  is provided as a second runtime.

NF-503-C109-016 Better debugging for reference variables (2004-04-23)

  The value of a given variable is sometimes stored via a
  reference. When asking the debugger to print the value
  of such variables, the debugger has been enhanced to
  print the actual value without prepending its type and
  address. If necessary, the type information is available
  via the "ptype" command, while the address of the
  variable can be obtained by using the "'Address"
  attribute.

NF-503-B822-014 Restrictions displayed by gnatls -v (2004-04-10)

  When gnatls is invoked in verbose mode (with -v), the
  restrictions are displayed for sources that are compiled
  with pragma Restrictions, with their values for those
  restrictions that have values.

NF-503-8229-004 Metric tool is available (2004-05-06)

  A new tool gnatmetric is added to the GNAT toolset. This tool
  computes a set of metrics for the argument Ada source files.
  This set includes the syntax metrics, line metrics and
  McCabe complexity metrics.

NF-503-7013-004 Better debugging support for tagged types (2004-05-02)

  When printing a tag value (type Ada.Tags.Tag), the
  debugger GDB will now print the expanded name of the
  tag (the full expanded name of the first subtype of
  the specific type identified by the tag). It will also
  attempt to print tagged objects according to their
  specific types, and to allow selection from tagged
  objects according to their specific types.
