- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
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.
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.
Align on arrows working in case statement
The align plug-in has been enhanced to support arrows inside case statement.
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.
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.
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).
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.
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.
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.
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.
Gcov, a code coverage utility, is integrated with Gnat to handle Ada-specific features. It is now a fully supported part of our technology.
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.
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.
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.
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.
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.
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.
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.
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)
gprbuild packaged with GPS and replaces gprmake
The gprbuild multi-language builder is now packaged with GPS and replaces its predecessor gprmake.
Completion for protected fields
Completion on protected objects fields are now proposed by the smart complete command.
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.
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.
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.
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.
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.
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.
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.
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.
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.