- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
More flexibility for comment style check
The comment style check (-gnatyc or /STYLE_CHECK=COMMENTS in VMS) has always allowed a special character after -- for full line comments. This new feature allows the same usage for comments appearing on the same line as other code to accomodate certain tools that generate such comments.
VMS keyword added for -gnatVe switch
The VMS keyword VALIDITY_CHECKING=[NO]COMPONENTS is added to disable/enable validity checking of elementary components (non-VMS equivalent -gnatVe/E).
Support for annotated comments highlighting
The Ada source editor will now highlight with a different color annotated comments (e.g. --#).
Feb 28th, 2008
Reference case check now includes named parameters
The -gnatyr (STYLE_CHECKS=REFERENCES in VMS) now includes the checking of formal parameter names in named calls to make sure that the casing matches that of the formal parameter name in the subprogram specification.
Improved interface for code completion
Smart completion now completes the currently highlighted word when receiving a character which does not belong to an identifier (for instance dot, colon, semi-colon, etc).
Support for -eL gnatmake/gprbuild switch
When the 'Fast Project Loading' preference is enabled, GPS will now automatically call gnatmake, gnatclean, gprclean and gprbuild with the -eL switch. Note that for gnatclean and gprclean, this requires a recent version of these tools.
Feb 26th, 2008
Gnatclean recognizes switch -eL
Gnatclean now recognizes switch -eL to follow symbolic links when processing project files, as gnatmake already does.
All lib projects may import project without sources
All library projects, including shared library projects, are allowed to import projects without any sources, even when this is not declared explicitly.
Environment variables passing to slave partitions
A list of environment variables can now be associated with partitions in gnatdist configuration files. When starting a distributed application using a generated launcher (shell or Ada), these variables are then passed from the main partition's environment to the slave partitions.
Gnatdist displays executed commands
When not in quiet mode, gnatdist now prints all commands it executes on standard error, just as gnatmake.
Feb 23rd, 2008
Stream attributes now available for Bounded_String
Stream attributes are now available by default for all Bounded_String types created by instantiating Ada.Strings.Bounded.Generic_Bounded_Length.
Feb 22nd, 2008
Gnatmake prints commands to stderr with projects
Gnatmake now consistently outputs executed commands to standard error when using project files, as was already the case when not using projects. The user can request commands to be sent to standard output instead (whether or not projects are used) using command line switch -eS (/STANDARD_OUTPUT_FOR_COMMANDS on VMS).
Ability to select the run directory
GPS now provides the ability to choose between the executable directory of a program and the current directory to run or debug an application.
Improved editing for gpr files
GPS now recognizes gpr specific keywords (e.g. project, external) when editing, in particular when performing automatic casing.
Feb 21st, 2008
po_gnatdist does not depend on polyorb-config
The PolyORB/DSA partitioning tool, po_gnatdist, does not depend on the external shell script polyorb-config to locate the PolyORB runtime library anymore. This allows po_gnatdist to be usable on platforms that do not provide a Bourne shell, such as MinGW.
Feb 20th, 2008
New back-end warning switch to activate warnings
The back-end warning switch -Wall (/ALL_BACK_END_WARNINGS for VMS) can now be used to activate selected back-end warnings in addition to -gnatwa.
Improved indentation of “raise with”
The Ada 2005 construct "raise Exception with msg" is now better indented, in particular when a line break is added as part of this construct.
Improved handling of dispatching calls
GPS now handles by default dispatching calls in contextual menus, and if there are several primitive operations corresponding to a dispatching call, will display a submenu for "goto declaration/body" entries. Previousely, this capability was disabled by default, and when enabled manually, a submenu was always created for dispatching calls, even when only one primitive operation existed.
gprbuild no longer packaged with GPS
GPS binary distributions no longer come with gprbuild, to avoid confusion with existing gprbuild versions, packaged with GNAT. For users of older versions of GNAT, it is also possible/recommended to install gprbuild from a standalone package.
Feb 18th, 2008
Coupling metrics are added to gnatmetric
Coupling metrics are added to gnatmetric tool. These metrics estimates the dependencies among packages and package hierarchies defining tagged types.
Menu Build->Check Semantic
A new menu Build->Check Semantic is provided, similar to Build->Check Syntax to check for semantic errors in a given Ada source file.
Feb 17th, 2008
Indentation checked for exception handlers
If an indentation level style check is set, this now applies to exception handlers as well. The WHEN keyword must be on some multiple of the specified indentation level.
New gnatcheck rule for metric values
A new rule Metrics_Violation is added to gnatcheck. The rule allows the specification of a limit for metric values for the units being checked, issuing diagnostics if the value exceeds the given limit. The rule checks cyclomatic complexity, essential complexity and LSLOC metrics.
Asis.Extensions queries for overridden operations
Two new queries are added to package Asis.Extensions. Is_Overriding_Operation checks whether a given subprogram declaration (or subprogram instantiation) overrides a (user-defined) primitive operation of a type, and Corresponding_ Overridden_Operation gets the declaration of the overridden operation of the parent type.
Feb 13th, 2008
The videos of the presentations given at the recent Ada event in the UK can now be viewed here:
- Sufficient Evidence?
- Porting to Ada 2005
- Can Ada be used with Multiple Independent Levels of Security?
- The Marte run-time and the advantages Ada has for real-time programmers
- Correctness by Construction: Putting Engineering into Software
- The automatic extraction of semantic information using advanced static analysis
- The DO-178C standardization process and implications for language
- Using Ada for software development tools
- The future of programming languages
Feb 13th, 2008
Block stream IO for strings
The compiler expands stream attributes for String, Wide_String, Wide_Wide_ String, Unbounded_String, Unbounded_Wide_String, Unbounded_Wide_Wide_String, Bounded_String, Bounded_Wide_String and Bounded_Wide_Wide_String into block read and write calls instead of character-by-character read/write calls. This provides a substantial improvement in performance.
New attribute Inherit_Source_Path
A new attribute Inherit_Source_Path allows sources of a language to import source or header file from another language. Example:
for Inherit_Source_Path ("C++") use ("C");allows C++ sources to be compiled with a source search path that include all source directories of imported projects with C declared as a language.
Feb 12th, 2008
Support for scalar types with small alignment
It is now possible to specify a smaller alignment than the natural one for enumeration, integer and fixed point types.
Feb 7th, 2008
Support for paths with spaces in ada_object_path
Paths containing spaces can now be added to the ada_object_path and ada_source_path files.
Feb 4th, 2008
Improved stream operations on string types
The compiler no longer generates numerous identical stream routines for Bounded, Unbounded and regular String types.
New attribute Invalid_Value
A new attribute Invalid_Value yields a value representing an uninitialized value. The value is the same that would be obtained by using the pragma Initialize_Scalars for an otherwise uninitialized variable.
Improved output for implicit types from -gnatG
The output from -gnatG has been improved to do a more complete job of printing declarations for implicitly constructed types referenced in other statements and declarations that are output.
Feb 1st, 2008
Better warnings for known-false string compare
The compiler now detects more complex cases of string comparisons known to be false because of length mismatches, where the operands are slices that use X'First or X'Last, e.g. X(X'First..X'First+1)="abc". A warning will be generated for such comparisons if -gnatwc or -gnatwa is set.