Development Log in 2012.
-
Avoid false elab warnings on assertion calls
The warning circuit for elaboration calls has been enhanced to avoid some false positive warnings for functions called assertion expressions (e.g. the argument of a Postcondition pragma or Post aspect). -
Ada 2012 aspects allowed on renaming declarations
In Ada 2012 mode, aspects are now allowed on all renaming declarations. This is relevant only for implementation-defined aspects (e.g. Warnings => Off). -
New Linker attribute Trailing_Switches
A new attribute Trailing_Switches has been added in package Linker of project files. These switches are added in the linking command line after the required switches, so that they can override these switches. -
Pragma Interface/Interface_Name and obsolescence
Pragma Interface is now considered as violating the No_Obscolescent_Features restriction even in Ada 95 mode. Both pragmas Interface and Interface_Name generate warnings if -gnatwj is set. But note that Interface_Name is not considered to violate the restriction (since it is a GNAT defined pragma that does not appear in Annex J). -
Handling of missing IS for expression function
Error handling for some common cases of forgetting the IS that follows an expressions function is improved, and a clear error message complaining about the missing IS is now given. -
—config= in Builder switches
gprbuild now takes into account a switch --config= in package Builder of the main project. -
Make predefined packages compatible with UTF-8
IAC generates pragma Wide_Character_Encoding to allow usage of prodefined CORBA packages in code with different encoding. -
Support for ‘json’ type in GNATCOLL.SQL
It is now possible to specify a field type as 'json'. This will be translated to text or json, depending on the SQL engine. -
Improved diagnostic on invalid component rep-clause
The compiler was improved to emit more precise error messages when detecting an invalid representation clause for a volatile or atomic record component, either misaligned or of a size not matching the type's Object_Size attribute. -
Add support for distributed compilation
It is now possible to use multiple computers to conduct the compilations. This can give good speed-up for large projects. -
Specify postgreSQL’s port number
It is now possible, when connecting to a postgreSQL server, to specify which port number should be used. -
Additional standardisation in Simplifier
The Simplifier now standardises conclusions after all other proof strategies are completed. In some cases this enables it to discharge conclusions that were previously left undischarged. -
Rules for proof of rounding from real to integer
The Examiner now emits rules for rounding to integer types when VCs involving real numbers are generated. This enables the proof tools to discharge VCs involving rounding which previously could not be proved without supplying user rules. -
Better handling of symbolic traceback in GNU/Linux
It is now possible to get proper symbolic traceback from a shared library on GNU/Linux when using the GNAT.Traceback.Symbolic unit. The traceback crosses the shared library and gives proper symbolic information for the caller module (executable or shared library). -
Better handling of symbolic traceback in Win32 DLL
It is now possible to get proper symbolic traceback from a Windows DLL when using the GNAT.Traceback.Symbolic unit. The traceback crosses the DLL and gives proper symbolic information for the caller module (executable or DLL). -
Accuracy of time conversions for bare board targets
The implementation of functions To_Duration and To_Time_Span for bare board Ravenscar run-time libraries has been changed to reduce accuracy losses and the occurrence of overflows. -
Improve DFW server lookup for GPS/GDB for VxWorks
When an exact match is found, favour it over other (partial) matches. -
GPS: EditorOverlay can now highlight a whole line
The EditorOverlay class can now be used in Python plugins to highlight an entire line, through the property "paragraph-background":# Create an overlay for an editor: b = GPS.EditorBuffer.get(GPS.File ("my_file.adb")) o = b.create_overlay("my_overlay_name") # Set the paragraph-background property to pink o.set_property ("paragraph-background", "#f0c0c0") # This highlights the entire line 317 in my file b.apply_overlay (o, GPS.EditorLocation(b, 317, 1), GPS.EditorLocation(b, 317, 1)) -
SPARKMake returns non-zero exit status on error
SPARKMake now returns a non-zero exit status when it encounters an error, thus making it easier to detect problems when used in an automated build process. Some SPARKMake warnings have been reclassified as errors. Details are in the SPARKMake User Manual. -
Unconstrained float overflow checks
CodePeer now comes with an option to check for overflow on unconstrained floating point types. Previously, CodePeer was following the semantic of most Ada compilers who do not generate overflow checks on unconstrained floating point types. A new switch is provided (-gnateF) to generate SCIL files with these additional checks. -
New option to disable text listings
A new switch (-no-text-output) is available to disable the generation of text listings when CodePeer generates reports. This is similar to the existing -no-html-output and can be used to speed up CodePeer processing when these text listings are not used. -
Precise analysis of int to float conversions
The treatment of integer to float conversion was imprecise, leading to false positive messages. For example, CodePeer did not realize that Float(0) = 0.0. A precise analysis of such conversions is now implemented. -
Switch/pragma to force overflow checking on float
The configuration pragma Check_Float_Overflow, or the -gnateF compiler switch can be used to set a mode in which unconstrained floating-point types (such as the predefined type Float) do overflow checking against the base range bounds for operators instead of generating infinities. This adds considerable overhead, but may be required in some cases. -
Tag warning messages with relevant switch
The switch -gnatw.d causes warning messages to be tagged showing how they are controlled. If a warning is generated by default, the tag is [enabled by default]. If a specific warning switch controls the generation of the warning then the tag is the switch to turn the warning on/off. For example: [-gnatwj] for obsolescent features, -gnatwj turns the warning on and [-gnatwJ] turns the warning off. This mode is normally off, it is turned on by using the switch -gnatw.d. This feature is not available in OpenVMS versions of GNAT Pro. -
GPS: Key shortcuts dialog display improved
The display of the key shortcuts in this dialog now matches what is done for the toplevel menus, using symbols like up arrow for the shift key, a caret sign for the control key, and the special symbols for Mac keyboards. -
New switch: -level
A new -level switch is introduced, which replaces -global and -quick switches, and introduces new levels of analysis, to allow purely local and fast analysis, up to fully global analysis, depending on the needs. -
Support for ‘varchar’ in GNATCOLL.SQL.Inspect
gnatcoll_db2ada is now able to understand the type 'varchar' -
CodePeer web server and message editing
CodePeer now comes with an optional web server which can serve the HTML pages it produces, and allows users to edit messages manually from their web browser on a remote machine. -
New subprogram GNATCOLL.VFS.Size
It is now possible to query the size of a file, including on remote file systems. -
GPS: Project, Files and Windows views pop-ups
Tooltips added to views to help navigation when windows are narrow. -
ECL: Android development supported
GNATbench now provides an integration with the Android Development Toolkit (ADT) for mixed Ada-Java development. Java applications on the Android can invoke Ada code using interfaces automatically generated by AJIS. A new project type and corresponding new-project wizard are provided. -
GPS: the Project Wizard takes advantage of gnatname
The project wizard now optionally uses gnatname to search for Ada units in files with non-standard naming conventions. -
attributeGroup support in simple type extensions
It is now possible to extend a simple type in a XSD file, and define which attributes are valid in the extension through a <attributeGroup> tag. Previously, the attributes had to be specified one by one through the <attribute> tag. -
CSV output
The codepeer_msg_reader tool has a new switch -csv to output messages in CSV format, suitable for use in spreadsheets, and containing extra information such as whether messages are new, or have been reviewed. -
ASIS Corresponding_Declaration for entries
The Asis.Declarations.Corresponding_Declaration query is extended for An_Entry_Declaration elements. This allows retrieval of the explicit entry declaration corresponding to an implicit inherited declaration of an entry of a derived record or protected type. -
New gnatpp option to set named number casing
A new option -nn(D|U|L|M) has been added to gnatpp. This option allows specifying the casing of names introduced by named number declarations. -
Unconditionally create—autoconf= path
gprbuild now creates unconditionally the directory of the configuration project file specified with --autoconf= when this directory does not exist. -
Improved recognition of stub subprograms
When CodePeer encounters a routine whose body consists of only a raise statement and for which No_Return has not been specified, it is assumed that this is a stub routine whose "real" implementation has not been provided. Calls to the subprogram are not treated as errors but instead as calls to a subprogram whose implementation is unknown. -
Speed up GNATCOLL.SQL.Sessions
The internal handling of the cache in the sessions has been optimized, leading to execution as much as three times faster on a code that performs a lot of manipulation of database elements. -
Improved Simplification for composite constants
The Simplifier's rules for processing composite constants have been improved. Consequently, users may notice more VCs being discharged by the Simplifier. -
ECL: AJIS development supported
GNATbench now provides an integration with AJIS, the high-level Ada-Java Interface Suite. A new project type and corresponding new-project wizard are provided. -
New API GNATCOLL.Xref and gnatinspect
A new package GNATCOLL.Xref is provided to perform cross-reference queries on source code. It analyzes the compiler generated .ali and .gli files, and stores them in a sqlite database to perform fast queries. An external tool gnatinspect is also provided that provides a command line interface to this package, that can be used from non-Ada tools. -
[VMS] Support for DECForms in DEClib
The DECForms API (forms_definitions.ad[bs]) has been ported and added to DEClib providing the capability to develop and deploy forms-based user interfaces for interactive applications running on VMS. -
Pragma Attribute_Definition
A new implementation defined pragma Attribute_Definition has been implemented, which allows an attribute definition clause to be expressed as "pragma Attribute_Definition (Attribute, Entity, Expression);". If the attribute is known to the compiler, this is equivalent to "for Entity'Attribute use Expression", otherwise the pragma is ignored. This allows source code to be written that takes advantage of some new attribute, while remaining compilable with earlier compiler versions (which ignore unrecognized pragmas, but not unrecognized attributes). -
Add A_Box_Expression to Asis.Expression_Kinds
According to ARG ASIS 2005 Draft, A_Box_Expression is added to the set of values of the Asis.Expression_Kinds. This makes processing of <> in association more convenient. -
AI-421 Sequential activation and attachment
The Sequential partition elaboration policy is supported for restricted (Ravenscar) runtimes. When this policy is used, tasks activation and interrupt handlers attachment is deferred until all library units are elaborated. -
Support for -jobs 0
The -jobs switch now accepts the special value 0 which means use the number of cores available on the machine. -
Improved generated code for VAX float literals
On OpenVMS platforms, real literals using the VAX float representation are now directly emitted. Generated code is much smaller and compile time is reduced. -
GPS: Show protected objects in Outline view
Protected and task types/objects and their entries are now visible in Outline View. New filter in Outline View "Show tasks, entries, and protected types" is used to show/hide these items. -
New switch: -output-msg
CodePeer now takes a new -output-msg switch when using project files, and outputs compiler-like message directly by calling codepeer_msg_reader automatically.