- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
VCS_Patch_Root can be specified as relative path
It is now possible to set the package's IDE VCS_Patch_Root attribute to a relative path. This way it is easier to share a project between developers who may have different setup.
Support for Diab C compiler
The Diab C compiler is now supported for powerpc-elf (using the ppc750 variant).
Aug 26th, 2008
Ben Brosgol has recently published a paper in COTS Journal that examines the real-time advantages of Ada and Java:
"On the surface, Ada and Java offer similar features to support real-time embedded military applications. But under the hood, they differ significantly in their underlying philosophy."
To read the full article, please click here Real-Time Concurrent Issues Drive Ada versus Java Choice or visit http://www.cotsjournalonline.com/home/article.php?id=100827
Ada Web Server
Aug 21st, 2008
Add upload control
Upload_Size_Limit can be used to control the uploads to the server. If the received data is larger than this limit, AWS won't upload by default. It is still possible to upload the data using AWS.Server.Get_Message_Body on user's callback if necessary.
Aug 19th, 2008
Better handling of invalid values
Previously the compiler always assumed that values were in range of their subtypes, except for the case of a use of 'Valid. This meant that in the case of invalid representations, there could be surprising behavior. The compiler now avoids such assumptions in default mode, leading to less surprising behavior. The old behavior, which may be more efficient in some cases can be restored by using the -gnatB switch or by use of the configuration pragma Assume_No_Invalid_Values (On).
Debugger contextual menu handles expressions
The Debug contextual menu will now take into account the full expression to display a variable. For instance, if you leave your cursor on X in "A.X", then the command sent to the debugger is "print a.x". This also works with more complex expressions like "A(5) . X" (or if there are comments in the middle of the expression).
New menu /Build/Run/Last Launched
This menu allows you to spawn exactly the same command that you previously spawned through the /Build/Run menu. No dialog is open to ask for arguments. This menu can conveniently be bound to a key shortcut through the /Edit/Key Shortcuts menu.
Ada Web Server
Aug 18th, 2008
Add shutdown mode parameter
Shutdown routine in AWS.Net is now able to shutdown the read, write or both side of the socket.
Importing predefined projects
When you add a dependency to your project (through the Project/Dependencies contextual menu in the project view) on a predefined project (ie one installed in the system's standard directories, like all the projects installed with the GNAT addons), your project is modified so that the with statement does not use absolute paths. This allows you to for instance update the version of your compiler without modifying your projects.
Aug 17th, 2008
Better handling of maximum messages switch
The -gnatmnn (-mnn for binder) switch now controls warnings and errors independently. If the maximum count of warnings is reached a message is output and subsequent warnings are suppressed, but the compilation is continued. If the maximum count of errors is reached, then a message is output and the compilation is abandoned.
Aug 15th, 2008
Warnings for misuse of Table_Ptr in table packages
The declared types Big_Table_Type and Table_Ptr in packages GNAT.Tables and GNAT.Dynamic_Tables are not intended to be used by clients. Any attempt to allocate a Big_Table_Type object will typically cause a Storage_Error at run time, and now a warning is always generated at compile time if such an allocation attempt is made.
New read-only project-level attribute Name
A new read-only project-level attribute Name has been added to the Project Manager. Its value is the name of the project in lower case.
Automatic initialization of sockets subsystem
Users of GNAT.Sockets do not need to call GNAT.Sockets.Initialize nor GNAT.Sockets.Finalize explicitly. All required initialization and finalization actions are now performed automatically by the GNAT runtime library. For compatibility with existing applications, dummy no-op routines are supplied.
New read-only project-level attribute Project_Dir
A new read-only project-level attribute Project_Dir has been added to the Project Manager. Its value is the path name of the project directory.
No_Streams restriction forbids stream attribute use
The use of the No_Streams restriction now forbids the explicit use of stream attributes as well as the declaration of stream objects.
New debugger preference: Debugger Windows
A new preference was added, available in the Debugger tab. It lets you choose what should be done with the debugger-related windows when the debugger is terminated (call stack, data window, threads,...) You can chose to destroy them (the behavior in previous versions of GPS), keep them open, or hide them. In the last two cases, they will of course be reused the next time you start a debugger, and this therefore provides a way to preserve the location of these windows across sessions
Warning on missing overriding indicators
The compiler now warns when the declaration of an overriding operation on a type extension does not carry an overriding indicator. The new warning is enabled by the gnat style switch -gnatyO.
Better placement of missing body messages
For a subprogram with a missing body, if the spec is in the same source file, the error message is now placed on the spec, rather than on the body.
Enhancements to pragma Check_Policy/Obsolescent
The second argument of pragma Check_Policy can be given an identifier of Policy. The second and third arguments of pragma Obsolescent can be given identifiers Message and Version. Note that in accordance with RM 2.8(4), the use of these new identifiers is mandatory if the first argument has an identifier. The compiler did not always catch violations of 2.8(4) (see known problems entry for H813-005), so it may be necessary to change some existing uses of pragma Obsolescent.
Improvements to pragma Obsolescent
The implementation of pragma Obsolescent now allows the entity parameter to be present or absent (that is, the old version without the entity is considered fully supported and not obsolete). It is no longer required to use the "Entity =>" identifier for the first parameter when the entity is present. Instead this is now like any other pragmas, you can choose whether or not to use argument identifiers.
Fixing “multiple blank lines” error message
The style error "multiple blank lines" is now automatically fixable in GPS, extra blank lines get removed when the fix is applied.
Call graphs now uses dispatching information
When a subprogram A has a dispatching call to subprogram B (or one of its overriding procedures B'), then both B and B' are now displayed in the callgraph. This also applies when looking for the callers of a subprogram, and helps locate all places where a subprogram might potentially be called.
Refactoring read-only files
When renaming an entity, GPS now has the capability to make files writable before doing the change. The default is still to ignore read-only files
Renaming parameters in overriding subprograms
When using the refactoring capabilities of GPS to rename a subprogram parameter, you can now optionally also rename parameters with the same name in overriding or overridden subprograms.
Aug 11th, 2008
Fast path CDR marshalling
The CDR module now takes advantage of the fact that some common aggregate types (arrays and sequences of characters, octets and integers) have a memory representation that is identical to the CDR representation to transmit and decode them efficiently. This new feature is enabled by default but can be turned off by setting enable_fast_path to FALSE in the [cdr] section of the PolyORB configuration.
Specifying executable name in gprconfig
The --config switch parameter to gprconfig can now be used to specify the base name of the executable you want to use. This can be used to easily select a type of compiler over another type, no matter whether it appears first in the path or not.
Aug 9th, 2008
Support for pragma Thread_Local_Storage
A new pragma Thread_Local_Storage ([Entity =>]library_LOCAL_NAME) is now implemented. This can be used to mark package variables as being treated as thread local storage (TLS). On systems where this is supported (Solaris, GNU/Linux, VxWorks 6), this means that each thread (each task in the Ada sense) will see a distinct version of this variable.
Gnatdist configuration language support
Add syntax highlighting and support for showing the entities in the project explorer for the Gnatdist configuration language. Add also Gnatdist compiler tool with switches.
Support delimiters highlighting within comments
Highlighting of matching brackets/parenthesis now works within a same comment block.
New attribute in Language / Category node
In language category definition, the new attribute End_Index allows to select parenthesis-pair of the regular expression after which the next search will begin, instead of continuing after the end of the pattern.
Aug 5th, 2008
Warn on empty main file name in project
The Project Manager issues a warning when one of the mains in attribute Main has an empty name.
Aug 1st, 2008
Text_Translation Form parameter for Text_IO
A new Form parameter may be passed to Text_IO.Create and Text_IO.Open: Text_Translation=Yes is the default, and it means to translate LF to/from CR/LF on Windows systems. Text_Translation=No disables this translation; i.e. it uses binary mode. For output files, Text_Translation=No may be used to create Unix-style files on Windows. Text_Translation is implemented only on Windows systems. It has no effect on any other version of GNAT Pro. Note: The default behavior has not changed; the behavior with Text_Translation=Yes is identical to the behavior before implementation of this feature.