- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Sep 27th, 2013
Implement random fixed-point capabilities
Two new generic functions (Random_Decimal_Fixed and Random_Ordinary_Fixed) are now available in GNAT.Random_Numbers (g-rannum.ads/adb). These permit generation of sequences of random numbers for a specified range of fixed point values (in a manner analogous to that provided by Random_Discrete).
Support for long integer values in JSON
GNATCOLL.JSON can now handle 64 bit integer values (Long_Integer).
GPS: filter in Locations matches on file names
The filter in the Locations window now matches the location of the messages, not just their text. It is also possible to force alphabetical sorting of file names.
Sep 26th, 2013
gnatpp: Optional underscores in numeric literals
A new option --decimal-grouping=n causes gnatpp to put underscores in decimal literals (literals without a base) every n characters. A similar option --based-grouping=n is used for based literals. If a literal already has one or more underscores, it is not modified. For example, with "--decimal-grouping=3 --based-grouping=4", "1000000" will be changed to "1_000_000", and "16#0001FFFE#" will be changed to "16#0001_FFFE#".
Ada Web Server
Sep 25th, 2013
Templates parser supports complex expressions
It is now possible to use complex expressions in the template engine conditions. An expression can now be a concatenation of values and variable's values.
GPS: Searching for documentation after declaration
A new preference "Documentation/Leading Comments" has been added to control the order in which GPS looks at the comments (before or after the declaration) to retrieve the documentation for an entity.
Support for Postgres SQL extensions
Package GNATCOLL.SQL.Postgres now supports the construction of UPDATE ... RETURNING and SELECT ... FOR UPDATE statements.
GPS: New menu CodePeer>Generate CSV Report
As part of the CodePeer integration, a new menu is provided to generate a CSV report file directly from GPS.
Environment_Task and Activation_Is_Complete
The Ada 2012 Environment_Task and Activation_Is_Complete functions have been added to Ada.Task_Identification.
Raise expressions can be used in return statements
The compiler now supports the use in Ada 2012 mode of raise expressions in return statements. This is useful in writing stubbed functions, where you can now write e.g. "return raise Program_Error;" and avoid the need for concocting a bogus return statement.
GPS: safer saving of files
Saving files is now done via a temporary file which is later renamed. This is safer, and protects against temporary disk issues that could occur during the actual save operation.
GPS: Find All References displays context
When you perform a "Find All References", each reference will also display the context of that reference (in general, the subprogram within which the reference is found).
Sep 19th, 2013
Attributes External and environment variables
In main aggregate project, when attribute External is specified, the corresponding environment variable is set, if it is not already set in the environment.
Sep 17th, 2013
Allow relative URI in namespace location
For compatibility with older XML documents, XML/Ada can now be set up to allow relative URI when declaration namespaces. This needs to be activated through Sax.Allow_Relative_IRI_Feature.
GPS: support for retina displays in browsers
The display in the various browsers (e.g., call graph, entity, and debugger) is now sharper on retina displays.
Sep 17th, 2013
New types in Interfaces.C.Extensions
New Unsigned* and Signed* types are available in Interfaces.C.Extensions to support types between 33 and 64 bits. These types are mainly for use by the -fdump-ada-spec binding generator which takes advantage of these new types.
GPS: use separate file for CodePeer’s audit data
CodePeer's audit data for messages is stored in a separate file to improve performance on subsequent GPS invocations.
Linker_Section may be specified for subtypes
A pragma Linker_Section may now be given for types or subtypes. The effect is to provide a default Linker_Section for all library level objects for which no explicit overriding Linker_Section is given
Linker_Section may be specified for subprograms
A Linker_Section pragma can now be given for a library level subprogram. In the case of overloading, it applies to all previously declared subprograms which do not already have a Linker_Section specified. Note that the aspect form of Linker_Section is useful if different elements of such an overloaded set are to be placed in different sections.
Linker_Section information listed in rep info
The output from the -gnatR? switch now includes listing of Linker_Section pragmas for any entity to which a Linker_Section pragma or aspect applies either explicitly or implicitly (the implicit case occurs when a type is given a linker section, and it is propagated to objects of the type).
An implementation-defined aspect Linker_Section is now available which is equivalent to the Linker_Section pragma. This can be used to specify that different elements of an overloaded subprogram set have different sections.
GPS: Build/Settings/Target window now resizable
The window to edit the build targets has a smaller default size and is resizable. It fits better on smaller screens.
GPS: persistent contents of Debug/Connect To Board
The contents of the dialog to connect to a board (target name and protocol) is now restored each time the dialog is displayed, avoiding the need to enter the same information each time the dialog is used.
GPS: align end-of-line comments
The align.py plugin now provides a solution to align end of line comments.
Sep 13th, 2013
Disable gnatpp pretty printing in regions of code
You can now disable pretty printing in regions of code by surrounding the code with special comments that start with "--!pp off" and "--!pp on". The comments must appear on a line by themselves, with nothing preceding except spaces. You can use different comment strings using the gnatpp --pp-off and --pp-on command-line switches. To disable pretty printing for the whole file, put "--!pp off" at the top, with no following "--!pp on".
GPS: also aligns selected lines
By default, if multiple lines are selected and you press <tab>, GPS will also align the colons (:), use clauses (use), arrows (=>) and assignments (:=) in these lines. This behavior can be deactivated by a new preference in the "Editors" section.
More complete warnings for unmodified variables
The compiler now properly recognizes all cases of P.Q being modified where P is an access type, and does not consider them to be modifications of P. This results in more complete warnings for unmodified variables, and also removes a bogus warning on pragma Unmodified when used in such situations.
Add warnings for suspicious file names on windows
On Windows-7, a somewhat surprising security feature from Microsoft checks for executable names of files that contain any of the substrings setup, install, or update. Such files require administrative privileges to load. Now when you run gnatlink on windows it will warn you if the output file name (for example something like App_Install) runs into this restriction.
Do not give -gnatyB style errors in instance
When the style check option -gnatyB (check boolean operators) is given, any errors within a generic template are flagged only on the template, not on each instantiation.
GPS: search dialog shows name of current project
The search dialog provides a "Scope" to only search in the source files of the current project. The dialog was improved to show exactly which project is considered current. Also, "/Navigate/Search" from an editor will set the current project to be that of the editor.
Sep 10th, 2013
Implement SPARK_05 recursion restrictions
Restriction SPARK_05 (was previously called just SPARK) now checks two rules that help prevent recursion. One rule is that a subprogram cannot contain a direct call to itself. The other rule is that a call to a subprogram is not allowed in the same unit as the subprogram before the body has been seen.
Sep 9th, 2013
Never assume volatile variable is valid
When validity checking of operands is enabled (e.g by using -gnatVa), then the code never assumes that the value of a volatile variable is valid based on analysis of previous assignments, so the validity of such a variable is checked on every read.
Sep 7th, 2013
Improved handling of new Ada 2012 equality errors
In Ada 2012, it is illegal to declare a user-defined equality routine after the relevant type has been frozen. This incompatible change was needed for support of the new uniform composition of equality in Ada 2012. GNAT will now generate warnings (under control of -gnatwy, suppressible using -gnatwY) if this rule is violated in Ada 95 or Ada 2005 modes. In addition, in the case of Ada 2012 mode, the debug flat -gnatd.E will convert the new error messages into warnings (this is intended as a transition aid).
GNATCOOL.Projects.Aux new package
This package provides additional services when using Project Files: functions to get data types from the underlying implementation of the Project Manager and subprograms that are usually only used by specialized tools.
Sep 6th, 2013
Optimized Stream_Element_Array stream attributes
The stream attributes for Ada.Streams.Stream_Element_Array now pass the object to the stream primitive operations as a whole, instead of element by element.
GPS: do not save Locations by default
By default, the contents of the Locations window is no longer saved when GPS exits (and restored when it restarts), because it sometimes resulted in very long loading times. The previous behavior can be reactivated by using the local configuration menu in the toolbar of the Locations window.
Sep 5th, 2013
Python scripting support in ppc-aix debugger
Python scripting is now supported in the ppc-aix debugger.
Sep 4th, 2013
Improved error message for concatenation
Compiler provides a more explicit error message when one operand is of an access type, an error that is common for practitioners of other languages.
Random generators available on bare boards
Packages Ada.Numerics.Discrete_Random and Ada.Numerics.Float_Random are now available in the Ravenscar full runtimes for bareboard platforms.
Reduce false positive for “no entities…” warnings
The warning that no entities of a withed/used package are referenced is now suppressed if other serious errors were found. This reduces bogus cascaded warnings in such situations.
GPS: better error for invalid project names
The error message when creating a new project with an invalid name now indicates that the name cannot be an Ada reserved word.