- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Jun 29th, 2013
Improved performance of stream operations
Stream operations for the array types System.Storage_Elements.Storage_Array and Ada.Streams.Stream_Element_Array are now optimized in the same manner that has been done in the past for string types. This means that read/write operations handle the entire array as a block rather than reading and writing element by element.
Jun 26th, 2013
libstdc++.so directory in run path option
A new configuration attribute Library_Rpath_Options is created. The main goal of this attribute is to make sure that shared libraries with C++ code are linked with a run path option that includes the directory of the correct libstdc++.so.
Jun 25th, 2013
Performance improvements on large static aggregates
Compiler makes better choices on whether to expand an aggregate with static components into a sequence of assignments, or construct a static constant for the backend. This improves code generation speed and memory usage when compiling large static tables.
GPS: approximate search
GPS is now able to do approximate search. For instance, searching for "saerch" will also match "search" when this mode is activated.
Jun 24th, 2013
Non Ada sources copied to the Library_Src_Dir
In a library project, when attributes Library_Src_Dir and Interfaces are declared and there are non Ada sources/templates in the Interfaces, these sources/templates are now copied to the Library_Src_Dir.
Jun 22nd, 2013
Comparison of symbols to integers in preprocessing
When preprocessing a source, it is now possible to compare symbols with integers using =, <, <=, > or >=, e.g. #if symbol = 3 or #if symbol <= 20.
GPS: new plugin formatfile.py
This plugin, when loaded, adds a new menu "/Edit/Format Whole File", which reformats the whole file while preserving the current cursor location.
Improved indentation of parenthesized expressions
Extra spaces following an open parenthesis are now taken into account when indenting Ada code.
GPS: color schemes
A new preference is available to select color schemes. This affects other preferences and can be used to set dark colors for the background of editors and windows.
Improved error message on illegal predicate
A new error message flags a function with in-out parameters that is used in a predicate, to clarify subsequent error at the point of call.
Ravenscar cert run-time functionality extended
Add the 'Image, 'Value and other capabilities to all Ravenscar Cert based run-time libraries.
Improved indentation of parenthesized expressions
Extra spaces following an open parenthesis is now taken into account when indenting Ada code.
Overlap warnings are now errors in Ada 2012 mode
In accordance with AI05-0144-2/07, in Ada 2012, overlap of elementary OUT or IN OUT parameters in a procedure call is an error, not a warning and this is now properly implemented in GNAT. To ease the transition burden for cases where this incompatibility causes difficulty, the debug switch -gnatd.E is introduced, which converts this back into a warning.
New switch -gnateu (ignore unrecognized switches)
A new switch -gnateu switch causes subsequent unrecognized style (-gnaty), warning (-gnatw), and validity (-gnatV) switches to be ignored generating a warning message only. This is useful when compiling a set of sources developed with a later version of the compiler using an earlier version of the compiler (of course this version must implement the -gnateu switch).
Linking with static libiconv
It is now possible to link with a static version of libiconv, to solve link issues with conflicting versions of libiconv. See the --with-iconv=static for configure.
Jun 18th, 2013
Clean artifacts in object and exec directories
gprclean now cleans from the object directory the files specified in new attribute Artifacts_In_Object_Dir in package Clean and for main projects cleans from the exec directory the files specified in new attribute Artifacts_In_Exec_Dir in package Clean.
GPS: apply preferences on the fly
The "Apply" button has been removed from the preferences dialog. Changes are now applied on the fly as settings are modified.
New attribute P’Library_Level
A new attribute P'Library_Level (where P is an entity name) is available. This attribute returns a Boolean value which is True if the entity is declared at the library level. Note that within a generic instantition, the name of the generic unit denotes the instance, which means that this attribute can be used to test if a generic is instantiated at the library level, using pragmas Compile_Time_Warning or Compile_Time_Error.
Improve invalid UTF-8 code detection/documentation
The validation tests in GNAT.Decode_String/Decode_UTF8_String now detect invalid UTF-8 sequences in which a longer encoding than is necessary is used. In addition the spec now clarifies that the validation does not include the rejection of UTF-8 sequences that are not "well-formed" and correspond to codes in the range 16#D800#-16#DFFF# which are not valid Unicode characters.
Ada.Wide_Characters.Handling.Character_Set_Version is now implemented. This was a late addition to this package. For GNAT it returns "Unicode 4.0".
Initialize_Scalars applies to initialization
If an array aggregate has a component clause that uses box initialization, and a corresponding component is not otherwise initialized, then the normal effect of Normalize_Scalars/Initialize_Scalars initialization applies.
Default_Component_Value used for initialization
If an array aggregate has a component clause that uses box initialization, e.g. 1..5 => <>, and a Default_Component_Value aspect is specified for the array type, then this value is used for the initialization (rather than the normal default initialization). This is not clearly specified in the Ada RM, but seems clearly the intended effect.
New review classification of CodePeer messages
When doing a manual review of a CodePeer message, the user can no longer change the message ranking, but instead can specify a review classification and the name of the reviewer. A new message review dialog is added and a new filter was added for CodePeer Report view to manage visibility of messages by review status.
New review classification of CodePeer messages
When doing a manual review of a CodePeer message, the user can no longer change the message ranking, but instead specify a review classification and the name of the reviewer. New message review dialog is added and new filter was added for CodePeer Report view to manage visibility of messages by review status.
Jun 13th, 2013
Improved optimization handling of aliased variables
It is possible for programs to use low level techniques to modify variables that otherwise might be considered to be unassigned. For example, a variable can be passed to a procedure by reference, which takes the address of the parameter and uses the address to modify the variable's value, even though it is passed as an IN parameter. Such code is dubious, but with this change it works as expected providing the variable in question is marked as aliased. Basically the compiler now takes aliased as an indication that some funny business may be going on, and avoids possibly troublesome optimizations.
Ada Web Server
Jun 9th, 2013
WebSocket passes most Autobahn tests
AWS now passes all tests from the Autobahn tests except those requiring UTF-8 validation of the messages.
GPS: GPS.MDI.add to put on top of consoles
The Python function GPS.MDI.add now has additional parameters to specify the initial location of the new widget. This allows you to put widgets on top of the existing GPS consoles.
GPS: remove Goto Entity dialog
The menu "/Navigate/Goto Entity" no longer opens up a dialog. Instead it moves the focus to the global search field. The "/Tools/Views/Entity" view was also removed since its features are now available through the global search field.
GPS: remove Open From Project dialog
The menu "/Files/Open From Project" no longer opens a dialog. Instead, it moves the focus to the global search field. The global search field offers many additional features.
Jun 7th, 2013
New pragmas Pre, Pre_Class, Post, Post_Class
Four new pragmas, Pre, Pre_Class, Post, Post_Class are implemented. These are intended to be usable as direct replacements for the corrresponding Ada 2012 aspects, and share the same restrictions and semantics. The idea is to allow writing a program using these pragmas instead of the aspects, with the intention of possible compilation using an Ada compiler that does not recognize the pragmas (or corresponding aspects), but is prepared to ignore the pragmas.
GPS: preserve location in new views
When creating a new view for an editor (for instance through drag-and-drop), the new view is now displayed at the same location as the original editor, rather than on the first line.
Jun 5th, 2013
Recognize components initialized at declaration
CodePeer avoids issuing messages about uninitialized components in cases where the components are known to be fully initialized at the point of the component declaration, either by an explicit expression or implicitly due to default initialization.
Jun 4th, 2013
Victor wrapper supports solver=none
Victor wrapper now supports the switch solver=none which causes Victor to process its input files without invoking any SMT solver. This can be useful for testing purposes.
Additional functions in Ada.Characters.Handling
Additional functions are added to Ada.Characters.Handling. These were late additions in Ada 2012 (to match routines in Wide and Wide_Wide cases). The functions added are Is_Line_Terminator, Is_Mark, Is_Punctuation_Connector, Is_Other_Format, and Is_Space).
New warning for redundant if statement
A warning (under control of -gnatwr, redundant constructs) is issued for an if statement that has a simple side effect free condition, a then consisting of a single null statement, and no else or elsif parts.
Jun 2nd, 2013
Updated names in Wide[_Wide]_Characters.Handling
The names of functions Is_Other and Is_Punctuation in the two packages Ada.Wide_Characters.Handling and Ada.Wide_Wide_Characters.Handling have been changed to Is_Other_Format and Is_Punctuation_Connector to reflect the final decision on names for these Ada 2012 packages.
GPS: Aliases expansion directly in editor
The aliases expansion feature now works directly in the editor, without any dialog for aliases with parameters. The user progresses through the fields directly in the editor via the Ctrl+Tab shortcut. Visual feedback is provided for the current field via highlighting.
Improved messages for duplicated case choices
The messages for duplicated case choices now include the duplicated values. In addition the list of missing values is more accurate in the case of a subtype with a static predicate being used as a choice.
Improved errors for duplicated array indexes
The error messages for duplicated and missing index values in array aggregates have been improved, including listing of duplicated values.