- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
New atomic operations are provided, that change the value of an Atomic_Counter if, and only if, it currently has a given known value. This is useful to write lock-free algorithms.
Jun 3rd, 2016
gnattest: stub parent packages
Gnattest now generates stubs for parent packages of packages undet test in --stub mode.
unicode names from the Unicode 8 standard
The unicode-names-* packages were updated to match the Unicode 8 standard. The new bindings are generated via a new importer, which fixes a number of issues with the previous bindings:
- some characters were put in the wrong block (and thus wrong package) - some typos due to incorrect parsing of the Unicode files - some name aliases would hide canonical names occurring later (for instance 1F5E2 was hidden by 1F48B) - some unofficial aliases were used (Bell is not long valid, for instance)This change is not fully backward compatible, due to changes in the Unicode standard itself, since some blocks were renamed, as well as some characters. Contributed by Nicolas Boulenguez
Jun 1st, 2016
Improved version of attribute Type_Key
The attribute Type_Key, which is provided for compatibility with the APEX attribute of that name, now uses a CRC computed from the type declaration of the type, and the declaration of all its components, to provide a reliable signature that allows the detection of changes in the semantics of the type.
GPS: tooltips show dirs relative to root project
The tooltips in notebook tabs, in the Project view and in the Windows view now show both the absolute name for files as well as their location relative to the root project. The latter path can often be much shorter, depending on your setup.
GPS: Improve outline view’s “with Clauses”
Do not show "with Clauses" node in outline view if no withes.
May 30th, 2016
Better scheduling of 64-bit arithmetic on Visium
The compiler now generates object code for 64-bit arithmetical operations that is slightly more compact and/or better scheduled on the Visium.
May 27th, 2016
New Interfaces packages on bareboard platforms
Packages Interfaces.C.Strings and Interfaces.C.Pointers have been added to the ravenscar-full runtimes. The implementation of Interfaces.C fully conforms to the standard.
Runtimes with multiple directories
Runtimes with multiple directories for sources or object/libraries are now properly supported.
Setting the default verbosity
It is now possible to control the default verbosity without to use switches -v or -q, with environment variable GPR_VERBOSITY. The possible values, case-insensitive, are "quiet", "default", "verbose", "verbose_high", "verbose_medium" and "verbose_low". Any other value is ignored.
Runtime () as a relative path
It is now possible to specify a runtime directory with the attribute Runtime as a relative path, in the main project. Example:
for Runtime ("Ada") use "./rts";The path is relative to the project directory of the main project.
GPS: hyper links in call graph browser
In the Call Graph Browser, file locations are now clickable and open the corresponding file/line.
GPS: filter in the Windows view
The Windows view now also has a local filter, to help search for specific windows.
Elimination of more useless overflow checks at -O2
The compiler now eliminates more overflow checks that can never fail when the optimization level -O2 or above is specified.
ASIS: new query Is_Generalized_Indexing
A new query Is_Generalized_Indexing is added to Asis.Expressions. It checks if the argument expression Element should be considered as generalized indexing according to ARM 4.1.5.
May 19th, 2016
gnatpp: alignment of exception declarations
By default, gnatpp will treat exception declarations and exception renaming declarations similarly to object declarations and others, by aligning the ":" characters when multiple declarations appear one after the other with no intervening blank lines.
GPS: Integration with QGen
GPS now provides a convenient interface to QGen, the code generator for Simulink models. This includes: displaying graphically the diagrams from MDL files (read-only), toolbar buttons to easily generate code then build (and optionally then debug), tight integration with the debugger so that whenever the debugger stops, GPS highlights the current block in the diagram, adds contextual menus to easily break on specific blocks, and shows the current value of signals.
May 16th, 2016
Support for hashing arbitrary complex structures
The family of secure hash packages based on GNAT.Secure_Hashes (including MD5, SHA1, and the various SHA2 functions) now provide a wrapper for hashing contexts that implements the Ada stream interface. As a result, stream attributes can be used to feed arbitrary complex data structures into hashing functions.
GPS: view the tasks directly from the toolbar
In the main toolbar, the button next to the summary of running tasks now brings up an ephemeral window which contains a task manager view, which allows viewing and interrupting tasks directly from the toolbar, without the need to have the Task Manager view present in the MDI.
May 6th, 2016
Add support for ‘Image and ‘Value to Cert runtimes
Cert runtimes now support the same attributes and packages as Ravenscar Cert, except that Ada.Calendar and Calendar are not in the latter. New packages include various string-handling packages, less-restrictive Interfaces.C, etc. The main difference now between the two profiles is use of Ravenscar tasking vs. APEX processes.
May 4th, 2016
Warning on fixed-point actual with user-defined op
Compiler emits a warning on the actual for a formal fixed-point type when the actual has a user-defined arithmetic operator but the generic unit does not include a formal subprogram for the operator. The warning indicates that the predefined operation will be used in the instance.
GPS: new Debugger Variables view
This view displays the same type of information as the Data Window (i.e. the value of variables) but in a tree, which might help keep things organized.
pragma Implicit_Packing for composite components
Pragma Implicit_Packing now works for record types that contain components of small composite types, in particular small record types.
pragma Implicit_Packing for byte-packed array types
Pragma Implicit_Packing now works for array types whose component type is a scalar with a size multiple of the storage unit but not a power of 2.
Task switching while debugging a core file
It is now possible to switch between Ada tasks when debugging a core file.
Faster access to small byte-packed array types
The code generated for accessing packed array types whose component type is a small record with a size multiple of the storage unit has been improved.
GPS: proposed value of message review status
In CodePeer message review dialog proposed value of message review status has been changed to current status of the message.
New pragma Unused
When applied to an entity, pragma Unused causes each read or write attempt of the entity to be flagged as a warning.
Added GNATcheck usage example
An example demonstrating the use of GNATcheck coding standard verifier has been added to the distribution.
Improving handling of User_Data
The following generic packages were modified:
Gdk.Event.Handler_Set_User_Data Gtk.Action_Group.Set_Translate_Func_User_Data Gtk.File_Filter.Add_Custom_User_Data Gtk.Widget.Add_Tick_Callback_User_DataThe Notify parameter was removed from the public API. Instead, GtkAda will call the Destroy procedure to release User_Data.
GPS: use Gtk dialog for open/save files
GtkFileChooserDialog used instead dialog of GPS if system doesn't have own dialog or this forbidden in a preferences and it is local file system. It is possible to use a dialog of GPS by turn off gtk_file_selector trace setting.
GPS: automatic fix for adding Elaborate_All pragma
The GPS code fixing capability was enhanced to handle compiler messages such as "Elaborate_All pragma required for NAME". To fix this GPS will add pragma Elaborate_All (NAME) after corresponding with-clause in the spec or body of given compilation unit.
Temporary config project with autoconfiguration
The Project Manager now creates a temporary configuration project file when in auto-configuration. This file is deleted when the tool terminates. This allows several project-aware tools invocations to work in parallel with the same object directory.
Apr 13th, 2016
Tighter array packing for small record component
The packing of array types subject to aspect/pragma Pack and whose component type is a small record, either that contains another small record component, or that has a size in the range 33 .. 63 bits, has been improved.
GPS: Add the possibility to filter switches
Switches defined for a specific tool using XML can now be filtered by specifying a named filter for the 'filter' attribute of a switch tag. These filters can be either predefined in GPS or created by the user (see the <filter> tag in the XML files). Use the GPS.Filter.list static method to list all the registered named filters.
GPS: different icon for disabled breakpoints
The icons that are displayed on the side of editors to show where breakpoints are now have a different color when the breakpoint is disabled or is conditional.
GPS: speed up search and replace
The "search and replace all occurrences" has been sped up by a factor of seven in some cases.
GPS: do not highlight occurrences of keywords
The plug-in auto_highlight_occurrences.py highlights all occurrences of the word under the cursor in the whole file (possibly using smart cross reference information to only highlight the specific entity and not its homonyms). This plug-in has now learned not to highlight the language's keywords ("constant", "begin",...) which is useless and might be slow since these keywords generally occur often.
GPS: Home goes to beginning or first-non-blank
When using the Home key while in an editor (or any key bound to the action "beginning of line"), GPS will first go to the first column (as it has always done), but if you do it a second time it will then go to the first non-blank character of the line). This is a feature available in other code editors.
GPS: Support for arm-sysgo-pikeos
GPS now supports the arm-sysgo-pikeos toolchain.
Optimization of Unbounded_Priority_Queues
The efficiency of Ada.Containers.Unbounded_Priority_Queues has been improved, especially in the case where many same-priority items are enqueued.
Improved warning on absolute address clauses
The alignment warning issued on strict-alignment architectures for address clauses whose value is an absolute address is now more accurate, catches more cases and prints the alignment value.
New procedure Get_Closures
A new procedure GPR.Util.Get_Closures is added. It allows to get the full paths of the sources in the Ada closures of one or several mains.
Apr 1st, 2016
Expanded support for incomplete types in profiles
The support for incomplete types as parameter and result types introduced in Ada 2012 has been implemented for a broader range of types.
GPS: width of omnisearch popup
The width of the popup window for the omnisearch (at the top-right corner of the main window) is now proportional to that of the search field itself. And the width of the latter can be set by changing the settings, which is useful if you have long file names in your application.
GPS: listvars.py plugins shows reference type
The optional listvars.py plugin (which adds a contextual menu "Variables used in ...") now also shows the type of reference for those variable (read, write, dispatching call,...)
GPS: revamp the debugger Breakpoints view
This view shows the current list of breakpoints set in the debugger. Its layout has been modified so that it is now smaller and can more easily be a permanent fixture of the desktop. Clicking on a breakpoint will display all its properties (both basic like file and line, exception name,... and advanced like the condition to be met for the debugger to stop).
Mar 29th, 2016
Ada.Execution_Time implemented on Darwin
The standard package Ada.Execution_Time is now supported on Mac OS X.
Mar 24th, 2016
Multiprocessor support (SMP) on leon3-elf
The ravenscar runtimes supports multiple processors on leon3-elf platform.
Mar 23rd, 2016
Optimization of memory usage for array aggregates
The compiler no longer generates an anonymous object for a declaration initialized by a qualified array aggregate.