=====================================================
GNAT 6.1 NEW FEATURES LIST Current as of Mar 27, 2007
=====================================================

Copyright (c) 2007, AdaCore

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

NF-61-G322-023 Better error messages from Time_IO.Image (2007-03-23)

  When the exception GNAT.Calendar.Time_IO.Picture_Error is raised an
  exception message gives the reason, and a check has been added for
  a null picture string.

NF-61-G314-033 Failed assertion breakpoint frame selection (2007-03-19)

  Upon hitting a breakpoint on failed assertions, the debugger now
  automatically displays the source location causing the assertion
  to fail.

NF-61-G306-011 Regpat.Match allows non-zero lower bound (2007-03-07)

  The procedures Match that take a Matches array previously required that
  Matches'First = 0. This is no longer required.

NF-61-G226-016 No warnings for obsolescent Handling functions (2007-03-02)

  The functions To_Character, To_Wide_Character, To_String and To_Wide_String
  in Ada.Characters.Handling are considered obsolescent in Ada 2005. However
  it was too annoying to give warnings for their usage in Ada 2005, since in
  practice you need to use these functions in code intended to be compiled in
  either Ada 95 or Ada 2005 mode. So the warnings have been removed.

NF-61-G220-013 Obsolete pragma Thread_Body removed (2007-02-23)

  The pragma Thread_Body had been provided for specialized use on AE653 systems
  but in practice was never used and did not solve the problem it was intended
  to solve. It has been removed, simplifying the compiler and documentation.

NF-61-G219-026 Analyzing dispatching calls with ASIS (2007-02-20)

  Asis.Expressions.Corresponding_Name_Definition now returns a reference to
  the corresponding dispatching operation when applied to a subprogram
  reference from a dispatching call (before Nil_Element was returned in this
  case). This allows to get to the profile of the called subprogram.

NF-61-G209-010 Annex-D using Realtime_Priority_Class on Windows (2007-03-26)

  On Windows, the Annex-D support is now using the Realtime_Priority_Class 
  instead of the High_Priority_Class. Annex-D semantics is better
  achieved with the Windows Realtime_Priority_Class.

NF-61-G208-018 Descriptor class S argument with class SB on VMS (2007-02-14)

  On VMS, a function specifying a descriptor class SB parameter accepts
  a class SB argument and now also a class S argument, to be compatible
  with DEC Ada.

NF-61-G208-008 Project path command line switch to add directory (2007-02-14)

  A new switch -aP<dir> has been added to gnatmake, gprmake, the gnat driver
  and gnatclean, to add a directory to the project search path.

NF-61-G202-002 Small alignments for records now allowed (2007-02-06)

  The compiler now allows the specification of small aligments for records,
  even if it results in some fields becoming misaligned. Previously an
  alignment was rejected if it was smaller than the natural alignment of
  one of the record fields.

NF-61-G131-012 New warning for renaming function return object (2007-02-26)

  A new warning switch -gnatw.r (off by default, but included in -gnatwa)
  generates a warning for renaming a function return object (e.g. x : integer
  renames f), noting that it is clearer to use a constant object declaration
  (x : constant integer := f), which means the same thing but makes it clear
  that the function is only called once.

NF-61-G131-010 Better error recovery for literal used as name (2007-02-26)

  The use of a literal in a context requiring a name is an error. Previously
  this caused bad error recovery, with several cascaded messages in some cases.
  This is now corrected, and the cascaded messages are removed.

NF-61-G127-001 Warning on imported C++ class types if not limited (2007-02-05)

  The compiler now issues a warning for a tagged type declared with a pragma
  Import with convention C_Plus_Plus or CPP (or a pragma CPP_Class), when the
  type is not declared as a limited type. The type will be treated implicitly
  as limited.

NF-61-G119-022 New keyword static in generated code output (2007-01-19)

  Although Ada itself does not have a mechanism for declaring local entities
  with a static global allocation, the code generator does have this feature,
  and it is used in some Ada cases, e.g. for local exceptions in subprograms.
  Such usage is now indicated by the keyword static in the listing of generated
  code using -gnatG or -gnatD switches.

NF-61-G117-028 GNAAMP uses secondary stack for dynamic objects (2007-02-22)

  On the AAMP target only, the compiler now allocates local objects with
  nonstatic sizes on the secondary stack rather than on the heap. Library-level
  objects with nonstatic sizes are also handled this way when the restriction
  No_Implicit_Heap_Allocations is in force.

NF-61-G106-008 New pragma No_Body for dummy body files (2007-01-07)

  In cases where a package spec file does not allow a body (for example when
  the package spec is a package renaming), it is now possible to provide a
  dummy body file that contains only comments and a No_Body pragma. This is
  recognized as indicating that no body is present. This is useful in system
  maintenance when a real body is eliminated.

NF-61-G105-015 Secondary stack supported in AAMP small library (2007-01-17)

  Programs compiled for the AAMP target can now use features that depend
  on use of the secondary stack (for example, calls to functions returning
  results whose size is determined at run time).

NF-61-FC16-002 Expanded static elaboration of constant aggregates (2007-03-13)

  Constant aggregates are now elaborated statically in more cases, especially
  on architectures that require strict alignment of data in memory.

