Development Log
-
GPS: display symbol names in memory view
Memory view is extended to display symbol information. -
GPS: Action tooltip in Locations view
The Locations View now displays a tooltip for the action associated with a message. -
GPS: Minimal scrolling when jumping to a location
The scrolling that occurs when going to an editor location is slightly less intrusive, scrolling minimally to reveal the location plus a bit of margin rather than centering on the location. -
GPS: improved smart completion on C/C++
GPS incorporates support to analyze the context and provide better proposals for smart completion of C/C++ entities, including cases like: x.field, x->field, x.method, x->method, x[...][...]->field, x[...][...]->method, and class::method. GPS also proposes smart completion of parameters in function and method calls. The name of the formals is added as C comments to facilitate adding the actuals. For example: "obj.copy (/* target */ , /* source */ )" -
New tool named gprinstall
A new tool named gprinstall has been implemeted and can be used to install a standard or a library project. -
New parameter for Direct_Calls_To_Primitives rule
A new optional parameter Except_Constructors is added to the gnatcheck Direct_Calls_To_Primitives rule to make the rule not to flag non-dispatching calls to dispatching functions that have a dispatching result but no dispatching parameters. -
The -brief option can be specified more than once
Some project's spark switch file contained the -brief option. These projects were impossible to also examine with GPS without completely ignoring the switch file as gnatspark always specifies -brief. The Examiner has been changed to no longer raise an error if the -brief option is specified more than once. -
GPS: displaying metrics in GPS
The GPS is able to reopen the Metrics view from the Tools->View->Metrics menu. -
GB: set actual name of main in debug config
Newly created debug configurations now set the default breakpoint to the procedure of the main executable rather than simply "main". -
New variant of -gnatn to specify inlining level
The compiler now supports the -gnatn[d] switch, where 'd' can be '1' or '2. You can use this to specify the level of inlining across modules. A level of 1 means moderate inlining, a level of 2 means full inlining (which can substantially increase compilation time). If no digit appears, the compiler will pick the inlining level based on the optimization level (1 for -O1 or -O2, 2 for -O3). -
Full-range subtypes permitted for all types
Previously, full-range subtypes were only permitted for scalar, constrained array and record (sub)types. This restriction has now been removed. -
GPS: add clear in messages contextual menu
The contextual menu for messages window is customizable through plugins and has 'Clear messages' item. -
Wildcards in Thread_Entry_Point Annotate pragmas
CodePeer now supports the same wildcard syntax in a Single_Thread_Entry_Point or Multiple_Thread_Entry_Point Annotate pragma as has long been supported for the -daemon and -reentrant command line options. -
Debugger searches symbols in same object file first
When trying to print the value of a global variable in C mode, the debugger has been enhanced to first search for that variable within the same object file. For instance, when debugging a function inside a shared library, the debugger will first search for global variables in that shared library, and then expand the search to other all other object files if no match was found. When two global variables are defined with the same name, this allows the debugger to select the one most likely meant by the user. -
Ada 2012 formal incomplete types must be untagged
The restrictions on the use of formal incomplete types given in AI05-0296 are now implemented: a formal abstract subprogram cannot have an incomplete controlling type, and the profile of the actual subprogram is not frozen if it includes a incomplete untagged type. -
Generating information of exported entities
The compiler generates extra information in the ALI files referencing entities exported to foreign languages. This information can be used by cross reference tools and text editors to improve navigation in multi-language sources. -
GPS: improve batch codefix support
GPS now provides the ability to fix automatically similar errors in batch mode when multiple choices available. -
Function calls in proof contexts
It was always possible to call functions in SPARK proof contexts, however now their return annotation (if any) will appear in the hypothesis. For a function f(x) with precondition P and postcondition Q the instantiation that will appear in the hypothesis is: ((P and in_type(x)) -> Q) and in_type(f(x)). Proof functions can now be annotated with preconditions and return annotations (and they can also be refined). These annotations will also appear in the hypotheses if such a proof function is called in proof contexts (including pre- and post-conditions). This has two benefits: structured proof is much easier to achieve and the number of user rules to write will decrease significantly. -
Implementation of interfacing aspects
The aspects Convention, Import, Export, Link_Name and External_Name are now properly implemented, as an Ada 2012 alternative for the Convention, Import, and Export pragmas (which continue to be available). -
GPS: automatic mode for “strip blanks” preference
In new automatic mode GPS detects trailing blanks on open file and strip or keep blanks on saving file accordingly. -
GPS: strip trailing blank lines
A new preference is provided in GPS to strip or keep trailing blank lines at end of file when saving editors. -
More precise analysis of standard arithmetic
CodePeer now analyzes more precisely code involving standard arithmetic functions, such as Sin and Cos, by taking into account the postconditions of these functions giving bounds and results for special values. -
New proof statement for system assumptions
A new proof statement (assume) has been added to introduce assumptions about a system. In essence, this can be used to introduce any fact into the proof system and is intended as a replacement for certain prv files. An example assumption could be "we reboot this system every 10 years, hence the uptime counter cannot overflow". -
Add postconditions to standard numeric functions
The Ada RM requires numeric functions to return values in specific ranges, and specific values for some specified argument values. Many of these are now translated as Ada 2012 Post aspects on numeric functions, so that they can used by analysis tools, such as codepeer. -
Further relaxation of static limits
The symbol table has been made dynamic and the limit of 1 million source lines per file has also been relaxed - it is now 2.1 billion lines which should be enough for most... -
GNAAMP emits exception instructions for small lib
On the AAMP target, when using the small library configuration, raises of Program_Error and Constraint_Error are compiled into EXCEPT1 and EXCEPT2 instructions rather than run-time calls, reducing code size. -
GB: Improved search results interaction
When a non-nested entry is selected in the search results, the editor is now opened on the first enclosed match rather than on the enclosing construct itself. For example, if one or more references occur to the intended entity within a subprogram, the subprogram name is the entry in the results, rather than each enclosed match being given a distinct entry. Selecting the entry for the subprogram will no longer open the editor on the subprogram name in the declaration. It will open the editor at the first enclosed reference. -
Code size reduction for controlled operations
The output of informative messages for the case of raising Program_Error in Finalize and Adjust due to earlier exceptions is now enabled only when the switch -gnateE is used. As a consequence, code size is reduced for programs using controlled types. -
GPS: inherit ALI parser for custom language
Add ability to use ALI parser to read xrefs for custom languages. -
Support for VxWorks Linux
gprbuild now support VxWorks Linux targets. -
GPS: wildcard support in Open From Project
Wildcard characters are now taken into account in the "Open From Project..." dialog. -
gnatcoll_db2ada can now generate Create_Database
This function (that is generated with the -adacreate switch) provides the necessary code to recreate the database from your application, with no need for the external files that define the schema and initial data of the database. -
GNATCOLL.Readline: new package
This package provides an interface to the readline library, providing advanced interactive input. -
GNAT.Command_Line: default value for string switch
The function Define_Switch that automatically assigns the value of the parameter to a variable will now preserve the default value set in that variable, instead of systematically reseting to the empty string. This makes it easier to specify default values. -
GNAT.Command_Line: specify argument names
It is now possible to specify the name of the argument, as displayed in the automatic help message, when registering switches in Define_Switch. This helps make the help message more readable. -
Ada 2012 Rationale - Chapter 1 - Contracts and Aspects
Read the latest installment of the Ada 2012 Rational by John Barnes:
Download Chapter 1 - Contracts and Aspects -
Ada Connection 2011 - Real-Time Management & Production Systems for Manufacturing and Energy Facilit
Here's this Monday's installment from the Ada Connection 2011 talks. Jozef Cvirik from Ipesoft gives a talk on Real-Time Management & Production Systems for Manufacturing and Energy Facilities
A new film added every Monday. To view all the films we've added to date, please visit the Ada Lecture Series.
-
Extending functionality of cil2ada
The cil2ada interfacing tool now support assemblies of .NET 4.0 -
Minutes and Seconds predefined in RavenSPARK2005
In RavenSPARK2005 mode, the functions Seconds and Minutes are now predefined in the package Ada.Real_Time with specifications as in the Ada 2005 LRM D.8. These functions are only predefined when both the Examiner switches -profile=ravenscar and -language=2005 are given. -
CodePeer now takes pragma Unreferenced into account
In the case of an assignment to a variable which is subject to an Unreferenced pragma (which indicates that the variable will never be read), CodePeer no longer generates a useless "unused assignment" warning. -
Improved detection of unreachable code
Pragmas are now ignored when checking for unreachable code. This causes additional cases of unreachable code to generate warnings (or errors in SPARK mode). This also fixes the anomaly that attempting to suppress an unreachable code warning could generate a spurious warning. -
GPS: Improved emacs selection mode support
When using the emacs mode, after setting a mark, the commands to go to the beginning and end of line will extend the selection. -
New package Clean in project file
A new package Clean is added in project files. It can contain declarations of attributes Source_Artifact_Extensions and Object_Artifact_Extensions, that specify the extensions of files whose names are derived from source or object file names, that reside in the object directory and that are to be cleaned by gprclean. -
GPS: isearch.py stores result of ctrl+w in history
When you start a search (ctrl+s) and then use ctrl+w to copy parts of the current identifier as the search pattern, this pattern is now stored immediately in the history. That way, cancelling the search and restarting it with ctrl+s ctrl+s will search what was copied (we used to update the pattern only after you pressed ctrl+s a second time after ctrl+w). This is closer to Emacs' behavior. -
Enhanced heap support in GNAAMP libraries
A more flexible version of the low-level support for heap allocations (package Heap_Simple) is integrated in the GNAAMP run-time libraries, allowing selection of different pool sizes by changing the template.lec file to include the appropriate heap_pool_*.obj. Heap support can be included or excluded based on object include directives and the setting of the symbol _HEAP_INIT in template.lec. -
Exception-handling support in AAMP small library
The GNAAMP small run-time library (aamp*-small) now includes support for basic exception handling, based on a reduced version of the Ada.Exceptions package. -
GPS: UI: add custom radio menu items
The GPS API GPS.Menu has been enhanced to allow creation of radio menu items and get/set their activity status. -
GNATCOLL.SQL quotes table and field names
When a table or field name is also a SQL keyword (or has a special meaning for one of the DBMS) it is now quoted. This gives more flexibility in what names can be used for the database model. -
GNATCOLL.SQL.Sqlite binding for online backup API
GNATCOLL now provides a binding to sqlite's online backup API, allowing to manipulate a database in memory and then dumping to the disk (or the opposite), which can greatly speed up operations. -
GNATCOLL.SQL.Exec.Insert_And_Get_PK
This new function provides an efficient way to insert a new row in a table and immediately retrieve its primary key (for instance when the key was computed from a sequence). This can be more efficient than using the function Last_Id.