Development Log in December 2007.

  • GNAT Pro
    Dec 31st, 2007

    Warnings from Compile_Time_Warning unconditional
    If a unit with's a package containing a Compile_Time_Warning pragma, then this warning is always generated. Previously it was suppressed as part of the general rule that warnings not in the main extended unit are suppressed, but that's not useful in this case.

  • GNAT Pro
    Dec 29th, 2007

    Support for imported generic subprograms
    It is now possible to declare generic subprogram units as imported, so that their bodies are written in a language for which pragma Import is supported. This provides a limited form of generic sharing, where multiple instances use the same compiled body.

  • GNAT Pro | GPS | GNATbench
    Dec 29th, 2007

    Align on arrows working in case statement
    The align plug-in has been enhanced to support arrows inside case statement.

  • GNAT Pro
    Dec 28th, 2007

    Eliminate warnings using chars_ptr type
    Interfaces.C.chars_ptr has been made Convention C. This avoids unhelpful warnings when converting to and from other convention C pointer types.

  • GNAT Pro
    Dec 27th, 2007

    New GNAT.Serial_Communications unit
    A new unit GNAT.Serial_Communications has been implemented to send/receive data over an RS232 port. This unit is supported on GNU/Linux and Windows.

  • GNAT Pro
    Dec 26th, 2007

    New attribute ‘Old to capture old values
    A new attribute 'Old can be used within a subprogram to refer to the entry value. This can be used in a subprogram to refer to the value of the prefix on entry. So for example if you have an argument of a record type X called Arg1, you can refer to Arg1.Field'Old which yields the value of Arg1.Field on entry. The implementation simply involves generating an object declaration which captures the value on entry. Any prefix is allowed except one of a limited type (since limited types cannot be copied to capture their values).

  • GNAT Pro
    Dec 24th, 2007

    Debugger enhancement when printing characters
    The debugger sometimes only displayed the numeric value of characters. It has It has now been enhanced to display the numeric value followed by the actual character. For instance, instead of printing "101", it now prints "101 'e'". This enhancement is only available on platforms using DWARF as the debugging format. On other platforms, only variables of type Character, Wide_Character, and Wide_Wide_Character are printed using the enhanced format.

  • GNAT Pro
    Dec 23rd, 2007

    Eliminate some unneeded validity checks
    Some unnecessary repeated validity checks have been eliminated by the front end. This is particularly useful for non-GCC back ends (such as AAMP), and when -O0 is used (no optimization). Usually these redundant checks would be eliminated if -O1 or -O2 is used in a GCC-based back end.

  • GNAT Pro
    Dec 23rd, 2007

    Allow change of file mode if mode does not change
    A change of mode is not allowed for certain files (ones that are shared, or have no name, or are system files). However, there is no reason to forbid this if the mode is not in fact changed, and this is now permitted without raising Use_Error.

  • GNAT Pro
    Dec 22nd, 2007

    New pragma Optimize_Alignment
    A new configuration pragma Optimize_Alignment takes a single parameter which can be OFF/TIME/SPACE. This pragma controls the behavior of the compiler in assigning default alignment values for composite types. If no pragma is given or if OFF is specified, then the behavior is unchanged (except for VMS, see entry for F124-010). This default mode provides a balance between time and space considerations. An argument of SPACE causes lower alignments to be specified, which save space at the expense of increased access penalties. For example, a record with an integer and character field which is specified to have a size of 40 bits, will have an alignment of 1 in this mode, instead of 4. An argument of TIME causes higher alignments to be specified, which improve execution speed at the expense of space. For example, in this mode a record whose size is specified to be 17 bits will have an alignment of 4.

  • GNAT Pro
    Dec 20th, 2007

    Gcov integration
    Gcov, a code coverage utility, is integrated with Gnat to handle Ada-specific features. It is now a fully supported part of our technology.

  • GNAT Pro
    Dec 20th, 2007

    Gprof integration
    Gprof, the GNU profiler, is integrated with GNAT on GNU/Linux x86/x86_64, Windows, and Solaris sparc/sparc64/x86 platforms. It is now fully supported as part of our technology on these platforms.

  • GNAT Pro
    Dec 18th, 2007

    Better handling of warnings for Spitbol.Patterns
    The GNAT.Spitbol.Patterns."*" operator can modify its right argument even though it is a function. This was not recognized by the warning machinery which could result in a client getting unexpected "never assigned" warnings. The warning machinery is now enhanced so that Warnings Off applied to the type of an IN mode formal suppresses these messages. Appropriate pragmas have been added so that Patterns clients will no longer get these warnings.

  • GNAT Pro
    Dec 17th, 2007

    Warn for misspelled package names in project files
    The Project Manager will no longer warn for unknown package names, except in verbose mode and if the package name is a possible misspelling of a known package name. When a misspelling is detected, the warning will include the possible misspelling.

  • GNAT Pro | GPS | GNATbench
    Dec 17th, 2007

    Code fixing uses the real indentation
    When the compiler detects an intendation problem, and doesn't propose the actual expected column, the auto fix proposed by GPS is now more accurate, using the same indentation engine & preferences as the editor.

  • GNAT Pro
    Dec 15th, 2007

    Unreferenced/unmodified warnings on template
    Warnings about unreferenced or unmodified variables and parameters are now always given on the generic template, rather than on each instantiation.

  • GNAT Pro | GPS | GNATbench
    Dec 15th, 2007

    Support for gprbuild
    GPS now supports by default gprbuild as its multi-language builder. A new preference is introduced to choose between gprbuild and gprmake.

  • GNAT Pro
    Dec 14th, 2007

    Support for Zero Cost Exceptions on AIX
    Zero Cost Exceptions are now available and activated by default on AIX 5.x. The former Setjump/Longjump (sjlj) runtime is still available as an alternate version.

  • GNAT Pro
    Dec 14th, 2007

    HI Ravenscar added to VxWorks 653
    The Ravenscar implementation based on the Zero Footprint profile is implemented for all VxWorks 653 targets in the vThreads POS (full and cert)

  • GNAT Pro | GPS | GNATbench
    Dec 14th, 2007

    gprbuild packaged with GPS and replaces gprmake
    The gprbuild multi-language builder is now packaged with GPS and replaces its predecessor gprmake.

  • GNAT Pro | GPS
    Dec 13th, 2007

    GPS InSight Webinar
    The archive of this webinar featuring a presentation and demo of GPS 4.2.0 is now available. Please click here to view it or visit:

    www.adacore.com/home/gnatpro/webinars

  • GNAT Pro | GPS | GNATbench
    Dec 11th, 2007

    Completion for protected fields
    Completion on protected objects fields are now proposed by the smart complete command.

  • GNAT Pro | GPS | GNATbench
    Dec 10th, 2007

    Add new action to center a line of text
    A new Python action to center a line has been added into the text_utils.py library. This action can also center a text inside a comment line.

  • GNAT Pro | GPS | GNATbench
    Dec 9th, 2007

    Add minimal Git VCS support
    Add Git support in GPS VCS. This is only a minimal support as Git is very different VCS than CVS or Subversion for example. It is possible to query status, ask for a difference with HEAD and retrieve the log information.

  • GNAT Pro
    Dec 7th, 2007

    New pragma Unmodified
    A new pragma Unmodified is implemented, analogous to the existing pragma Unreferenced, which notes that an assignable entity (variable or OUT or IN OUT formal) is not modified, so that the corresponding warning (read but never assigned) is suppressed.

  • GNAT Pro
    Dec 6th, 2007

    New stack checking mechanism for VxWorks 5 and 6
    The new stack checking mechanism is more efficient than the previous one but requires the TaskVarLib module. This new mechanism compares the stack pointer with the stack limit stored in a task specific variable. This new mechanism replaces the previous one on VxWorks 5 and on VxWorks 6.x for kernel RTS.

  • GNAT Pro
    Dec 4th, 2007

    More liberal style checking for comment alignment
    When comment alignment is style checked (e.g. with -gnaty), then previously the comment had to be on a multiple of the specified alignment. Now it is also acceptable for the comment to be aligned with the start of the next non-blank line following the comment. This is more compatible with the alignment rules used by GPS.

  • GNAT Pro
    Dec 4th, 2007

    Better checking for type extension component clause
    The compiler warns that component clauses for inherited components in a type extension are redundant. It also verifies that the new component clause is consistent with the given representation for the parent. The compiler also suppresses unnecessary warnings for missing component clauses for these inherited components.

  • GNAT Pro
    Dec 3rd, 2007

    Avoid secondary stack for Wide_[Wide_]Image
    The Wide_Image and Wide_Wide_Image attributes no longer use the secondary stack. This improves efficiency, and also makes it easier to incorporate the use of these attributes into environments where the dynamic allocation required for the secondary stack is undesirable.

  • GNAT Pro
    Dec 2nd, 2007

    Better handling of overriding keyword in Ada 95
    If an Ada 95 attempts to use the overriding keyword in Ada 2005 style, the compiler now recognizes this and processes the attempt, generating an error message reflecting that this feature is not supported in Ada 95.

  • GNAT Pro
    Dec 1st, 2007

    Better error msg for renaming entry as body
    You are not allowed to use renaming-as-body to rename a task entry as a subprogram if the subprogram spec is already frozen (because it already has an incompatible convention). A much clearer error message with an RM reference is now given.