NF-61-FC14-008 Stack checking on VxWorks 6 (2007-01-16)

  Stack checking (enabled by -fstack-check) has been implemented on the
  VxWorks 6 platform, both for the kernel and RTP modes.

NF-61-FB17-003 Clearer warnings from -gnatwl in static mode (2006-12-27)

  The warnings for possible access before elaboration are now specialized
  according to the current elaboration model. In static mode, we now avoid
  suggesting adding pragma Elaborate or Elaborate_All (which would be wrong)
  and instead just note that implicit pragmas are being generated.

NF-61-F823-006 Consistent binary image for tree files (2007-01-03)

  The output of tree files by -gnatt is now guaranteed to generate consistent
  binary files. Previously, some uninitialized bytes were dumped, these were
  never read, so there was no actual bug, but it was inconvenient for two
  logically identical tree files to have different binary data.

NF-61-F813-001 Optimization option -Os is documented (2006-12-27)

  The users guide now mentions optimization option -Os (optimize for space)
  making this an officially supported gcc flag. A VMS equivalent has been
  added (/OPTIMIZE=SPACE). This option has worked fine on previous versions
  of GNAT, but was not officially documented in the users guide.

NF-61-F727-003 Warning for convention C for discriminated record (2006-12-30)

  The use of pragma Convention to set a convention other than Ada for a record
  with discriminants is dubious, since other languages do not have types that
  exactly correspond to the Ada variant record. A warning is now generated for
  this usage. The warning is suppressed in the Unchecked_Union case, since the
  whole point of unchecked unions is to aid in foreign language interfacing.

NF-61-F726-011 New GNAT style check option (2006-12-27)

  The style check flag -gnatyg enforces exactly the same set of style checks
  that are used by the GNAT source code itself. This may be useful when you
  are developing code for eventual inclusion in GNAT. Note that this is not
  the same as -gnatg, which also allows such non-standard language constructs
  as recompiling children of Ada. It only enforces style checks.

NF-61-F718-012 Increased length of task images (2007-01-08)

  On native platforms, the maximum length of a task image (set either
  automatically, or via pragma Task_Image) is increased to 256 (from 32).

NF-61-F516-011 Local exception handling (2007-02-10)

  A new restriction (No_Exception_Propagation), allows limited local raising
  and handling of exceptions. An exception can be raised and handled if the
  handler is in the same subprogram (more generally in the same scope not
  counting blocks and packages) as the raise. For example, you can have a
  local handler for Constraint_Error. Propagation of exceptions to enclosing
  scopes is not allowed, and exception handlers may not specify an exception
  choice parameter. This restriction allows limited use of exception handling
  without needing run-time support for exception propagation. In particular,
  the ZFP and Ravenscar profiles for the HIE product have been modified to
  implement this exception (rather than No_Exception_Handlers) by default,
  allowing limited handling of exceptions with these two profiles.

NF-61-F204-008 GNAT.Heap_Sort_G and Bubble_Sort_G are now pure (2006-12-25)

  Changes in the Ada 2005 rules have made it possible to make the generic
  sorting packages (GNAT.Heap_Sort_G and GNAT.Bubble_Sort_G) Pure, so that they
  can be used from Pure units in both Ada 95 mode and Ada 2005 mode.

NF-61-F110-022 Convention C for enumeration object size warning (2007-12-28)

  If an object of an enumeration type has Convention C, and the size is less
  than the size of int, then this is a bit suspicious, since normally C would
  use int for enumeration types. A warning is now given in this case for non-
  character enumeration types for which no explicit size is given.

NF-61-EC08-012 Ada 2005 attributes/pragmas in Ada 95 mode (2007-01-01)

  All new attributes and pragmas defined in Ada 2005 are available in Ada 95
  mode, but they are considered in this mode to be implementation defined, and
  will be treated as errors in the presence of No_Impementation_Pragmas or
  No_Implementation_Attributes restrictions.

NF-61-E805-020 Gnaampmake checks for up-to-date .axe file (2007-03-01)

  On the AAMP target, the program build tool (gnaampmake) now checks for the
  presence of an up-to-date .axe file when deciding whether to invoke the
  binder and linker.

NF-61-E226-004 Suppression of reference warnings (2006-12-29)

  Reference warnings (for example, never read or never written) for variables
  are now suppressed if the type or base type of the variable has warnings
  suppressed with pragma Warnings (Off, typ).

NF-61-DA18-006 Checking for IN mode parameters in -gnatg mode (2006-12-29)

  GNAT source style mode does not permit the use of IN mode (this is the
  default, and it need not, and in GNAT source code must not, be explicitly
  specified). This is now automatically checked if -gnatg is specified.

NF-61-D616-012 More efficient code for Initialize_Scalars (2006-12-27)

  In the case where an array is explicitly initialized with an aggregate, it
  is not necessary for Initialize_Scalars to cause a separate initialization.
  Previously such arrays were initialized twice.

NF-61-D318-004 GNAT.Sockets.Initialize formal parameter removed (2007-03-06)

  GNAT.Sockets.Initialize used to require the user to provide a
  Process_Blocking_IO parameter for runtime environments where the default
  value of False was not appropriate. The required internal flag is now
  set automatically, and so the optional formal parameter to GNAT.Sockets.
  Initialize has been removed.
