Development Log in July 2010.

  • SQL: numbered table aliases
    In addition to the history named aliased for tables, it is now possible to use numbers for these aliases. This makes it easier to write SQL queries where a given table is used multiple times, since you no longer need to declare string constants for the extra names. In particular, this is useful for tools that automatically generate such queries.

  • Ada | Ada 2005 / 95 / 83
    Jul 30th, 2010

    AI-0063 Access discrims on derived formal types
    Formal limited private types are presumed to be immutably limited in a generic specification, but not in the generic body. A type derived from such a formal type in a generic unit can have access discriminants with defaults; the instance is rechecked based on the actual types.

  • PolyORB
    Jul 28th, 2010

    Time stamps in traces
    Time stamps can now optionally be generated for trace messages logged to standard error. This feature is enabled by setting "timestamp=true" in section [log] of the PolyORB configuration.

  • GNAT Pro
    Jul 26th, 2010

    Composition of equality in Ada 95 / 2005
    In Ada 2012, equality composes for record types which contain components with equality functions defined on them, including the case when inside a generic. This change has been propagated to Ada 95 and Ada 2005 modes as well since it seems clear that this was a language design oversight.

  • Ada | Ada 2005 / 95 / 83
    Jul 25th, 2010

    AI-0031 Add From parameter to Find_Token
    A new version of Find_Token is added to all relevant string packages that has an extra parameter From. Instead of starting at the first character of the string, the search for a matching Token starts at the character indexed by the value of From. These procedures are available in all versions of Ada but if used in versions earlier than Ada 2012 will generate a warning that an Ada 2012 subprogram is being used.

  • Ada | Ada 2005 / 95 / 83
    Jul 24th, 2010

    AI-0206 Remote types packages and preelaborate
    Remote types packages are now allowed to depend on preelaborated packages. This was formerly considered illegal.

  • Ada | Ada 2005 / 95 / 83
    Jul 24th, 2010

    AI-0112 Detection of duplicate pragmas
    This AI is about giving names to various representation aspects, but the practical effect is simply to make the use of duplicate Atomic[_Components], Volatile[_Components] and Independent[_Components] pragmas illegal, and GNAT now performs this required check.

  • Ada | Ada 2005 / 95 / 83
    Jul 24th, 2010

    AI-0033 Attach/Interrupt_Handler in generic
    Neither of these two pragmas may appear within a generic template, because the generic might be instantiated at other than the library level.

  • GNAT Pro
    Jul 23rd, 2010

    Report all duplicate units in projects
    When there are more than one duplicate units in the same source directory subtree, each duplicate unit is now reported once as such.

  • CodePeer
    Jul 23rd, 2010

    New switch -output-dir
    A new command line switch -output-dir is available to specify/override the output directory. A path relative to the current directory can be specified. At the same time, the Output_Dir library directive is modified so that relative paths are computed relative to the library file location rather than the current directory which was counter intuitive.

  • Ada | Ada 2005 / 95 / 83
    Jul 23rd, 2010

    AI-0181 Soft hyphen is a non-graphic character
    From Ada 2005 on, soft hyphen is considered a non-graphic character, which means that it has a special name (SOFT_HYPHEN) in conjunction with the image and value attributes for the character types. Strictly speaking this is an inconsistency with Ada 95, but in practice the use of these attributes is so obscure that it will not cause problems.

  • Ada | Ada 2005 / 95 / 83
    Jul 23rd, 2010

    AI-0103 Static matching for extended return
    If the return subtype of a function is an elementary type or a constrained type, the subtype indication in an extended return statement must match statically this return subtype.

  • Ada | Ada 2005 / 95 / 83
    Jul 23rd, 2010

    AI-0009 Pragma Independent[_Components]
    This AI introduces two new pragmas Independent and Independent_Components, which control guaranteeing independence of access to objects and components. The AI also requires independence not unaffected by confirming rep clauses.

  • GNAT Pro
    Jul 22nd, 2010

    More warnings for redundant pack pragmas
    The compiler now warns on all cases where a pack is ignored because an explicit component clause overrides its effect. These warnings are now all under control of -gnatwr (warn on redundant features).

  • GNAT Pro
    Jul 22nd, 2010

    No elaboration code for some limited aggregates
    Limited aggregates with static components are now handled by the backend, and do not generate any elaboration code. Previously aggregates of a limited type were always expanded into individual component assignments. This patch also improves on the handling of non-limited aggregates with nested static aggregates whose components are enumeration literals.

  • GNAT Pro | GPS | GNATbench
    Jul 22nd, 2010

    Background compilation
    GPS is now capable of launching build targets in the background automatically when source code is modified in an editor. This is activated through the Target Configuration dialog (menu Build->Settings->Targets), by setting the launch mode of a target to "In background".

  • GNAT Pro | GPS | GNATbench
    Jul 22nd, 2010

    Improved filedeps.py plug-in
    The filedeps.py plug-in which provides a way to display the dependency path between two files/units is now improved and will in particular display the path both in the Messages view and in the Locations view for easier navigation and visualization.

  • GNAT Pro | GPS | GNATbench
    Jul 22nd, 2010

    Background compilation
    GPS is now capable of launching build targets in the background automatically when source code is modified in an editor. This is activated through the Target Configuration dialog (menu Build->Settings->Targets), by setting the launch mode of a target to "In background".

  • GNAT Pro | GPS | GNATbench
    Jul 22nd, 2010

    Improved filedeps.py plug-in
    The filedeps.py plug-in which provides a way to display the dependency path between two files/units is now improved and will in particular display the path both in the Messages view and in the Locations view for easier navigation and visualization.

  • CodePeer
    Jul 22nd, 2010

    Switch -scil-dir no longer needed
    CodePeer now uses by default the first SCIL directory specified in the library file for the main SCIL dir, so the -scil-dir switch is no longer required.

  • Ada | Ada 2005 / 95 / 83
    Jul 22nd, 2010

    AI-0201 Independence of atomic object components
    If an Atomic object has a pragma Pack or a Component_Size attribute, then individual components may not be addressable by independent tasks. However, if the rep clause has no effect (is confirming), then independence is not compromised. Furthermore, in GNAT, specification of other appropriately addressable component sizes (e.g. 16 for 8-bit characters) also preserves independence. GNAT now gives very clear warnings both for the declaration of such a type, and for any assignment to its components.

  • GNAT Pro | GPS | GNATbench
    Jul 21st, 2010

    Automatic highlighting of occurrences
    When the cursor is positioned on an entity in a source editor, GPS will highlight all other occurrences of this entity in the editor. This is controlled by the plugin auto_highlight_occurrences.py and is activated by default.

  • GNAT Pro | GPS | GNATbench
    Jul 21st, 2010

    Case-preserving replacement
    GPS is now capable of preserving the casing of words when performing text replacement. Three casings are detected and preserved: all lower, all UPPER, and Smart_Mixed. This is controlled using the checkbox "Case Preserving Replace" in the Search dialog and is enabled by default.

  • GNAT Pro | GPS | GNATbench
    Jul 21st, 2010

    Automatic highlighting of occurrences
    When the cursor is positioned on an entity in a source editor, GPS will highlight all other occurrences of this entity in the editor. This is controlled by the plugin auto_highlight_occurrences.py and is activated by default.

  • GNAT Pro | GPS | GNATbench
    Jul 21st, 2010

    Case-preserving replacement
    GPS is now capable of preserving the casing of words when performing text replacement. Three casings are detected and preserved: all lower, all UPPER, and Smart_Mixed. This is controlled using the checkbox "Case Preserving Replace" in the Search dialog and is enabled by default.

  • GNAT Pro
    Jul 20th, 2010

    New string list external values for project files
    A new reserved keyword 'external_as_list' has been added to the project language. external_as_list (<external_reference>, <separator>) may be used in any expression and returns a string list.

  • new package GNATCOLL.Geometry
    This package provides primitive 2D operations on lines, segments,...

  • Ada | Ada 2005 / 95 / 83
    Jul 20th, 2010

    AI-0096 Deriving from formal private types
    In general it is illegal for a type derived from a formal limited type to be nonlimited. This AI makes an exception to this rule: derivation is legal if it appears in the private part of the generic, and the formal type is not tagged. If the type is tagged, the legality check must be applied to the private part of the package.

  • GNAT Pro
    Jul 19th, 2010

    VxWorks-specific method to load symbols into GDB
    Debuggers for VxWorks now provide a command "wtx add-symbol-file" that is similar to the general add-symbol-file command, except that it gets the sections addresses from the target server instead of asking the user to provide it. This command has also been integrated in GPS: if no section address is given, GPS will call "wtx add-symbol-file" if it is available.

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

    AI-0097 Treatment of abstract null extension
    The RM as written implied that in some cases it was possible to create an object of an abstract type, by having an abstract extension inherit a non- abstract constructor from its parent type. This mistake has been corrected in GNAT and in the RM, and this construct is now illegal.

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

    AI-0030 Requeue on synchronized interfaces
    Requeue is permitted to a protected, synchronized or task interface primitive providing it is known that the overriding operation is an entry. Otherwise the requeue statement has the same effect as a procedure call. Use of Pragma Implemented provides a way to impose a static requirement on the overriding operation by adhering to one of the implementation kinds: entry, protected procedure or any of the above.

  • Ada | Ada 2005 / 95 / 83
    Jul 17th, 2010

    AI-0046 Null exclusion match for full conformance
    For full conformance, in the case of access parameters, the null exclusion must match (either both or neither must have NOT NULL).

  • Ada | Ada 2005 / 95 / 83
    Jul 15th, 2010

    AI-0104 Null exclusion and uninitialized allocator
    The assignment: Ptr := new not null Some_Ptr; will raise Constraint_Error because the default value of the allocated object is null. This useless construct is illegal in Ada 2012.

  • Ada | Ada 2005 / 95 / 83
    Jul 15th, 2010

    AI-0087 Actual for formal nonlimited derived type
    The actual for a formal nonlimited derived type cannot be limited. In particular, a formal derived type that extends a limited interface but which is not explicitly limited cannot be instantiated with a limited type.

  • Ada | Ada 2005 / 95 / 83
    Jul 15th, 2010

    AI-0012 Pack/Component_Size for aliased/atomic
    It is now illegal to give an inappropriate component size or a pragma Pack that attempts to change the component size in the case of atomic or aliased components. Previously GNAT ignored such an attempt with a warning.

  • GNAT Pro
    Jul 14th, 2010

    Additional optimizations of aggregate assignments
    The compiler recognizes additional cases of aggregates in assignments that can be built directly in the target and do not require the creation of intermediate temporaries. In addition to a performance gain, this patch also prevents stack overflows for large aggregates. The patch covers multidimensional aggregates assigned to selected components and indexed components that are free of side effects.

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

    AI-0199 Aggregate with anonymous access components
    A choice list in a record aggregate can include several components of (distinct) anonymous access types as long as they have matching designated subtypes.

  • GNAT Pro
    Jul 11th, 2010

    Improved warning for freeing not null pointer
    The warning for freeing a not null pointer was given only if the name of the instantiation of Unchecked_Deallocation was Free. Now the warning is given no matter what the name of the instantiation is.

  • Ada | Ada 2005 / 95 / 83
    Jul 11th, 2010

    AI-0157 Allocation/Deallocation from empty pool
    Allocation and Deallocation from an empty storage pool (i.e. allocation or deallocation of a pointer for which a static storage size clause of zero has been given) is now illegal and is detected even in semantics only. GNAT always gave a warning but not an error.

  • Ada | Ada 2005 / 95 / 83
    Jul 11th, 2010

    AI-0003 Qualified expressions as names
    In Ada 2012, a qualified expression is considered to be syntatically a name, meaning that constructs such as A'(F(X)).B are now legal. This is useful in disambiguating some cases of overloading.

  • Ada | Ada 2005 / 95 / 83
    Jul 10th, 2010

    AI-0177 Expression functions
    The new Ada 2012 notion of expression functions is implemented. The form is FUNCTION SPECIFICATION IS (EXPRESSION). This is exactly equivalent to the corresponding function body that returns the expression, but it can appear in a package spec. Note that the expression must be parenthesized. Note also that in an earlier draft these were called parameterized expressions.

  • Ada | Ada 2005 / 95 / 83
    Jul 10th, 2010

    AI-0079 Allow other_format characters in source
    Wide characters in the unicode category other_format are now allowed in source programs between tokens, but not within a token such as an identifier.

  • Ada | Ada 2005 / 95 / 83
    Jul 10th, 2010

    AI-0073 Functions returning abstract types
    This AI covers a number of issues regarding returning abstract types. In particular generic fucntions cannot have abstract result types or access result types designated an abstract type. There are some other cases which are detailed in the AI. Note that this binding interpretation has not been retrofitted to operate before Ada 2012 mode, since it caused a significant number of regressions.

  • CodePeer
    Jul 9th, 2010

    Improved progress bar
    The progress information displayed in GPS when processing a global analysis (with no partitions) is now more precise, taking into account files that need to be re-analyzed.

  • Ada | Ada 2005 / 95 / 83
    Jul 9th, 2010

    AI-0211 No_Relative_Delays forbids Set_Handler use
    The restriction No_Relative_Delays forbids any calls to the subprogram Ada.Real_Time.Timing_Events.Set_Handler.

  • Ada | Ada 2005 / 95 / 83
    Jul 7th, 2010

    AI-0026 Missing rules for Unchecked_Union
    Record representation clauses concerning Unchecked_Union types cannot mention the discriminant of the type. The type of a component declared in the variant part of an Unchecked_Union cannot be controlled, have controlled components, nor have protected or task parts. If an Unchecked_Union type is declared within the body of a generic unit or its descendants, then the type of a component declared in the variant part cannot be a formal private type or a formal private extension declared within the same generic unit.

  • GNAT Pro
    Jul 6th, 2010

    Ada.Wide[_Wide]_Characters.Unicode.To_Lower_Case
    A new function To_Lower_Case has been added to the Unicode packages for Wide_ and Wide_Wide_Character. These correspond to the new UTF_To_Lower_Case function added to System.UTF_32_To_Lower_Case. See J705-015 for details.

  • Ada | Ada 2005 / 95 / 83
    Jul 6th, 2010

    AI-0185 Ada.Wide_[Wide_]Characters.Handling
    Two new packages Ada.Wide_[Wide_]Characters.Handling provide classification functions for Wide_Character and Wide_Wide_Characters, as well as providing case folding routines for Wide_[Wide_]Character and Wide_[Wide_]String.

  • GNAT Pro
    Jul 5th, 2010

    Add System.UTF_32.UTF_To_Lower_Case
    A new function has been added to System.UTF_32 to convert from upper case to lower case. The implementation of the conversion to upper case has been improved to be exactly the inverse of this new function. The rule now is that if two 10646 codes have the same name except for CAPITAL LETTER in place of SMALL LETTER, then the case conversions convert between these two codes as expected, otherwise the input codes are returned unchanged with no folding.

  • GNAT Pro | GPS | GNATbench
    Jul 5th, 2010

    Project-aware Locations history
    The Locations history used by the Back/Forward toolbar buttons is now project-aware: for instance, clicking "Back" when working on project A will cause GPS not visit locations that were visited in a previous GPS session on project B.

   1  2     Next »