Development Log in April 2006.

  • GNAT Pro
    Apr 29th, 2006

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

  • GNAT Pro
    Apr 29th, 2006

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

  • Ada
    Apr 28th, 2006

    Ada 2005 on its way to formal approval!

    ISO's Ada Standardization Working Group (WG9) has approved submitting the draft Amendment of ISO/IEC 8652 to SC22 for FPDAM ballot (Final Proposed Draft Amendment).

    This means that the proposed new Ada standard, known as Ada 2005, is one step closer to become an ISO standard.

    Ballots were sent in from all participating nations, i.e. Belgium, Canada, France, Germany, Italy, Japan, Switzerland, UK, and USA. The vote was unanimously in favor of submitting the amendment.

    The SC22 Secretariat will now prepare the FPDAM ballot, which is expected to commence on approximately May 1. If the amendment is approved there as well, then one final ballot is needed on the ISO/IEC JTC1 level.

  • GNAT Pro
    Apr 23rd, 2006

    New multiple-symbol debugger command option
    A new command has been added to configures the debugger behavior when sending a command containing an ambiguous expression:

      (gdb) set multiple-symbols (all|ask|cancel)
    
    
    This command replaces "set multiple-choice-auto-select". The default is all.

  • GNAT Pro
    Apr 21st, 2006

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

  • GNAT Pro
    Apr 21st, 2006

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

  • GNAT Pro
    Apr 21st, 2006

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

  • GNAT Pro
    Apr 21st, 2006

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

  • GNAT Pro
    Apr 21st, 2006

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

  • GNAT Pro
    Apr 21st, 2006

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

  • Ada | Ada 2005 / 95 / 83
    Apr 21st, 2006

    AI-317 Partial parametrization of formal packages
    This AI extends the functionality of formal packages, by allowing them to be specified with a partial list of actuals, rather the all-or-none approach of Ada 95. A formal package can be specified with a box (<>) or individual generic associations can carry a box while others have real actuals. The visibility rules for the generic formals of formal packages generalize those of Ada95, namely a formal is visible in the enclosing generic if it is specified with a box, explicitly or implicitly.

  • Ada | Ada 2005 / 95 / 83
    Apr 20th, 2006

    AI-405 Scanning progenitor interfaces in Ada.Tags
    This AI adds a new subprogram to the package Ada.Tags to obtain the tag of all the abstract interface ancestors of a given tagged type.

  • Ada | Ada 2005 / 95 / 83
    Apr 20th, 2006

    AI-161 Default-initialized objects
    This AI introduces a new pragma Preelaborable_Initialization which greatly extends the utility of both predefined and user defined private types in preelaborated clients. For example, variables of type System.Address can now be declared in a package that has pragma Preelaborate.

  • GNAT Pro
    Apr 18th, 2006

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

  • GNAT Pro
    Apr 18th, 2006

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

  • GNAT Pro
    Apr 16th, 2006

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

  • GNAT Pro
    Apr 16th, 2006

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

  • GNAT Pro
    Apr 15th, 2006

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

  • GNAT Pro
    Apr 15th, 2006

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

  • GNAT Pro
    Apr 12th, 2006

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

  • GNAT Pro
    Apr 12th, 2006

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

  • GNAT Pro
    Apr 12th, 2006

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

  • GNAT Pro
    Apr 12th, 2006

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

  • Ada | Ada 2005 / 95 / 83
    Apr 11th, 2006

    AI-423 Renamings, objects and null exclusions
    This AI introduces two new grammar constructs dealing with object renaming and formal object declarations which incorporate access definitions or subtype marks with an optional null exclusion. The new legality rules require null exclusions in renamed entities or subprograms whenever the renamings impose such exclusions. Otherwise the renamings are not required to have null exclusions.

  • GNAT Pro
    Apr 10th, 2006

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

  • GNAT Pro
    Apr 10th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 9th, 2006

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

  • GNAT Pro
    Apr 8th, 2006

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

  • GNAT Pro
    Apr 8th, 2006

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

  • GNAT Pro
    Apr 4th, 2006

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

  • GNAT Pro
    Apr 4th, 2006

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

  • GNAT Pro
    Apr 3rd, 2006

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

  • GNAT Pro
    Apr 3rd, 2006

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

  • GNAT Pro
    Apr 3rd, 2006

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

  • GNAT Pro
    Apr 3rd, 2006

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

  • GNAT Pro
    Apr 2nd, 2006

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

  • GNAT Pro
    Apr 2nd, 2006

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