comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@gnat.com (Robert Dewar)
Subject: ACT announces availability of GNAT 3.14p
Date: 30 Jan 2002 18:49:11 -0800
Date: 2002-01-31T02:49:11+00:00	[thread overview]
Message-ID: <5ee5b646.0201301849.4e951bcb@posting.google.com> (raw)

Ada Core Technologies (ACT) has made available at the NYU
site (ftp://cs.nyu.edu/pub/gnat) GNAT 3.14p builds for the
following targets:

MS Windows (NT/2K)
Sparc Solaris (2.5.1 through 2.8)
GNU Linux (Redhat 6.2)

The above are the official platforms, but in practice the
NT version works reasonable well on Win 98 and Win ME and
other versions of GNU Linux including Debian GNU/Linux are
known to be compatible with this version of GNAT.

These are the only public versions that ACT plans to build.
As always, the releases contain the full sources, and we
invite volunteers to create builds for other platforms.  We
also draw attention to the availability of source snapshots
for the current development version of GNAT (similar to the
3.15 release, but on GCC 3, rather than GCC 2).  The above
public versions are still based on ACT's 2.8.1 GCC version.

These versions are provided without any warranty or
guarantee of any kind, and no support of any kind is
available for these public versions from ACT.  They are
provided as a service for use by students, hobbyists and
researchers who need access to a high quality Ada 95
system.

If you need a supported commercial Ada 95 compiler, we
recommend the use of our GNAT Pro product.  In particular,
we do not recommend the use of the public version for
formal evaluation purposes. Contact sales@gnat.com
or sales@act-europe.fr for further details on GNAT Pro, 
including the availability of evaluation versions.

Robert Dewar
Ada Core Technologies


The following is a list of new features available in 3.14
as compared with 3.13.

GNAT 3.14p NEW FEATURES LIST
============================

Copyright (c) 2001, Ada Core Technologies

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

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-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.

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-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-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-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 name
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 facilities.
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.

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 use 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-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.13p 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 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_Check
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-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.



             reply	other threads:[~2002-01-31  2:49 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-31  2:49 Robert Dewar [this message]
2002-02-03  8:07 ` ACT announces availability of GNAT 3.14p Leon Winslow
2002-02-03 10:56   ` Dmitry A. Kazakov
2002-02-03 14:18     ` Robert Dewar
2002-02-03 14:46       ` Samuel Tardieu
2002-02-03 19:53         ` Robert Dewar
2002-02-03 13:13   ` Larry Kilgallen
2002-02-03 13:47   ` Jeffrey Creem
2002-02-03 14:11   ` Robert Dewar
2002-02-03 16:50     ` Pascal Obry
2002-02-17  5:37       ` jim
2002-02-17 11:20         ` Pascal Obry
2002-02-04 14:13   ` Stephen Leake
2002-02-04 16:07     ` Stephen Leake
2002-02-04 17:18       ` Darren New
2002-02-04 18:36       ` Preben Randhol
2002-02-04 19:08       ` Pascal Obry
2002-02-06 21:36 ` Karl Ran
2002-02-07  8:15   ` Preben Randhol
2002-02-07 15:06   ` Stephen Leake
2002-02-08  1:09     ` Robert Dewar
2002-02-08 11:23       ` John English
2002-02-08 12:33         ` Georg Bauhaus
2002-02-10 18:22         ` Robert Dewar
2002-02-10 18:53           ` Matthew Woodcraft
2002-02-12 12:14           ` John English
2002-02-08 17:10       ` Stephen Leake
2002-02-10  9:26         ` Florian Weimer
2002-02-10 10:07         ` Florian Weimer
2002-02-10  9:26       ` Florian Weimer
2002-02-10 18:38         ` Robert Dewar
2002-02-10 19:23           ` Florian Weimer
2002-02-10 21:55             ` Robert Dewar
2002-02-10 22:05               ` Florian Weimer
2002-02-11 12:36                 ` Robert Dewar
2002-02-11 15:09                   ` Florian Weimer
2002-02-11 16:19                     ` Larry Kilgallen
2002-02-11 16:49                       ` Aidan Skinner
2002-02-11 19:16                       ` Florian Weimer
2002-02-11 19:36                         ` Larry Kilgallen
2002-02-12  2:18                           ` Robert Dewar
2002-02-12 21:10                             ` Florian Weimer
2002-02-12 21:59                               ` Larry Kilgallen
2002-02-11 18:55                   ` Samuel Tardieu
2002-02-12 14:47       ` Karl Ran
2002-02-12 15:28         ` Aidan Skinner
2002-02-12 15:51           ` David C. Hoos
2002-02-12 15:40         ` Florian Weimer
  -- strict thread matches above, loose matches on Subject: below --
2002-01-31  8:22 Christoph Grein
2002-02-10 18:32 ` Robert Dewar
     [not found] <0d3401c1b3dd$25df9ac0$453ab4d8@sy.com>
2002-02-12 15:47 ` Aidan Skinner
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox