- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Better error recovery for literal used as name
The use of a literal in a context requiring a name is an error. Previously this caused bad error recovery, with several cascaded messages in some cases. This is now corrected, and the cascaded messages are removed.
New warning for renaming function return object
A new warning switch -gnatw.r (off by default, but included in -gnatwa) generates a warning for renaming a function return object (e.g. x : integer renames f), noting that it is clearer to use a constant object declaration (x : constant integer := f), which means the same thing but makes it clear that the function is only called once.
Feb 23rd, 2007
Obsolete pragma Thread_Body removed
The pragma Thread_Body had been provided for specialized use on AE653 systems but in practice was never used and did not solve the problem it was intended to solve. It has been removed, simplifying the compiler and documentation.
Feb 22nd, 2007
GNAAMP uses secondary stack for dynamic objects
On the AAMP target only, the compiler now allocates local objects with nonstatic sizes on the secondary stack rather than on the heap. Library-level objects with nonstatic sizes are also handled this way when the restriction No_Implicit_Heap_Allocations is in force.
Feb 20th, 2007
Analyzing dispatching calls with ASIS
Asis.Expressions.Corresponding_Name_Definition now returns a reference to the corresponding dispatching operation when applied to a subprogram reference from a dispatching call (before Nil_Element was returned in this case). This allows to get to the profile of the called subprogram.
Add support for Project Explorer filters
It is now possible to filter out directories on the Project Explorer based on a given regular expression. This has been designed to filter out version control specific directories like CVS or .svn for example.
Project path command line switch to add directory
A new switch -aP<dir> has been added to gnatmake, gprmake, the gnat driver and gnatclean, to add a directory to the project search path.
Descriptor class S argument with class SB on VMS
On VMS, a function specifying a descriptor class SB parameter accepts a class SB argument and now also a class S argument, to be compatible with DEC Ada.
Feb 14th, 2007
Implementation of OMG Issue 5232
The OMG deprecated the use of anonymous type in IDL, but did not update CORBA IDL files. The issue 5232 has been filed by the OMG to fix this issue, and is now implemented in PolyORB. As a consequence, the following IDL files have been updated: idls/Interop/CONV_FRAME.idl and idls/Interop/IOP.idl. Any user code that depends on these IDL specifications might require an update.
Feb 11th, 2007
Support for SCHED_RR and time slicing on AIX
Support for pragma Time_Slice, gnatbind -Txxx and the round-robin scheduling policy has been added to the AIX version.
Feb 10th, 2007
Local exception handling
A new restriction (No_Exception_Propagation), allows limited local raising and handling of exceptions. An exception can be raised and handled if the handler is in the same subprogram (more generally in the same scope not counting blocks and packages) as the raise. For example, you can have a local handler for Constraint_Error. Propagation of exceptions to enclosing scopes is not allowed, and exception handlers may not specify an exception choice parameter. This restriction allows limited use of exception handling without needing run-time support for exception propagation. In particular, the ZFP and Ravenscar profiles for the HIE product have been modified to implement this exception (rather than No_Exception_Handlers) by default, allowing limited handling of exceptions with these two profiles.
AI-188 Setting a task base priority is immediate
This AI ensures that changing a task base priority (e.g. via Ada.Dynamic_Priorities.Set_Priority) is not deferred and performed immediately.
Feb 6th, 2007
Small alignments for records now allowed
The compiler now allows the specification of small aligments for records, even if it results in some fields becoming misaligned. Previously an alignment was rejected if it was smaller than the natural alignment of one of the record fields.
Feb 5th, 2007
Warning on imported C++ class types if not limited
The compiler now issues a warning for a tagged type declared with a pragma Import with convention C_Plus_Plus or CPP (or a pragma CPP_Class), when the type is not declared as a limited type. The type will be treated implicitly as limited.
Ada Web Server
Feb 2nd, 2007
Support pipe streams
Pipe stream is a new kind of stream which make it possible to stream the output of an external command directly. This avoids writing the data into a temporary file before sending it.