- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Oct 30th, 2005
Table performance in GNAT.Spitbol improved
The performance of the hashing algorithm used in the implementation of the Spitbol table function has been improved.
Oct 29th, 2005
Obsolescent pragma applies to packages
A pragma Obsolescent may now be used as a program unit pragma within the declarative part of a package. A client with'ing a package with such a pragma is considerd to violate pragma Restrictions (No_Obsolescent_Features), and warnings will be issued if -gnatwj mode is active.
Oct 27th, 2005
New verbosity levels for gnatmake
Three new switches are added to gnatmake: -vl (verbosity Low), -vm (verbosity Medium) and -vh (verbosity High, equivalent to -v). For each verbosity level, potentially fewer lines are output than for the nest higher verbosity level.
Oct 23rd, 2005
Warnings for dubious comparisons
If two quantities are compared using >= or <= and the compiler can tell that only = is possible, it will warn that the > or < condition is impossible if the warn on constant conditionals option (-gnatwc or -gnatwa).
Oct 20th, 2005
Improved exception message for Host_Error
When GNAT.Sockets.Get_Host_By_Name/Get_Host_By_Addr raises an exception, a meaningful explanatory message is now attached to the exception occurrence giving an indication of the cause of the error.
Oct 19th, 2005
New form allowed for -gnatm switch
An equal sign may now optionally precede the numeric value in a -gnatm switch, so that for example, you can write either -gnatm2 or -gnatm=2.
Improved warnings on unused generic formals
Generic formal parameters of generic subprograms are now flagged if they are not referenced in the body of the subprogram.
Improved efficiency for Vax Float
On OpenVMS, if pragma Float_Representation (Vax_Float) is used, then implicit generated code was correct, but overused Vax_Float formats for implicit conversions and other operations. This is now corrected, improving the efficiency of programs using this pragma.
Debugger option to print arrays with indexes
The debugger has been enhanced to provide the option of printing the indexes of each element when printing an array. This option is controllable using the "set print array-indexes" command.
Static Elaboration model works with -gnatp
As documented, pragma Suppress (Elaboration_Check) can be used to suppress static elaboration checking, even though no run-time checks are involved. An unintended consequence was that -gnatp and Suppress (All_Checks) disconnected static elaboration processing, since they implied suppression of Elaboration_Check. The compiler has been modified so that it is no longer the case that the use of -gnatp or Suppress (All_Checks) has any effect on elaboration order (run time checks for the dynamic elaboration model will still be suppressed).
Oct 5th, 2005
Better exception support on Solaris
Added the required support for unwinding through signal handlers in new Solaris versions. It allows exception propagation through signal handlers when using the zero cost exception mechanism.
Switch for gnatprep to replace in comments
A new switch -C for gnatprep (/REPLACE_IN_COMMENTS for OpenVMS) causes preprocessing to scan comments, and do normal replacements on any $symbol occurrences within the comment text (this is particularly useful for structured comments, e.g. in SPARK).
Unsupported task switch message in debugger
The debugger now prints an error message when attempting to perform a task switch in the debugger while debugging from a core file, which is not supported. This prevents any confusion about the result of the action.
Multicast output interface control
The Get_Socket_Option/Set_Socket_Option interface in GNAT.Sockets now provides a new option, Multicast_If, corresponding to the IP_MULTICAST_IF setsockopt option. This allows the user to get and set the default output interface for a multicast socket.
Support for socket I/O timeouts control
The Get_Socket_Option/Set_Socket_Option interface in GNAT.Sockets now provides two new options, Send_Timeout and Receive_Timeout, corresponding to the SO_SNDTIMEO and SO_RCVTIMEO setsockopt options. This allows getting and setting the output and input timeout values for a socket.
Improved string for Expression_Error
When using GNAT.Regpat, the Expression_Error exception may be raised when parsing an invalid regular expression. More details on the invalidity is now provided as part of the message associated with the exception propagation.
Oct 2nd, 2005
Improved warning control via pragma
Pragma warnings can now be used to selectively turn on and turn off specific warnings (using the same set of warning characters available in command line options).
Optimized calls to imported subprograms
Calling an imported function or procedure via an access value is now much more efficient (it used to be rather expensive due to the use of a stub (called a trampoline). This is no longer generated and the call is directly to the subprogram.
Improved message for complex ambiguity
If an operand of a concatenation is a call to a function that returns an array, and the function can be called without parameters, the operation is ambiguous because the call can also be interpreted as an indexing of the result of a parameterless call, and two concatenation operations are available (array/array, array/component). The error message for this case now describes precisely the two possible interpretations.