Development Log in February 2015.

  • Ada Web Server
    Feb 28th, 2015

    Add support for WSDL/SOAP type’s constraints
    The tools ada2wsdl and wsdl2aws handle now the type constraints. That is, ada2wsdl will check for range attribute, mod for modular types and array index to generate the corresponding constraints in the WSDL using the simpleType Length, minInclusive and maxInclusive attributes. Those attributes (plus the minExclusive and maxExclusive ones) are now used by wsdl2aws to generate Ada type constraints. Now a constrained string is generated instead of an Unbounded_String for a simpleType with a Length attribute whose base type is xsd:string. The simpleType Pattern attribute is now taken into account and a Dynamic_Predicate aspect is generated. For varying length string with attribute minLength and/or maxLength a Dynamic_Predicate aspect is also generated. Those now constraints will ensure that SOAP objects sent/received are not violating the constraints expressed into the WSDL making the new implementation safer.

  • GNAT Pro
    Feb 28th, 2015

    New pragma Ignore_Pragma
    A new pragma Ignore_Pragma is implemented. This is a configuration pragma that takes a single argument that is a simple identifier. Any subsequent use of a pragma whose pragma identifier matches this argument will be silently ignored. This may be useful when legacy code or code intended for compilation with some other compiler contains pragmas that match the name, but not the exact implementation, of a GNAT pragma. The use of this pragma allows such pragmas to be ignored, which may be useful in CodePeer mode, or during porting of legacy code.

  • SPARK Pro
    Feb 27th, 2015

    Optional Refined_Global/Depends aspects
    Users no longer have to provide a Refined_Global/Depends aspect when their Global/Depends mentions a state with visible refinement. Flow analysis now synthesizes and uses these aspects internally.

  • GNAT Pro
    Feb 27th, 2015

    Attribute Deref dereferences address expression
    A new attribute typ'Deref(expr) where expr is of type System.Address yields the variable of type typ that is located at the given address. It is similar to (totyp (expr).all), where totyp is an unchecked conversion from address to a named access-to-typ type, except that it yields a variable, so it can be used on the left side of an assignment. Note that this new attribute is not available for the .NET port).

  • GNAT Pro
    Feb 26th, 2015

    Convention pragma on generic formal access types
    The compiler now accepts a pragma Convention on a generic formal access to subprogram type, and verifies that an actual for such a formal obeys the same convention.

  • CodePeer
    Feb 25th, 2015

    Increase capacity for variables and initialization
    We have increased the default CodePeer capacity for number of distinct variables (including components) that can be tracked in a given subprogram from 400 to 600, and tripled the default memory capacity allowed when analyzing library-unit elaboration code, as elaboration code often includes large aggregates used to initialize global objects. This change should enable successful analysis by CodePeer of larger Ada subprograms, and Ada packages with more complex global-variable initializations.

  • GPS | GNATbench
    Feb 25th, 2015

    GB: use combo in builder targets dialogs
    Use combo widget in builder target preferences editor and in command editor dialog to reduce dialog size.

  • GPS | GNATbench
    Feb 24th, 2015

    GPS: use of perspective for CodePeer report
    GPS now has a perspective dedicated to viewing CodePeer results.

  • SPARK Pro
    Feb 23rd, 2015

    More precise analysis of bitwise operations
    GNATprove now handles more precisely bitwise operations on modular types by translating modular types to bitvectors for the underlying automatic provers. Currently, CVC4 is performing best on this kind of VCs. Some operations are still known to generate hard to prove VCs: conversions between modular and signed, modular used as array index, shift and rotate by a non constant amount.

  • SPARK Pro
    Feb 23rd, 2015

    Improve support for anonymous subtypes
    The SPARK toolset now deals better with checks associated with anonymous subtypes declared at the beginning of a subprogram.

  • CodePeer
    Feb 23rd, 2015

    Use Red/Orange/Yellow in CodePeer HTML report
    The HTML report was using Red/Yellow/Green for High/Medium/Low ranking messages. This was inconsistent with the Red/Orange/Yellow color coding used in GPS. The HTML report now uses Red/Orange/Yellow consistently for High/Medium/Low. There was no other change to the HTML output.

  • SPARK Pro
    Feb 20th, 2015

    Default initialized formal containers are empty
    When a formal container is default initialized, the SPARK toolset now knows it is empty.

  • SPARK Pro
    Feb 20th, 2015

    Accept “Runtime” and “Target” attributes
    The SPARK toolset now accepts the "Runtime" attribute of project files, which has the same effect as the --RTS commandline switch. The SPARK toolset now also accepts the "Target" attribute, although this attribute is currently ignored.

  • Ada Web Server
    Feb 18th, 2015

    Add support for documentation in WSDL
    AWS's wsdl2aws tool will now record the annotation/documentation nodes in the WSDL and generate comments out of them in the Ada generated code. These comments are handled for the WSDL operations and schema's types.

  • CodePeer
    Feb 18th, 2015

    Distinguish imported values of a global variable
    When the value of a global variable is used to initialize a global constant, it is possible that the value might change between when the global constant "captures" the variable's value, and when the value is subsequently fetched elsewhere in the program. CodePeer will now indicate in preconditions, postconditions, and other messages that a value of a variable was captured as part of initializing a global constant by adding a suffix on the global variable's name indicating the elaboration procedure initializing the constant. For example, "Global_Var@my_package'Elab_Spec" represents the value of Global_Var that was read by the My_Package spec elaboration procedure as part of initializing some constant declared in My_Package.

  • GNAT Pro
    Feb 18th, 2015

    Pre/Postconditions now count as WITH references
    If a package is with'ed and used only in pre and postconditions, then the package is still considered as referenced even if contracts are not enabled. This avoids a false positive warning "unit xxx is not referenced".

  • CodePeer
    Feb 17th, 2015

    Allow illegal comment characters
    Ada does not allow nongraphic characters (such as 16#7F#, DEL) in comments, but now CodePeer ignores this error, since some compilers do not flag this error, and it does not affect the CodePeer analysis of the code itself.

  • GNAT Pro
    Feb 17th, 2015

    Allow illegal comment characters in CodePeer mode
    Ada does not allow nongraphic characters (such as 16#7F#, DEL) in comments, but now CodePeer ignores this error, since some compilers do not flag this error, and it does not affect the CodePeer analysis of the code itself.

  • GNAT Pro
    Feb 14th, 2015

    Type_Invariant’Class on interface types implemented
    The Type_Invariant'Class aspect is now supported for interface types (as described in AI12-0041-1/03). When a type implements one or several interfaces, its inherited type invariant is the conjunction of all ancestor Type_Invariant'Class aspects.

  • GPS | GNATbench
    Feb 13th, 2015

    GPS: align.py enabled on gpr files
    When editing a .gpr project file, the Align contextual menu is now available, as it is in Ada files

  • GNAT Pro
    Feb 8th, 2015

    Better error message for Type_Invariant’Class
    In some error messages, the aspect name Type_Invariant'Class appeared as Type_Invariant_Class, and now the more accurate name with the quote is used.

  • GNAT Pro
    Feb 7th, 2015

    Better error message for bad use of prefix notation
    An attempt to use an untagged type with prefix notation now generates a more helpful message pointing out that this is specifically not allowed.

  • GNAT Pro
    Feb 7th, 2015

    Avoid internal names in error messages
    In some cases error messages would display internal compiler names that were not very helpful. Such messages are now fixed to display a more useful meaningful name, or eliminated.

  • GPS | GNATbench
    Feb 4th, 2015

    GPS: display of CWEs from CodePeer
    GPS displays CWEs (Common Weakness Enumeration) for CodePeer's messages in Locations view and provides corresponding filter in CodePeer Report view.

  • GPS | GNATbench
    Feb 4th, 2015

    GPS: project properties for uneditable projects
    The Project Properties dialog can now be displayed even in cases where the project cannot actually be edited graphically (aggregate project, project using variables,...).

  • GNAT Pro
    Feb 4th, 2015

    Better error recovery for statement in decls
    If a statement (e.g. an assignment statement) is used within a declaration sequence, then it is properly recognized now, so that if the -gnatQ option is used, the program compiles and executes successfully (after giving an appropriate error message).

  • Ada Web Server
    Feb 2nd, 2015

    Add explicit support for TLS 1.1 and 1.2
    Allow explicit support for TLS 1.1 and 1.2 on OpenSSL. This also enable to restrict use of these specific protocols.