- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Automatic flow analysis mode is the default
The default flow analysis mode is now automatic, which replaces the previous default of information flow. Automatic flow analysis was introduced in release 10. In this mode the Examiner selects information flow or data flow analysis on a per-subprogram basis depending on the presence or absence of derives annotations. This change is backwards compatible for current projects using information flow, data flow or a combination of the two. However, if you wish to enforce information flow or data flow for all analysis this can still be done explicitly via the option -flow=information or -flow=data.
Miscellaneous updates to Victor
We have fixed a number of small issues with victor wrapper: timing information is now correctly stored in the .vct files; temporary files are now correctly deleted; temporary files can be placed in the current working directory and not deleted using the new -keep flag; and finally, experimental support for CVC4 has been added.
Debugger condition support in exception catchpoints
The debugger has been enhanced to support the use of conditions attached to exception catchpoints.
Avoid obsolescent feature messages for instances
When restriction No_Obsolescent_Features is used, the use of an obsolescent feature in a generic template results in a diagnostic only when compiling the template, and not when compiling instantiations of the generic.
Jan 30th, 2012
February 21, 2012 - 4:00pm GMT, 5:00pm CET, 11:00am EST
The InSight webinar series continues with a presentation on the new features of the AdaCore/Altran Praxis joint offering – SPARK Pro 10.1. SPARK Pro combines the proven SPARK Ada language and supporting toolset with AdaCore’s GNAT Programming Studio (GPS) integrated development environment, backed by unrivalled support systems.
SPARK 10.1 includes the following enhancements:
- Generics Phase 1 – Release 10.1 includes the first phase of the addition of support for Ada generics to the SPARK language and toolset
- Dynamic Flow Analyser and VCG Heaps
- Unicode characters now allowed in strings
- Improved use of types and subtypes in FDL
- Improvements to Simplifier tactics and performance
- Auto-generation of refinement rules
- Improvements to SPARKBridge
- New SPARKClean utility
This webinar will include a demo and Q&A session with the developers of the SPARK Pro toolset.
To register for this webinar please visit:
Ada Web Server
Jan 27th, 2012
- Impacted versions of AWS store key/value pairs from submitted form data in hash tables using a hash function that has predictable collisions. As a result, a single specially crafted HTTP request can cause the server to use hours of CPU time, thus causing a denial of service.
- All AWS releases and wavefronts prior to 2012-01-21
- This was fixed in AWS 2.11 and 2.10.2 on 2012-01-21
Jan 27th, 2012
Improved error messages for violation of 12.3(18)
If an instantiation is illegal because a private primitive operation in the generic fails to override a visible operation in the same generic, the compiler now reports the names of the relevant type and operation.
Jan 26th, 2012
Verbosity when linking shared SALs
In default mode (not verbose and not quiet), the base name of gnatbind and of the compiler when binding and compiling the binder generated file is now output, instead of the full path names. Also, when the command line is long, only the beginning is output.
Jan 26th, 2012
Alt-Ergo 0.94 and more fine-grained steps
Upgraded SPARKBridge's default SMT solver, Alt-Ergo, to version 0.94. Additionally this version includes more fine-grained proof steps for better predictability, which is helpful in regression testing.
ECL: Removal policy when fixing code
The preference "Removal policy when fixing code" has been added to the Ada "General" preference page. It defines the way code should be altered when sections of code are to be removed. - "Always_Remove" means that the code will be removed by GNATbench. - "Always_Comment" means that the code will always be commented out. - "Propose_Both_Choices" will propose a menu with both choices.
GPS: goto next/previous bookmark
Two new actions ("Goto Next Bookmark" and "Goto Previous Bookmark") are now available to jump to the nearest next or previous bookmark in the current file. These actions can be bound to keys in the "General" section of the Key Shortcuts dialog.
Jan 23rd, 2012
Documentation converted to sphinx
The documentation format was changed, so that we can produce nicer looking output. In particular, the new format provides an integrated search feature over all pages of the manual.
Jan 23rd, 2012
Simple storage pools
The GNAT-specific pragma Simple_Storage_Pool_Type (or aspect) can be applied to library-level limited types to designate the types as simple storage pool types. Access types can be associated with a simple pool object via the new Simple_Storage_Pool attribute (or aspect), so that allocators will invoke the Allocate procedure of the simple storage pool. This is an alternative to Ada's standard storage pools that does not require tagged types or finalization support, which may be useful in some contexts (for example, certification contexts where tagged types and finalization are forbidden).
Jan 21st, 2012
Better warnings for suspicious mod values
Two more cases of suspicious mod values (for example in "type X is mod 2*8", and "R := X mod 2 * 32"), where in each case the * should almost certainly be **, now generate warnings under control of -gnatw.m (on by default).
Jan 11th, 2012
Aggregate projects and auto-configuration
gprbuild fails when the project tree includes only aggregate projects and aggregate libraries projects. When gprbuild is called with a main project that is either an aggregate project or an aggregate library project, if auto-configuration is used, the configuration project file is created in the object directory of one of the non aggregate projects in the project tree.
GPS: New action “Delete Line”
This action deletes the current line and places the cursor on the beginning of the following line. It can be bound to a key in the "Editor" section of the Key Shortcuts dialog.
GB: display task info in debug view
Ada task information is now displayed in the debug view. This feature can be enabled/disabled from the debug view menu.
GB: Put AdaCore icon on About Eclipse SDK panel
The AdaCore icon is now displayed in the About box and links to the installed GNATbench features.
GNATCOLL.SQL.Postgres adds support for regexps
The package GNATCOLL.SQL.Postgres now adds support for the postgreSQL specific "~*" operator, that matches regular expressions.
Jan 4th, 2012
New switch—validate for gprconfig
This switch can be used to validate the XML files from the gprconfig knowledge base. It should be used when you add your own XML files.
License updated to GPL3
The license for gprbuild is now GPL3.
Jan 3rd, 2012
Here's this Monday's installment from the Ada Connection 2011 talks. Jeff O’Leary from the Federal Aviation Administration gives a talk on Assuring Software Reliability While Using Web Services and Commercial Products
A new film added every Monday. To view all the films we've added to date, please visit the Ada Lecture Series.
Jan 1st, 2012
AI-0232 Hole in AI05-0067, build-in-place rules
Function calls returning limited types work properly (without a copy, what the Ada RM calls "built in place") even in cases where the limitedness is not known at compile time because the function returns the class-wide type of an interface type. GNAT has always implemented this correctly.
AI-0222 Primitive subp completion ok post-freezing
This AI confirms that the existing behavior of the GNAT compiler is correct in not treating the completion of a subprogram as a declaration for purposes of checking the rule prohibiting the declaration of a primitive operation of a tagged type after the type has been frozen.
AI-0220 Needed components for aggregates
This AI addresses a wording problem in the RM that appears to permit some complex cases of aggregates with non-static discriminants. GNAT has always implemented the intended semantics.
AI-0216 No_Task_Hierarchy forbids local tasks
It is clearly the intention that No_Task_Hierarchy is intended to forbid tasks declared locally within subprograms, or functions returning task objects, and that is the implementation that GNAT has always provided. However the language in the RM was not sufficiently clear on this point. Thus this is a docmentation change in the RM only.
AI-0210 Correct Timing_Events metric
This is a documentation only issue regarding wording of metric requirements, that does not affect the implementation of the compiler.
AI-0208 Characteristics of incomplete views
The wording in the Ada 2005 RM concerning characteristics of incomplete views was incorrect and implied that some programs intended to be legal were now illegal. GNAT had never considered such programs illegal, so it has always implemented the intent of this AI.
AI-0207 Mode conformance and access constant
This AI confirms that access_to_constant indication must match for mode conformance. This was implemented in GNAT when the qualifier was originally introduced in Ada 2005.
AI-0205 Extended return declares visible name
This AI corrects a simple omission in the RM. Return objects have always been visible within an extended return statement.
AI-0203 Extended return cannot be abstract
A return_subtype_indication cannot denote an abstract subtype. GNAT has never permitted such usage.
AI-0200 Mismatches in formal package declarations
This AI plugs a gap in the RM which appeared to allow some obviously intended illegal instantiations. GNAT has never allowed these instantiations.
AI-0198 Inheriting abstract operators
This AI resolves a conflict between two rules involving inherited abstract operations and predefined operators. If a derived numeric type inherits an abstract operator, it overrides the predefined one. This interpretation was always the one implemented in GNAT.
AI-0196 Null exclusion tests for out parameters
Null exclusion checks are not made for OUT parameters when evaluating the actual parameters. GNAT has never generated these checks.
AI-0194 Value of Stream_Size attribute
The Stream_Size attribute returns the default number of bits in the stream representation of the given type. This value is not affected by the presence of stream subprogram attributes for the type. GNAT has always implemented this interpretation.
AI-0182 Additional forms for Character’Value
This AI allows Character'Value to accept the string '?' where ? is any character including non-graphic control characters. GNAT has always accepted such strings. It also allows strings such as HEX_00000041 to be accepted, but GNAT does not take advantage of this permission and raises constraint error, as is certainly still permitted.
AI-0178 Incomplete views are limited
This AI clarifies the role of incomplete views and plugs an omission in the RM. GNAT always restricted correctly the use of incomplete views and types.
AI-0155 Size clause on type with non-static bounds
This AI clarifies the legality rules for size clauses on elementary subtypes whose bounds are non-static. GNAT has always followed what is now a precise implementation permission, namely that an implementation is allowed to assume the worst when computing the size of such a subtype.
AI-0134 Profiles must match for full conformance
For full conformance, the profiles of anonymous-access-to-subprogram parameters must match. GNAT has always enforced this rule.
AI-0133 Extending a type with self-reference
This AI discusses the legality of extending a record type when one of its components has a self-referencing discriminant constraint. GNAT has always treated such an extension as legal.
AI-0132 Placement of library unit pragmas
This AI fills a gap in the description of library unit pragmas. The pragma clearly must apply to a library unit, even if it does not carry the name of the enclosing unit. GNAT has always enforced the required check.
AI-0129 Limited views and incomplete types
This AI clarifies the description of limited views: a limited view of a package includes only one view of a type that has an incomplete declaration and a full declaration (there is no possible ambiguity in a client package). This AI also fixes an omission: a nested package in the private part has no limited view. GNAT always implemented this correctly.
AI-0128 Inequality is a primitive operation
If an equality operator ("=") is declared for a type, then the implicitly declared inequality operator ("/=") is a primitive operation of the type. This is the only reasonable interpretation, and is the one always implemented by GNAT, but the RM was not entirely clear in making this point.
AI-0126 Dispatching with no declared operation
This AI clarifies dispatching rules, and simply confirms that dispatching executes the operation of the parent type when there is no explicitly or implicitly declared operation for the descendant type. This has always been the case in all versions of GNAT.
AI-0122 Private with and children of generics
This AI clarifies the visibility of private children of generic units within instantiations of a parent. GNAT has always handled this correctly.
AI-0120 Constant instance of protected object
This is an RM editorial change only. The section that lists objects that are constant failed to include the current instance of a protected object within a protected function. This has always been treated as a constant in GNAT.
AI-0119 Effects of daylight saving on Time ops
All routines in Ada.Calendar and routine UTC_Time_Offset in Ada.Calendar. Time_Zones have implementation-defined behavior when a time-zone change such as daylight saving in the United States occurs.
AI-0118 The association of parameter associations
This AI clarifies the rules for named associations in subprogram calls and generic instantiations. The rules have been in place since Ada 83.