Development Log in January 2008.

  • GNAT Pro
    Jan 31st, 2008

    Clearer warning for input/output with tagged type
    Instantiating Direct_IO or Sequential_IO with a tagged type, or a composite type with a component or subcomponent of a tagged type, is dubious since internally the tag is represented as a pointer to the dispatch table which will not be written. Previously instantiating with such a type generated a warning about access types, now the message specifically says tagged types.

  • GNAT Pro
    Jan 31st, 2008

    New attribute Has_Tagged_Values
    This new attribute is similar to Has_Access_Values but applies to tagged types. The prefix must be a type or subtype, and the result is True if this type or subtype is a tagged type, or, recursively has components of a tagged type. It is intended for use with generic formal types.

  • GNAT Pro | GPS | GNATbench
    Jan 31st, 2008

    Cross-references and extending projects
    If a source file is overridden in an extending project, but has not been recompiled locally, GPS will try to use the xref information from the extended project to provide cross-referencing in the file.

  • GNAT Pro
    Jan 30th, 2008

    Warn on suspiciously large alignments for types
    A new warning is issued on alignment clauses specified for types whose value is very likely the result of the confusion between bytes and bits. The warning can be silenced by adding a suitable size clause on the type.

  • GNAT Pro
    Jan 30th, 2008

    New info message for -gnatwl static mode
    A new category of information message has been created, labeled by the characters "info:" as the initial characters of the message. This is used for -gnatwl elaboration messages in static mode, to emphasize that these are informational messages, not warning messages requiring programmer action.

  • GNAT Pro | GPS | GNATbench
    Jan 30th, 2008

    New plug-in to reset GPS Windows registry settings
    A new plug-in has been added to reset the Windows registry settings for GPS. Those settings are to associate some specific extensions like .ads, .adb, .gpr to GPS. It can be the case that installing another application breaks those default settings. By running this new plug-in (Help/Reset Registry) all the values are restored to their GPS default values.

  • GNAT Pro
    Jan 29th, 2008

    New switch to disable short-circuit optimizations
    The new GCC switch -fno-short-circuit-optimize disables optimization of short-circuit operations (AND THEN/OR ELSE) so that explicit jumps remain in the generated code. This can make decision coverage of object code more straightforward (e.g. MCDC testing required by DO-178B level A).

  • GNAT Pro
    Jan 28th, 2008

    New switch—subdirs= for project-aware tools
    A new switch --subdirs=<subdir> has been added to all project-aware tools (gnatmake, gnatclean, gnatname, the gnat driver, gprbuild and gprclean). When this switches is used, the real directories (except the source directories) are subdirectories of the directories declared in the project files. If they don't exist, they are created automatically.

  • PolyORB
    Jan 28th, 2008

    Conditional form of pragma Debug
    PolyORB sources now use the conditional (two-argument) form of pragma Debug, so that the debug message strings are constructed only if traces are enabled for the particular module. This significantly reduces the run-time performance cost of enabling pragma Debug. Users can thus decide to leave it enabled even in production systems, for more convenient debugging. As a result of making this the default, the supporting script support/enable-conditional-debug has been removed from the PolyORB distribution.

  • GNAT Pro
    Jan 26th, 2008

    Let component size clause override type size
    A component size clause on an array type can now override the size of the component's type if this type has an alignment that causes it to be padded.

  • GNAT Pro
    Jan 26th, 2008

    New attribute Enum_Val for enumeration types
    A new attribute enum_type'Enum_Val (integer-value) provides the inverse functionality to Enum_Pos. It takes an integer value and returns the enumeration value whose representation corresponds to the given value. If the enumeration type has no enumeration representation clause, it is equivalent to 'Val, but if there is an enumeration representation clause, it is similar in effect to an unchecked conversion followed by a valid check. Constraint_Error is raised if the value given does not correspond to the representation value for any literal of the base type.

  • GNAT Pro
    Jan 25th, 2008

    New command gnaampcmd for invoking GNAAMP tools
    A GNAAMP equivalent to the GNAT command driver, called gnaampcmd, is now available. This enables use of project file -P switches with the tools that do not accept project switches directly, such as gnaamppp and gnaampstub.

  • GNAT Pro
    Jan 25th, 2008

    Variable not needed for GNAT.Sockets.Connect_Socket
    GNAT.Sockets.Connect_Socket used to require a variable for its Server formal parameter (denoting the address of the remote socket to connect to). The mode of this parameter has been changed from IN OUT to IN so that this requirement is lifted.

  • GNAT Pro
    Jan 25th, 2008

    New warning for out of order parameters
    A new warning (-gnatw.p or WARNINGS=PARAMETER_ORDER in VMS) detects the case of suspicious ordering where the actuals are simple identifiers which match the list of formals but in a different order. This warning is off by default, but included in -gnatwa (WARNINGS=ALL). The warning is not given if any named parameter notation is used.

  • Ada
    Jan 23rd, 2008

    Interview with Joachim Schüth - Cipher Challenge Winner

    You may remember that recently a German IT specialist, with a little help from Ada, won the competition to crack the codes emitted by the Lorenz cipher machines in the fastest time possible. In an interview with AdaCore, Joachim explains why he started working with Ada, his impressions of the language, and why it was the perfect choice for the challenge. To read this interview, please click here.

    http://www.adacore.com/home/ada_answers/lorenz-code

  • GNAT Pro
    Jan 20th, 2008

    New Precondition/Postcondition pragmas
    Two new pragmas, Precondition and Postcondition allow preconditions and postconditions to be specified on a per-subprogram basis. These pragmas can appear either in the spec, so that they are visible to the client, or in the body (where they can test aspects of the implementation not visible to the client). A new attribute function'Result can be used in Postcondition pragmas to test the result returned by a function. See updated GNAT Reference Manual for full details.

  • GNAT Pro | GPRbuild
    Jan 19th, 2008

    Unrecognized gprbuild switches passed to compiler
    When gprbuild takes into account attribute Builder'Default_Switches (<lang>) any switch it does not recognizes is passed to the compiler of language <lang> for all sources of language <lang> in all projects.

  • GNAT Pro
    Jan 18th, 2008

    Conversions between Calendar.Time and other forms
    The package Ada.Calendar.Conversions provides various routines for conversion between the Ada and Unix time models. The supported types are Time, Duration, struct timespec and struct tm.

  • Ada
    Jan 16th, 2008

    Providing Effective Support for Software

    In this paper, Emmanuel Briot ands Robert Dewar discuss and describe an infrastructure for providing effective support for complex software tools. The purchase of software usually includes provisions for ongoing support, and indeed there are some fundamental reasons why software is a different kettle of fish when it comes to providing this support.

  • GNAT Pro
    Jan 13th, 2008

    Clearer message for self-referential address clause
    A self-referential address clausee of the form "for X'Adress use X'Address" now gives a clear message, instead of a confusing message complaining that the representation clause appears too late.

  • GNAT Pro | GPS | GNATbench
    Jan 13th, 2008

    Smarter activity menu for adding/removing files
    When a file is already into an activity GPS now proposes a menu to remove it from this activity on the VCS Contextual menu.

  • GNAT Pro
    Jan 12th, 2008

    Pragma Assert allows nonstatic message string
    Pragma Assert now allows the message string, if given, to be a nonstatic string expression. In the original Ada 95 implementation, this string was required to be static, but this is no longer required. Note that the Ada 2005 definition of pragma Assert does not have this requirement anyway, so this change is a feature enhancement for Ada 95, but a bug fix for Ada 2005.

  • GNAT Pro
    Jan 11th, 2008

    New warning switch to activate every warning
    A new warning switch -gnatw.e (/WARNINGS=EVERY for VMS) is implemented which turns on all optional warnings, including those that are not turned on by -gnatwa.

  • PolyORB
    Jan 11th, 2008

    Hosts with multiple IP addresses
    When an object reference contains a host name corresponding to multiple IP addresses, connection attempts try successive addresses in turn if the connection fails, instead of bailing out after the first attempt.

  • GNAT Pro | GPS | GNATbench
    Jan 11th, 2008

    patch and diff3 executable distributed under Windows
    Under Windows, gnupatch.exe and gnudiff3.exe are now distributed, easing the use of visual comparison. It is still possible to specify alternate patch/diff commands via the preferences if needed.

  • GNAT Pro
    Jan 10th, 2008

    New pragmas for selective assertions
    A new pragma Check (category, condition [, message]) is similar to pragma Assert, except that the extra parameter category allows groups of assertions to be defined and then activated/deactivated separately with the associated pragma Check_Policy (category, policy). Here category is any identifier. Pragma Assert/Assertion_Policy are now exactly equivalent to use of Check/Check_Policy with identifier Assertion.

  • GNAT Pro
    Jan 10th, 2008

    New unit for simple time stamp
    A new unit GNAT.Time_Stamp provides a Current_Time function that returns a string with the current time. It is lightweight with a minimum of code and dependencies.

  • GNAT Pro | GPS | GNATbench
    Jan 10th, 2008

    Support for remote operations from python
    GPS.Process() and GPS.File.name() now support remote operations, allowing a python script to spawn a process on a remote server.

  • GNAT Pro
    Jan 8th, 2008

    GNAT.Sockets can receive ancillary packet info
    A binding for setsockopt(2) IPPROTO_IP option IP_PKTINFO has been introduced: Receive_Packet_Info. This option allows users to receive additional additional information (including originating interface) for received messages, on platforms that support IP_PKTINFO.

  • Ada
    Jan 7th, 2008

    Interesting article on the state of CS education

    Robert Dewar and Ed Schonberg recently published an article in CrossTalk discussing:

    "Computer Science Education: Where Are the Software Engineers of Tomorrow?"

    Abstract:

    "It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire."

  • GNAT Pro
    Jan 4th, 2008

    User-defined file headers for gnatstub
    The new gnatstub switch --header-file allows specification of a text file containing the comments to be used in the file header. This header will be inserted at the start of the generated body stub.

  • GNAT Pro
    Jan 3rd, 2008

    Referring to declarations in extended projects
    It is now possible to refer in a project to a declaration in an indirectly extended project. For example, if project A extends project B and project B extends project C, it is possible in project A to refer to a declaration in project C.