=====================================================
GNAT 6.0 NEW FEATURES LIST Current as of Feb 11, 2007
=====================================================

Copyright (c) 2005-2007, AdaCore

This file contains a complete list of new features in version 6.0 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.05w or 6.0.0w
wavefront subsequent to this date will contain the indicated feature, as
will any subsequent releases.

NF-60-G208-024 Support for SCHED_RR and time slicing on AIX (2007-02-11)

  Support for pragma Time_Slice, gnatbind -Txxx and the round-robin scheduling
  policy has been added to the AIX version.

NF-60-FC19-015 Remove restriction on interface types and Ada.Tags (2006-12-19)

  Previous versions of the compiler had a restriction on the use of subprograms
  Expanded_Name, Wide_Expanded_Name, Wide_Wide_Expanded_Name, and External_Tag
  with the tag of class-wide interface objects. This restriction has been
  removed.

NF-60-FC12-014 Improved debugger message at exception (2007-01-11)

  On Tornado, the debugger now prints a more useful message when a program
  being debugged triggers a hardware exception:

    Program received exception, exception vector: 0x600.

  It used to print:

    Program received signal ?, Unknown signal.

NF-60-FC06-011 Improved selection of float stream routines (2006-12-17)

  Long_Float and Long_Long_Float have the same representation on many machines,
  e.g. SPARC. On such machines, the Long_Float routines were selected for use
  with long_long_float data being streamed. This is changed so that the type
  appropriate routines are now used. This has no effect in the standard run
  time, since the representations are identical, but it can be useful in cases
  where specialized versions of the Stream_Attributes package are created.

NF-60-FC04-002 New pragma Universal_Aliasing (2006-12-20)

  This new pragma inhibits strict type-based aliasing optimization for the type
  it is applied to, i.e. the effect is as though access types designating this
  type were automatically subject to pragma No_Strict_Aliasing.

NF-60-FB30-032 GNAT LIST now recognizes switch -U (2006-11-30)

  Switch -U (VMS qualifier /ALL_PROJECTS) is now recognized by
  GNAT LIST (gnat ls). When used with a project file, gnatls is called
  for all the sources of all the projects in the project tree.

