Development Log in October 2010.

  • GNAT Pro | GPS
    Oct 26th, 2010

    Introducing GPS 5.0 webinar

    The GNAT Pro InSight webinar series continues with a presentation and demo of the new features introduced in GPS 5.0.

    This major release sees many enhancements to our IDE technology including improved support for C/C++ in addition to its already comprehensive support for the Ada language, more powerful source editing, improved ease of use, better tool support (GNATstack, CodePeer), and enhanced documentation generation.

    As always, we will allow a question and answer session at the end enabling you to talk directly with the designers of GPS. To register, please click here.

  • GNAT Pro
    Oct 26th, 2010

    Code improvement for Valid attribute on AAMP target
    For the AAMP target, the compiler generates more efficient code sequences for cases of the attribute Valid applied to values of integer and enumeration types, by eliminating expensive 32-bit conversions and using range test instructions when possible.

  • SPARK Pro
    Oct 26th, 2010

    POGS VC total in presence of erroneous files
    Previously, if POGS encountered an erroneous SIV file, the VCs for that subprogram would be omitted from the total number of VCs, even if the associated VCG file was valid. Now, if the VCG file is valid but the SIV file is erroneous the VCs will still be counted. This leads to a more stable count of VCs. The VCs associated with erroneous SIV files are counted as undischarged.

  • GNAT Pro | GPS | GNATbench
    Oct 26th, 2010

    GPS: Leave codefix wrench for readonly files
    When an auto fix is applied on a readonly file, the wrench icon does not disappear and an error message is added in the Messages window.

  • PolyORB
    Oct 26th, 2010

    Support for additional configuration pragmas
    A new configure command line switch --enable-conf-pragmas is provided, which allows the user to specify then name of an additional configuration pragmas file to be used when compiling the PolyORB runtime library, for example containing some application-mandated Restrictions pragmas.

  • GNAT Pro
    Oct 26th, 2010

    Code improvement for Valid attribute on AAMP target
    For the AAMP target, the compiler generates more efficient code sequences for cases of the attribute Valid applied to values of integer and enumeration types, by eliminating expensive 32-bit conversions and using range test instructions when possible.

  • CodePeer
    Oct 25th, 2010

    October Find the Bug Challenge

    In order to demonstrate the scope of CodePeer’s code analysis capabilities we thought we’d have a little fun and each month post a simple piece of code that contains a few tricky bugs, so that you can measure your bug-finding capacities to those of CodePeer.

    This Month’s Challenge
    With electronic voting adding to the heat of election nights, every citizen might be interested in getting some strong assurance that the machine is doing its job, especially since there might be a disclaimer that “no warranty is given on the exactitude of the next president chosen by the software”. Here, you have the source code to check it for yourself!

    To see CodePeer in action please click here.

  • GNAT Pro
    Oct 24th, 2010

    More compact DWARF debugging information
    The size of the debugging information generated by the compiler has been reduced on platforms using the DWARF debugging format. The typical size reduction at -O0 is 30% for large applications.

  • GNAT Pro | GPS | GNATbench
    Oct 23rd, 2010

    Use all available space to display routine names
    The source editor no longer cuts the subprogram name at 20 characters but uses all the available space in the status line.

  • GNAT Pro | GPS | GNATbench
    Oct 23rd, 2010

    New preference for C/C++ indentation after braces
    A new preference is available to decide whether to indent with an extra level loops, if and switch statements.

  • SPARK Pro
    Oct 20th, 2010

    An introduction to SPARK 9.1

    The InSight webinar series continues with a presentation by Angela Wallenburg on the new features of the AdaCore/Altran Praxis joint offering – SPARK Pro. 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 Pro 9.1 is a major release including many new features – the use of full range array subtypes, the relaxation of aliasing rules for record fields, the ability to specify VC generation on a per-file basis in metafiles, the introduction of new SPARK libraries, the introduction of the SPARKBridge feature.

    To register, please click here.

  • GNAT Pro
    Oct 20th, 2010

    New switch to disable Pure/Preelaborate checking
    The switch -gnateP disables checking categorization dependency errors. Ada requires that units that WITH one another have compatible categories, for example a Pure unit cannot WITH a Preelaborate unit. If this switch is used, these errors become warnings (which can be ignored, or suppressed in the usual manner). This can be useful in some specialized circumstances such as the temporary use of special test software.

  • Ada | Ada 2005 / 95 / 83
    Oct 19th, 2010

    AI-0197 Dispatching with multiple inherited prims
    This AI resolves a conflict between an inherited null interface primitive and an inherited private primitive. In such case the inherited private primitive is the dispatching primitive.

  • SPARK Pro
    Oct 18th, 2010

    Correct static evaluation of “&” operators
    The Examiner now statically evaluates all "&" operators between Strings and Characters both in the context of string constant declarations and string literal expressions. Previously, such expressions could result in illegal FDL being produced by the VC Generator. This is now corrected and the Examiner produces the expected mk__string(...) constructor in FDL in all cases.

  • GNAT Pro | GPS | GNATbench
    Oct 17th, 2010

    GPS: Project View uses a case-insensitive sort
    Entries (project, package, subprogram, types names) in the Project View are now sorted ignoring the casing, which is in general more user friendly.

  • GNAT Pro | GPS | GNATbench
    Oct 17th, 2010

    Based literals not auto cased
    Auto-casing now keeps based literals with their original casing rather than applying automatic casing as done for e.g. identifiers.

  • Ada | Ada 2005 / 95 / 83
    Oct 14th, 2010

    AI-0221 Derived types preelaborable initialization
    This AI fixes an error in the definition of preelaborable initialization as amended by AI-0028.

  • GNAT Pro | GPS | GNATbench
    Oct 12th, 2010

    GNATstack integration
    GPS now provides support for GNATstack, the GNAT stack usage analysis tool.

  • GNAT Pro | GPRbuild
    Oct 12th, 2010

    New gprbuild switches -vl, -vm and -vh
    Three new switches are added to gprbuild: -vl, -vm and -vh, similar to the same switches for gnatmake. They are accepted on the command line and in package Builder.

  • Ada | Ada 2005 / 95 / 83
    Oct 8th, 2010

    AI-0153 Subtype predicates
    Predicates may be specified for subtypes using aspect names Dynamic_Predicate and Static_Predicate as shown by the following examples:

       subtype Mumble_Int is Integer with
         Dynamic_Predicate => Mumble (Mumble_Int);
    
       subtype RBG is Color with
         Static_Predicate => RBG in R | B | G;
    
       subtype SInt is Integer with
         Static_Predicate => Sint < 5 or Sint > 5;
    
    
    Unlike invariants, predicates can be applied to other than private types, and they are checked roughly at the same places that constrints are checked. For a static predicate, the expression must consist of static comparisons and static membership tests which involve the subtype name, possibly joined by logical operators. Static predicates may be used in case statements or loop iteration schemes. GNAT also implements the implementation defined aspect Predicate, which encompasses both the dynamic and static cases (being treated as static if the expression meets the rules for a static predicate.

  • SPARK Pro
    Oct 6th, 2010

    Multi-line accept statements
    It is now possible to continue the justification of an accept statement over two or more lines. Since the traditional & operator already has a meaning in accept statement we use the comma instead. For example, it is now possible to write the following:

       --# accept F, 10, Y, "This warning here is",
       --#                  "harmless as we do not care",
       --#                  "about this use here." &
       --#        F, 33, Y, "As you can now see",
       --#                  "it is now okay to write",
       --#                  "accept as haiku.";
    

  • GNAT Pro
    Oct 5th, 2010

    No elaboration code for tagged types in HI profiles
    In High Integrity profiles, declarations of tagged types are now statically elaborable and thus are compatible with restriction No_Elaboration_Code.

  • GNAT Pro | GPRbuild
    Oct 4th, 2010

    Indexed variables in knowledge base
    To avoid an ambiguity in the <configuration> nodes when multiple compilers are selected, the substitution variables need to be indexed by the language of the corresponding compiler.

  • Ada | Ada 2005 / 95 / 83
    Oct 2nd, 2010

    AI-0086 Statically compatible tests null exclusion
    Null exclusion is now taken into effect in deciding whether two access types are statically compatible. Access type T1 is not statically compatible with access type T2 if T2 can never be null, but T1 can be. This is a binding interpretation that also applies in Ada 2005 mode.

  • Ada Web Server
    Oct 1st, 2010

    Three new Ajax actions have been implemented
    It is now possible to disable/enable an entry in a form or to make it read-only/writable. The last action can be used to reset a form to its default values.

  • Ada | Ada 2005 / 95 / 83
    Oct 1st, 2010

    AI-0214 Defaulted discriminants for limited tagged
    Ada 2012 relaxes the restriction that forbids discriminants of tagged types to have default expressions by allowing them when the type is limited. It is often useful to define a default value for a discriminant even though it can't be changed by assignment.