From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,9960fa51a4a478af,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-01-30 18:49:12 PST Path: archiver1.google.com!postnews1.google.com!not-for-mail From: dewar@gnat.com (Robert Dewar) Newsgroups: comp.lang.ada Subject: ACT announces availability of GNAT 3.14p Date: 30 Jan 2002 18:49:11 -0800 Organization: http://groups.google.com/ Message-ID: <5ee5b646.0201301849.4e951bcb@posting.google.com> NNTP-Posting-Host: 205.232.38.244 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1012445351 13278 127.0.0.1 (31 Jan 2002 02:49:11 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: 31 Jan 2002 02:49:11 GMT Xref: archiver1.google.com comp.lang.ada:19404 Date: 2002-01-31T02:49:11+00:00 List-Id: 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.