NF-60-FB27-022 Locally_Removed_Files allowed in all projects (2006-11-29)

  The attribute Locally_Removed_Files may now be used in non-extending projects
  provided the listed removed files would be sources if the attribute was not
  specified. This allows to declare, for example, that sources are all
  *.ads/*.adb, except a short list.

NF-60-FB07-004 WITH TYPE clauses not supported (2006-11-28)

  Support for this GNAT-specific language extension has been removed from
  the compiler. This feature introduced several years ago, was an early ARG
  proposal to solve the problem of mutually recursive type definitions in
  different compilation units. The WITH TYPE clause has been made obsolete by
  the LIMITED WITH clause of Ada 2005.

NF-60-FA30-017 Project-wide checks and metrics (2006-12-20)

   The GNAT Driver has been enhanced so that it can be use to call gnatcheck or
   gnatmetric on all the units of a project, all the units of a set of projects
   or all the units needed to build a main program.

NF-60-FA27-004 Warning for component with no component clause (2006-11-01)

  A new warning switch (-gnatw.c to turn on, -gnatw.C to turn off, off by
  default) causes warnings to be generated for a record representation clause
  in which the majority, but not all, of the components have component clauses.
  A warning is generated for each component for which no clause is present.

NF-60-FA21-001 Better error message for use of IN with ACCESS (2006-10-26)

  It is not permissible to use IN and ACCESS together. Previously this mistake
  resulted in an obscure error message. This error is now clearly diagnosed.

NF-60-FA13-007 Reduced verbosity when building libraries (2006-10-18)

  In default mode (not quiet, not verbose) the output when building libraries
  has been reduced: the lists of object files and ALI files are not displayed
  and only the first object files is displayed in the link command. Output has
  not been changed in verbose mode.

NF-60-FA08-001 More flexibility in record layout in -gnaty mode (2006-10-17)

  When TYPE and RECORD are on different lines in a record declaration, GNAT
  now allows the END RECORD to line up under either line in -gnaty or -gnatyr
  modes. This makes the compiler consistent with the format chosen by GPS by
  default in this case.

NF-60-F927-003 New function GNAT.OS_Lib.Current_Time (2006-09-27)

  A new function GNAT.OS_Lib.Current_Time providing access to the current
  system time as an OS_Time value is now available.

NF-60-F925-001 New pragma Compile_Time_Error (2006-10-04)

  A new pragma Compile_Time_Error can be used to issue error messages based on
  compile time checks. This pragma is exactly like the previously existing
  pragma Compile_Time_Warning, except that an error message is issued instead
  of a warning message.

NF-60-F922-004 System.Restrictions only included if needed (2006-11-12)

  Previously, the unit System.Restrictions was unconditionally included in
  every program, and the binder file always initialized the restriction data.
  Now this only happens if this unit is explicitly used, saving time and space.
  This is particularly important in the context of the configurable run time,
  where this unit may not be present.

NF-60-F920-003 Bind_Socket allows binding to a specific address (2006-09-20)

  GNAT.Sockets.Bind_Socket now honors the Addr parameter, allowing the user
  to bind to a specific address, instead of the wildcard address (previously
  it would always bind to the wildcard address, and ignore the Addr component
  of the Address argument). Note that applications that relied on the previous
  behaviour should now explicitly use Any_Inet_Addr to bind a socket with
  an unspecified address (and thus accept connections on all interfaces).

NF-60-F907-009 More efficient GNAT.Sockets.Selector_Type (2006-09-07)

  The implementation of selectors (wrappers for the operating system select(2)
  facility) has been improved to use pipes instead of sockets for internal
  signalling, on platforms where these are available.

NF-60-F901-016 SHA-1 Secure Hash Algorithm (2006-09-01)

  A new GNAT runtime library unit GNAT.SHA1 is provided, which implements
  the SHA-1 Secure Hash Algorithm, as specified in RFC 3174.

NF-60-F821-015 By-descriptor mechanism for exported subprograms (2006-11-30)

  Support for parameter passing using the VMS by-descriptor mechanism has
  been implemented for exported subprograms, with the same restrictions
  as those of the implementation for imported subprograms.

NF-60-F818-017 Automatic directory creation (2006-08-22)

  A new switch -p (or --create-missing-dirs) is created for gprmake and
  gnatmake. When this switch is used, missing object library or exec
  directories are created automatically.

NF-60-F817-003 Control encoding of gnatpp out files (2006-12-08)

  A new option -We ('e' has the same values with the same meaning as for
  the GNAT '-gnatWe' option) is added to gnatpp. This option sets the wide
  character encoding method used for gnatpp out files.

NF-60-F813-002 Task-safe network database operations (2006-12-13)

  The network database operations in package GNAT.Sockets: Get_Host_By_Name,
  Get_Host_By_Address, Get_Service_By_Name, and Get_Service_By_Port now take
  advantage of task safe library functions provided by the underlying operating
  environment, on platforms where such functions are available, to avoid having
  to use GNAT.Task_Lock to guarantee correct operations in partitions with
  tasking. This improves concurrency on these targets.

NF-60-F808-025 ASIS uses ADA_INCLUDE_PATH in "on the fly" mode (2006-08-11)

  In the dynamic context mode, ASIS looks also in the directories listed in
  the value of ADA_INCLUDE_PATH environment variable to locate sources to
  be compiled for the trees.

NF-60-F808-022 Static library project files on cross platforms (2006-08-16)

  Static only library project files are now supported on additional VxWorks
  targets (VxWorks/Cert and VxWorks 653) and on bare board targets.

NF-60-F718-013 AI-447 Null_exclusions allowed in Ada 95 (2006-07-20)

  Ada 2005 allows "not null" to be used in various contexts to indicate that
  access values cannot be null. AI-447 allows "not null" to be used for
  anonymous access types in Ada 95, in order to ease the writing of code that
  works the same way in both Ada 95 and Ada 2005. The compiler now allows "not
  null" in those cases.

NF-60-F707-014 Reduce compilation time of Ada 95 OO programs (2006-08-05)

  The time required to compile Ada 95 object oriented programs has been
  reduced significantly (typically about 10 per cent).

NF-60-F706-026 New style switch for array attributes (2006-07-08)

  The style switch -gnatyA (automatically turned on by plain -gnaty, or by
  -gnatg) forbids the use of array index numbers for the array attributes
  Length, Range, First, Last in the case of one dimensional arrays, and
  requires that they be present for multi-dimensional arrays.

NF-60-F705-009 New pragma Unreferenced_Objects (2006-07-15)

  A new pragma Unreferenced_Objects may be applied to types or subtypes. The
  effect is to inhibit warnings if objects of this type are not referenced.
  This is particularly useful in the case of so-called RAII variables (Resource
  Acquisition Is Initialization), where a variable is declared solely for the
  initialization and finalization effects (for example, these might be used to
  acquire and release a lock). Note that for this pragma, unlike the use of
  pragma Unreferenced directly on the object, it is not considered an error to
  reference the object, and no warning is generated for such references.

NF-60-F701-003 Optimization of membership tests (2006-07-11)

  The compiler does not generate code for the run-time check associated with a
  membership test applied to a tagged type if the resulting value can be
  evaluated at compile time.

NF-60-F630-020 Windows GNAT.Sockets based on Winsock 2.2 (2006-07-30)

  The Windows GNAT.Sockets implementation now uses the Winsock 2.2
  version instead of version 1.1.

NF-60-F630-015 New warning switch for questionable missing parens (2006-07-01)

  A new warning switch -gnatwq (off by default) generates warnings for missing
  parentheses in situations where it seems advisable to use parens. Warnings
  were already given for some cases (e.g. not a>b where a and b are modular,
  and -x mod 5), but the warning is now separately controllable, and includes
  cases like -x*y (which means -(x*y) when perhaps (-x)*y was intended). This
  switch is included in -gnatwa.

NF-60-F627-009 New check name Validity_Check (2006-06-27)

  A new check name Validity_Check is recognized as an argument for pragma
  Suppress or Unsuppress. This allows validity checks to be turned on and off
  selectively, without affecting the status of range checks.

NF-60-F622-032 Validity checking of operands includes ranges (2006-06-25)

  The -gnatVo switch that turns on validity checking for operands now also
  activates validity checking for ranges using .. including for loops, array
  declarations, subtype declarations, membership tests etc.

NF-60-F621-004 New substitute-path debugger commands (2006-08-08)

  A new set of commands (set/unset/show substitute-path) have been added
  to the debugger. These commands manipulate a list of substitution
  rules that the debugger uses to rewrite the directory names where
  sources are located. This can be very useful for instance when
  the source location is different between compilation and debugging.

NF-60-F612-018 New multiple-choice-auto-select debugger option (2006-06-23)

  When sending to the debugger a command with an ambiguous expression,
  the debugger by default asks the user to choose between all possible
  alternatives.  This behavior is now configurable with the following
  command:

        (gdb) set multiple-choice-auto-select (off|all|cancel)

  When selecting either "all" or "cancel", the multiple-choice menu
  is no longer displayed.

NF-60-F610-002 Warnings on infinite while loops (2006-06-21)

  The compiler now detects some obvious cases of possible infinite while loops
  where the test is a simple test of a local variable, which does not appear
  to be modified in the loop.

NF-60-F608-010 gnatcheck can read rule options from files (2006-08-22)

  A new  rule option (-from=rule_fule) is added to gnatcheck. This option
  allows to read rule options from the text file named rule_file.

NF-60-F607-022 More complete listings from -gnatl (2006-06-09)

  The listing from -gnatl now includes a full listing of all units for which
  code is compiled (in particular, when a body is compiled, full listings of
  the corresponding spec and all subunits are output with error messages. A
  debug switch -gnatd.m is implemented to provide the old behavior in case of
  legacy scripts depending on listing only the main unit.

NF-60-F531-023 New switch for gnatmake to send commands to stdout (2006-06-23)

  Normally gnatmake sends all its output to stderr, including echoing the
  commands issued if -q is not used. A new switch -eS causes these echoed
  commands to be sent to stdout (all other messages still go to stderr).
  This is particularly useful in an eclipse context, where different colors
  are assigned to stderr and stdout.

NF-60-F531-018 Pragma Priority works in non-tasking program (2006-08-22)

  Previously, a pragma priority on the main procedure was ignored in a non-
  tasking program, which is allowed from a formal point of view, but is
  surprising. Now if such a pragma is used, the compiler forces selection of
  the tasking run-time, so that the pragma has the expected effect.

NF-60-F531-010 System.Priority range expanded on AIX (2006-06-19)

  Previously, the type System.Priority on AIX was limited to the
  range 0 .. 31. This range has now been expanded to 0 .. 126, allowing
  tasking programs to make use of the full range of priorities made
  available by the operating system.

NF-60-F530-022 New model for interfacing with C++ (2006-06-03)

  We have improved the frontend support for interfacing with C++.
  The GNAT pragmas CPP_Vtable and CPP_Virtual are no longer required
  because the frontend generates the same object layout as the g++
  compiler. The only new requirement for interfacing with C++ classes
  with virtual functions is to place all the components of the object
  and the primitives exactly in the same order in the two languages.

NF-60-F524-002 Full listing can be sent to file (2006-06-02)

  A new form of the switch -gnatl (full listing) is now available. If the
  switch is given as -gnatl=xxx then the full listing is written to file
  xxx, or if xxx starts with a period then it is taken as an extension,
  and the full listing is written to file.xxx, where file is the name of
  the source file being compiled (or file_xxx in VMS).

NF-60-F523-009 Extended syntax for pragma CPP_Constructor (2006-09-11)

  The syntax of pragma CPP_Constructor has been extended to allow specification
  of External_Name Link_Name parameters as in a pragma Import. This avoids the
  need to include an additional pragma Import to specify the C++ mangled name.

NF-60-F518-012 More warnings on apparently useless assignments (2006-05-20)

  The compile now catches some cases in which an assignment is useless because
  either the value is overwritten by another assignment before it is referenced
  or alternatively the value is never referenced again.

NF-60-F516-015 Extended applicability for pragma Obsolescent (2006-05-18)

  Any entity, including record components and enumeration literals, can now
  be marked as obsolescent using this pragma, and any reference to an entity
  marked with this pragma will generate a warning. The new syntax for the
  pragma has a parameter Entity=>name which gives the name of the entity to
  be marked. For compatibility, the old syntax omitting this name is still
  accepted (in which case the name is implied by the pragma location).

NF-60-F509-010 Improved installation of POSIX for GNAT (Florist) (2006-05-09)

  A new installation scheme is provided with Florist, following the
  standard configure --prefix=<prefix>; make; make install scheme, and where
  a florist.gpr project file is installed under <prefix>/lib/gnat.

NF-60-F504-014 Improved error message for 'Access in generic (2006-07-13)

  When 'Access is misused in a generic body according to RM-3.10.2(32),
  the compiler now generates a more informative error message.

NF-60-F503-009 New attribute Stub_Type (2006-05-03)

  A new implementation-defined attribute is provided: for a prefix T that
  denotes a remote access-to-classwide type, T'Stub_Type denotes the type of
  the corresponding stub objects (stub objects are placeholders for remote
  objects that allow RACWs to be represented as simple local access values).
  This internal attribute is used for distributed systems annex implementation.

NF-60-F429-008 Friendlier elaboration order for packages (2006-05-02)

  If a package body has an initialization procedure that initializes global
  variables in the spec, it is still possible for elaboration code from other
  packages to access the uninitialized values if Elaborate_Body is not used.
  The elaboration order choice now tries (but cannot promise) to elaborate
  such bodies early enough to avoid this possibility. This goes hand in hand
  with the new warning (F424-009) which will warn of the missing pragmas.

NF-60-F429-003 AI-228 -- subprograms that require overriding (2006-08-03)

  AI-228 is implemented. Subprograms that "require overriding" are treated
  slightly differently from abstract subprograms, allowing them to be used in
  more contexts.

NF-60-F424-009 Warning for possibly uninitialized elab variables (2006-04-29)

  If a package spec has a visible uninitialized variable which is initialized
  directly or indirection from an elaboration block in the package body, then
  there is a danger that a client may access the variable from elaboration
  code before it gets initialized. The usual fix is to add Elaborate_Body to
  the spec. GNAT now generates a warning in this situation with this advice.

NF-60-F423-009 Warning for Current_Task in entry barrier (2006-05-30)

  The check for the bounded error of using Current_Task within an entry body
  now includes that the entry barrier in the check (since this is considered
  to be part of the body). Also this is now a warning and run-time exception
  rather than an illegality, since this is a bounded run-time error, not a
  compile-time error.

NF-60-F412-009 Warnings for missing Volatile in asm statements (2006-04-21)

  If an ASM statement does not specify Volatile, and it is missing either
  input or output operands, or more than one ASM statement appears in a
  row, then it is possible that undesirable optimizations may occur, so
  a warning is now given in these cases.

NF-60-F410-006 Tracking of values works for subprogram actuals (2006-04-12)

  Previously, tracking of values did not work for subprogram actuals. This
  change allows proper tracking of values for subprogram actuals, allowing
  additional useful warnings to be generated by the front end (for example
  in the case of null actuals passed to NOT NULL formals).

NF-60-F409-011 Tracking of values works for subprogram formals (2006-04-09)

  Previously, tracking of values did not work for subprogram formals. This
  change allows proper tracking of values for subprogram formals, allowing
  additional useful warnings to be generated by the front end.

NF-60-F409-009 More information on constant conditions (2006-04-10)

  When the compiler determines that the outcome of a conditional test is known
  at compile time, it now outputs additional information messages pointing to
  assignments, tests, and case alternatives that provided the information for
  making the determination that the outcome was constant.

NF-60-F406-018 System.Priority range expanded on Linux. (2006-04-12)

  Previously, the type System.Priority on Linux was limited to the
  range 0 .. 31. This range has now been expanded to 0 .. 97, allowing
  tasking programs to make use of the entire range of priorities made
  available by the operating system.

NF-60-F404-017 Tracking of values works for qualified variables (2006-04-04)

  Previously, tracking of values worked only for simple identifiers, and not
  for qualified names. This change allows proper tracking even if full name
  qualification is used for the identifier involved.

NF-60-F402-005 Improved tracking of complex conditions (2006-04-03)

  The front end now does a better job of tracking some cases of complex
  conditions, resulting in additional useful warnings about redundant tests.
  Simple boolean variables are also properly tracked in conditions.

NF-60-F329-025 Warn on bad array length even if checks suppressed (2006-04-02)

  If the compiler can tell at compile time that an array assignment will cause
  a constraint error, then it gives a warning. Previously this warning was not
  given if checks were suppressed, but in general we try to give such compile
  time warnings even if checks are suppressed, and the compiler is now modified
  to give the warning in this case with checks suppressed.

NF-60-F316-007 Better precision when handling Duration in ERC32 (2006-03-16)

  When transforming Duration into Time_Span, and vice versa, intermediate
  values and operations use Long_Long_Integer in order not to lose precision.

NF-60-F314-010 Support for Priority_Ceiling/Inheritance on AIX (2006-03-16)

  Under AIX, the Locking_Policy pragma is now mapped to the underlying POSIX
  settings PTHREAD_PRIO_PROTECT/INHERIT, relying on the AIX thread library to
  implement this capability. Previousely, the Locking_Policy pragma was
  ignored.

NF-60-F314-006 Better diagnostics on division by zero (2006-03-20)

  When the compiler detects that the right operator of a division, mod, or rem
  operation is equal to zero a warning message is generated. This message now
  indicates which of the previously mentioned operations will raise a
  Constraint_Error at run time.

NF-60-F310-016 Improvements to -gnatwh hiding warning (2006-06-29)

  The warnings from -gnatwh have been refined to eliminate warnings for cases
  where an entity name matches an entity in a package which is not used. Since
  such package entities will always be qualified, the issue of hiding does not
  arise. Warnings for packages which are used are given as before. Warnings are
  also suppressed for record component entities, which never cause hiding.

NF-60-F306-014 New check Alignment_Check (2006-03-22)

  A new check name Alignment_Check can be used in a Suppress or Unsuppress
  pragma. This controls run-time checking for correct alignment of address
  clause values. Suppressing this check will eliminate all such checks.

NF-60-F303-007 New pragma Wide_Character_Encoding (2006-03-28)

  This configuration pragma (which can appear anywhere a pragma is permitted),
  allows specification of the encoding method for wide [wide] characters that
  will be subsequently recognized. The single parameter is an identifier which
  is one of: HEX UPPER SHIFT_JIS EUC UTF8 BRACKETS or it is a character literal
  corresponding to the switch character used with -gnatW (e.g. 8 for UTF8).

NF-60-F224-027 Improved handling of Address clauses (2006-03-22)

  Many unnecessary run-time checks for correct alignment of address clauses
  are eliminated in cases where the compiler can tell that the alignment is
  guaranteed to be correct. In addition, more warnings are given for cases
  where the alignment is not guaranteed to be correct, and a new warning is
  given on an attempt to overlay a smaller variable with a larger one.

NF-60-F221-028 Debugger removes useless frames in backtrace (2006-03-01)

  When printing the call stack inside an Ada task, the debugger now by default
  stops the stack trace at the level corresponding to the task in the source
  program, and avoids displaying additional levels corresponding to internal
  book keeping in the run time. The full complete backtrace can still be
  printed by using the gdb command "set backtrace past-main".

NF-60-F219-006 Better tracking of values within loops (2006-02-20)

  Current values of variables are now tracked within a loop body, improving
  the quality of code for some loops.

NF-60-F219-004 Tracking of while condition information (2006-02-24)

  The condition in a while loop is now used to optimize the body of the loop.
  For instance, if the while condition is X /= null, then we know that we do
  not need to do access checks for X within the loop body in some cases.

NF-60-F217-021 Better diagnostics on illegal operators (2006-02-24)

  When there is no valid interpretation for an operator in an expression, the
  compiler used to report only that the operands were incompatible with the
  operator. The compiler  now examines whether the addition of a use_clause
  to the context might make  some user-defined operators use-visible, and
  therefore make the expression legal.

NF-60-F215-040 New function GNAT.OS_Lib.Pid_To_Integer (2006-03-05)

  A new function is added in package GNAT.OS_Lib:
      function Pid_To_Integer (Pid : Process_Id) return Integer;
  This function is useful for hash functions for type Process_Id
  or to compare Process_Id values.

NF-60-F215-003 Improved message for illegal static expressions (2006-02-18)

  When a static expression fails a constraint check (and is thus illegal), the
  error message now talks about failing a constraint check, rather than the
  previous behavior of talking about raising constraint error (which caused
  some confusion, since the program was illegal and could not be executed).

NF-60-F213-031 Validity checking for conversions/qualifications (2006-02-14)

  The operand validity checking option (-gnatVo, also included in -gnatVa) now
  causes validity checks to be generated for type conversions and qualified
  expressions. Previously there was no way to ensure generation of such checks.

NF-60-F213-014 gnatpp can process Ada 2005 sources (2006-12-05)

  The gnatpp tool fully supports Ada 2005.

NF-60-F213-004 Hardware watchpoints on Tornado PowerPC targets (2006-03-31)

  Hardware watchpoint support has been added to the debugger for Tornado
  PowerPC targets. Support is available for all supported versions of
  Tornado.

NF-60-F211-005 gnatstub can process Ada 2005 units (2006-02-12)

  A new -gnat05 option is added to gnatstub. When called with this option,
  gnatstub can process Ada 2005 library unit declarations and generate body
  stubs for them.

NF-60-F203-012 Warnings on almost-matching signatures (2006-02-03)

  If two subprograms have the same name and differ only in that one of them
  has an access parameter, and the other has a parameter of a general access
  type with the same designated type as the same position in the signature,
  a positional call to either will be ambiguous. GNAT emits a warning on the
  second subprogram declaration in this situation.

NF-60-F130-021 Improved warnings for redundant use clauses (2006-01-31)

  GNAT was warning on use clauses that are only partly redundant, which is
  unhelpful. This warning is now suppressed. GNAT still warns on use clauses
  that are fully redundant (scope of one use clause entirely contains the
  scope of another).

NF-60-F123-006 New validity checking switch for components (2006-04-03)

  A new validity checking switch (-gnatVe/E) allows turning on/off validity
  checks for assignments to elementary components of records and arrays. By
  turning off such checking, the semantics of individual component assignments
  become the same as for entire record or array assignments (where Ada
  specifies that the values be copied without validity checking).

NF-60-F122-006 New specific-message form of pragma Warnings (2006-04-18)

  A new form of pragma Warnings (On|Off, string-pattern), can be used to
  suppress warning messages whose text matches the given string pattern.

NF-60-F115-003 New warning on deleted conditional code (2006-04-21)

  A new warning switch (-gnatwt/-gnatWT, WARNINGS=[NO]DELETED_CODE in VMS)
  causes new warnings for code in conditionals (IF and CASE statements) that
  is detected to be dead code which cannot be executed, and which is removed
  by the front end. This warning is off by default, and is not turned on by
  -gnatwa (WARNINGS=ALL), it has to be turned on explicitly. This may be useful
  for detecting deactivated code in certified applications.

NF-60-F112-035 Interspersing of source in expanded source listing (2006-05-08)

  The switch -gnatL (/INTERSPERSE_SOURCE in VMS) used in conjunction with
  -gnatG (/EXPAND_SOURCE) or -gnatD (/XDEBUG) causes the original source
  lines to be interspersed in the listing of generated code. These original
  source lines are listed as comments, with the relevant line number.

NF-60-F112-023 Identification of implicit run time calls (2006-01-14)

  In the output of -gnatG (or the file generated by -gnatD), an implicit call
  to a run-time support routine is now clearly identified by prepending a $
  to the subprogram name. This provides improved support of the documentation
  requirement in RM H.3.1(9).

NF-60-F112-003 gcore debugger command improvement on HP/UX (2006-01-12)

  There was a limitation in the gcore debugger command on HP/UX which would
  sometimes cause the debugger to save the core dump in a file that is
  different from the file specified by the user. This is due to a limitation
  of certain HP/UX kernels. This command has been enhanced to always save the
  core dump in the expected file.

NF-60-F111-025 Invalid EUC codes now raise an exception (2006-01-14)

  The attempt to convert wide characters to EUC form now raises an exception
  (Constraint_Error) if the wide character is not in the appropriate range of
  allowed ECU representable values.

NF-60-F111-024 Warning for suspicious string indexing (2006-04-09)

  If an unconstrained string parameter is index using a literal, or S'Length,
  a warning is generated that the code is improperly assuming a low bound of
  one (which will for example not be true if a slice is passed). This warning
  can be turned off with -gnatwW, or by providing an explicit pragma Assert
  that the low bound is guaranteed to be one.

NF-60-F109-016 Pragma Unreferenced can be used for with'ed units (2006-04-21)

  It is now allowable to use pragma Unreferenced in a context clause, where
  its arguments are names of program units in previous WITH clauses (similar
  to the usage of pragma Elaborate_All). The effect is to suppress warnings
  that the corresponding unit is not referenced.

NF-60-F104-025 Space allowed between -I and directory (2006-01-28)

  One or several spaces are now allowed between the switch -I and a directory
  path when invoking the compiler. It is no longer necessary to have the
  directory path immediately after -I.

NF-60-F104-006 ASIS revision for Ada 2005 is started (2006-01-05)

  The ASIS interface packages now contain proposals for ASIS revision for
  Ada 2005. Note that new entities added to the ASIS interface may cause
  problems for existing ASIS 95 applications. For more details, see file
  asis-2005-transition.txt in the top level directory of the ASIS source
  distributions.

NF-60-EC31-001 Pragma Ada_2005 is synonym for Ada_05 (2006-01-04)

  A new pragma Ada_2005 is introduced which is a synonym for the existing
  Ada_05 pragma (which is still recognized).

NF-60-EC29-010 Improved error message for must-be-overridden (2006-01-06)

  When a subprogram must be overridden, the whole chain of aliased subprograms
  is traced, and a message is printed or each.  This is useful in understanding
  where the subprogram came from. This had already been done for Ada 2005 mode,
  and is now present in Ada 95 mode.

NF-60-EC22-004 New gnatmake switches to control warnings (2006-09-05)

  Three new switches are added to gnatmake to control warnings while
  parsing project files: -wn (treat warnings as warnings, the default),
  -ws (suppress warnings) and -we (treat warnings as errors).

NF-60-EC13-012 Pure_Function does not imply Pure (2005-12-25)

  If the pragma Pure_Function is applied to a library function unit, then it no
  longer implies that the function is Pure in the categorization sense. This is
  more consistent with the use of this pragma within a package.

NF-60-EC08-010 Unicode filenames support on Windows (2006-04-08)

  Support for unicode filenames has been added on Windows. It is now possible
  to iterate through a directory (using GNAT.Directory_Operations for example)
  containing unicode filenames or to create unicode filenames using the
  standard Ada.Text_IO API.

NF-60-EC06-014 New restriction: No_Dispatching_Calls (2006-02-01)

  This restriction ensures at compile time that the code generated by the
  compiler has no dispatching calls. The use of this restriction allows the
  safe use of tagged record extensions and membership tests to write code
  that does not have dispatching calls.

NF-60-EB28-001 Windows 2000/XP priority mapping improvement (2006-01-05)

  On Windows 2000/XP there are 16 priority levels available. The priority
  mapping table has been adjusted to take advantage of all priorities. The
  previous implementation was mapping the Ada 31 priorities to the only 7
  priority levels available on Windows NT4.

NF-60-EB25-009 Warning messages always unconditional (2006-02-03)

  Warning messages issued by the compiler are always unconditional, that is
  to say they are never suppressed even if another message has already been
  issued at the same spot.

NF-60-EB18-023 gcore command implemented in HP/UX debuggers (2006-01-04)

  The gcore command has been implemented in the pa-hpux and ia64-hpux
  debuggers. It produces a core dump of the program being debugged.

NF-60-EB03-021 GNAAMP folds arithmetic for 16 and 32-bit operands (2006-03-22)

  The GNAAMP compiler's peephole optimizer has been extended to perform folding
  of arithmetic operations involving 16-bit and 32-bit literal operands. This
  applies to both signed and unsigned operations for add, subtract, multiply,
  divide, mod, and rem.

NF-60-E917-001 Function call implemented in ia64-hpux debugger (2005-12-30)

  The ia64-hpux debugger is now capable of calling a function in the program
  being debugged.

NF-60-E407-013 Enhanced version of pragma Interface (2006-04-16)

  The Interface pragma has been enhanced pragma so that it is now exactly the
  same as pragma Import syntactically and semantically (except for the name).
  This is an upwards compatible change. The remains upwards compatible with the
  Ada 83 version of Interface, and also upwards compatible with some Ada 83
  extended versions of this pragma that allowed more than two arguments.

NF-60-DA18-006 New style option for checking IN mode arguments (2006-01-09)

  A new style checking option -gnatyI (in VMS MODE_IN) checks that default
  IN mode arguments do not include the keyword IN.

NF-60-D812-002 GNAT.Calendar.Time_IO.Value (2006-05-08)

  New function which parses and extracts an Ada.Calendar.Time value from an
  input String. The supported formats are as follows:

    yyyy*mm*dd hh:mm:ss  - Delimiter '*' is either '-' or '/'
    yyyy*mm*dd           - The time of day is set to 00:00:00
      yy*mm*dd hh:mm:ss  - Year is assumend to be 20YY
      yy*mm*dd           - The time of day is set to 00:00:00
               hh:mm:ss  - Date is the current date

NF-60-D805-003 Kill Default_Bit_Order constant condition warning (2006-04-09)

  A pragma Warnings (Off, Default_Bit_Order) has been added to all versions
  of System, so that you will never get a constant condition warning from
  a reference to this switch if warnings are on.

NF-60-D526-013 New switches -R and -Z for gnatbind (2006-12-04)

  Two new switches are added to gnatbind: -R to output the list of sources
  that are in the closure of a main, but not in the runtime, and -Z to
  suppress formatting of auxiliary outputs produced by switches -e, -l, -K
  and -R.

NF-60-C204-004 Stack checking on 64-bit SPARC/Solaris (2006-02-04)

  Stack checking (enabled by -fstack-check) has been implemented on the
  64-bit SPARC/Solaris platform.

NF-60-8119-003 New error/warning message output format option (2006-04-15)

  A new switch -gnatjnn reformats error and warning messages so that a
  message and all its continuation lines are treated as a unit (and only
  count as one warning or error), and are reformatted so that no line is
  longer than nn characters.
