1. OMG Mailing List
  2. IDL 4.3 Revision Task Force

Open Issues

  • Issues not resolved
  • Name: idl43-rtf
  • Issues Count: 76

Issues Summary

Key Issue Reported Fixed Disposition Status
IDL43-106 Definition of constructed types IDL 4.2 open
IDL43-105 Maximum size of a bitset IDL 4.2 open
IDL43-101 Using annotations for typedef allowed? IDL 4.2 open
IDL43-102 May optional be applied to a typedef IDL 4.2 open
IDL43-46 extensibility underspecified IDL 4.2 open
IDL43-47 Mutable and changing annotations IDL 4.2 open
IDL43-48 any value of annotations underspecified IDL 4.2 open
IDL43-70 Restrict key element type for maps IDL 4.2 open
IDL43-77 bitmask/bitvalue scoping IDL 4.2 open
IDL43-73 bitfield identifiers IDL 4.2 open
IDL43-100 Spec should describe to which element types @optional should be possible IDL 4.2 open
IDL43-95 Identify the types that numeric annotations can be applied to IDL 4.2 open
IDL43-53 Clarify meaning of array and sequence annotations IDL 4.2 open
IDL43-80 No clarification when annotation is used at various levels IDL 4.2 open
IDL43-79 Ambiguous use of numeric annotation on a typedef IDL 4.2 open
IDL43-91 Setting Floating-point Literals to NaN and infinity not covered under the specification IDL 4.2 open
IDL43-90 Allow true/false as boolean values IDL 4.2 open
IDL43-94 Behavior of default union member not properly specified IDL 4.2 open
IDL43-93 @value annotation used for enum is ambiguously defined IDL 4.2 open
IDL43-50 optional should be a keyword, not an annotaton IDL 4.2 open
IDL43-92 The definition of annotation_body grammar allows typedef IDL 4.2 open
IDL43-89 Missing relationship between min/max/range/default IDL 4.2 open
IDL43-88 IDL 4.2 i.e. the version published as ISO/IEC 19516 is full of broken references IDL 4.2 open
IDL43-87 destructor/raise of exception IDL 4.2 open
IDL43-86 Error! Reference source not found. IDL 4.2 open
IDL43-85 Add support for binary constant default IDL 4.2 open
IDL43-84 bitset memory layout IDL 4.2 open
IDL43-83 Add multimap IDL 4.2 open
IDL43-82 Spec should define defaults for all basic types IDL 4.2 open
IDL43-81 Dead link IDL 4.2 open
IDL43-66 Add ruby as language IDL 4.2 open
IDL43-72 signed_tiny_int should just extend octet_type IDL 4.2 open
IDL43-24 inheritance of unions and enumerations IDL 4.2 open
IDL43-75 Typo: Missing units IDL 4.2 open
IDL43-74 bitset mapping IDL 4.2 open
IDL43-33 Need builtin annotations that can be used to document the IDL IDL 4.2 open
IDL43-71 formal_parameter_type not extended IDL 4.2 open
IDL43-69 Additional details needed in definition of maps IDL 4.2 open
IDL43-35 Importing a name scope recursively imports all name scopes nested within it IDL 4.2 open
IDL43-25 Annotation @hashid should be added to 8.3.1 'Group of Annotations General Purpose' IDL 4.2 open
IDL43-4 Syntax and scoping when applying annotations requires clarification IDL 4.2b1 open
IDL43-32 Table formatting IDL 4.2 open
IDL43-21 Constants for Core Data Types IDL 4.2b1 open
IDL43-56 Clarify recursive/forwarded rules for maps IDL 4.2 open
IDL43-49 Add c++11 as language IDL 4.2 open
IDL43-54 Allow nested module definitions IDL 4.2 open
IDL43-27 Specify where annotations can be applied IDL 4.2 open
IDL43-52 Remove the bifuration of basic and full inetrfaces IDL 4.2 open
IDL43-51 Behaviour when nested is not present should be standardized IDL 4.2 open
IDL43-45 Missing hyperlinks for CORBA speficiations IDL 4.2 open
IDL43-44 Feature macros to guard building blocks IDL 4.2 open
IDL43-43 Ability to add annotations by reference IDL 4.2 open
IDL43-9 Missing bullet "Integers restricted to holding 8 bits of information" IDL 4.2b1 open
IDL43-42 Annotation for union discriminator name IDL 4.2 open
IDL43-41 Restrict bitshifts IDL 4.2 open
IDL43-40 Allow enumerator value to be set without using @value IDL 4.2 open
IDL43-39 Use of Omg.Types IDL4-CSHARP 1.1b1 open
IDL43-38 Allow empty IDL modules IDL 4.2 open
IDL43-37 Explain how to handle when an annotation appears in attributes with multiple declarators IDL 4.2 open
IDL43-36 clarify forwarding rules related to structure inheritance IDL 4.2 open
IDL43-34 Need the concept of a "using namespace" directive to simplify IDL files IDL 4.2 open
IDL43-31 Rules for Qualified Names need to take into account other Building Blocks IDL 4.2 open
IDL43-30 current IDL4 grammar breaks backward compatibility with respect to short hand notations IDL 4.2 open
IDL43-28 Extended structs that are both inheriting and empty IDL 4.2 open
IDL43-26 Some standardized annotations use keywords as identifiers IDL 4.2 open
IDL43-23 Incorrect rule number on connector_inherit_spec IDL 4.2 open
IDL43-22 Typos in 8.2.2 enumerated list IDL 4.2b1 open
IDL43-11 Unicode apostrophe in source code IDL 4.2b1 open
IDL43-10 Mapping int8/uint8 in absence of target language native support IDL 4.2b1 open
IDL43-12 Incorrect rule number on IDL 4.2b1 open
IDL43-3 Typo in title of 7.4.1.4.1 IDL 4.2b1 open
IDL43-5 Typo in Annex A: Consolidated IDL Grammar IDL 4.2b1 open
IDL43-8 Copy/paste problem at IDL 4.2b1 open
IDL43-7 Apparently incomplete phrase IDL 4.2b1 open
IDL43-2 Formatting error in title of 7.4.13.4 IDL 4.2 open
IDL43-1 Typo in section 7.4.1.4.4.4.3 Enumerations IDL 4.2 open

Issues Descriptions

Definition of constructed types

  • Key: IDL43-106
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    Constructed types are types that are created by an IDL specification.

    All types are created by an IDL specification, this is not a characterization that distinguishes constructed types.

    I propose
         Constructed types are types that have members.

    This would provide distinction from other types.

  • Reported: IDL 4.2 — Mon, 28 Oct 2024 05:17 GMT
  • Updated: Mon, 28 Oct 2024 14:53 GMT

Maximum size of a bitset

  • Key: IDL43-105
  • Status: open   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The spec defines that a bitfield can be a maximum of 64bits, but it doesn't say anything about the maximum size of the bitset, can we create a bitset with 1000 fields of each 64bits? Is that legal, or is there some limit to the maximum size of a bitset

  • Reported: IDL 4.2 — Mon, 21 Oct 2024 12:47 GMT
  • Updated: Mon, 28 Oct 2024 14:50 GMT

Using annotations for typedef allowed?

  • Key: IDL43-101
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Some text for the annotations refers to element, but the introduction in 8.3.1 says "They may be applied on almost all kinds of elements", but what is an element. It looks for example logical that optional/value/min/max/unit/range can also be applied to a typedef, for example "@optional typedef boolean opt_bool1;". In a DDS world these annotations are mostly only used for types, but with CORBA/LwCCM adding them to a typedef could also mean that for example a optional is passed with a method call.

    The spec should be more precise whether applying annotations to a typedef is legal.

  • Reported: IDL 4.2 — Fri, 9 Aug 2024 12:33 GMT
  • Updated: Fri, 27 Sep 2024 18:28 GMT

May optional be applied to a typedef

  • Key: IDL43-102
  • Status: open   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The spec is not clear where optional may be applied, I wanted to use it with a typedef, see the test below, but it seems DDS XTypes disallowed it but IDL4 does seem to allow it, it says "This annotation may be used to set optionality on any element that makes sense to be optional.", my example makes sense about it. The spec should be more precise where this annotation (and others) maybe used

    module Test {
    @optional
    typedef long OptLongFoo;
    struct Bar

    { OptLongFoo f; };
    struct Z
    { OptLongFoo f; }

    ;
    };

  • Reported: IDL 4.2 — Fri, 6 Sep 2024 13:00 GMT
  • Updated: Fri, 27 Sep 2024 13:59 GMT

extensibility underspecified

  • Key: IDL43-46
  • Status: open   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    extensibility is heavily under specified in IDL4.2. It is listed as a general purpose annotation but it says nothing at the moment for the case appendable/mutable is specified and types are evolved. What are at that moment the rules for assignability/compatibility. Someone who just looks at IDL4 lacks a lot of required information

  • Reported: IDL 4.2 — Thu, 19 Aug 2021 07:54 GMT
  • Updated: Tue, 10 Sep 2024 20:45 GMT

Mutable and changing annotations

  • Key: IDL43-47
  • Status: open   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The specification is unclear of what the user can expect when using mutable and annotations like range, what when the old version of the type has a range of 1-10 and the new one range of 1-5. An old version is send with value 6, what does the receiver get? Very likely more annotations need to be extended in their description related to mutable

  • Reported: IDL 4.2 — Thu, 19 Aug 2021 08:05 GMT
  • Updated: Tue, 10 Sep 2024 20:31 GMT

any value of annotations underspecified

  • Key: IDL43-48
  • Status: open   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The specification just lists any as value for the min/max/default annotations, but that tells nothing about what is allowed as value, are for what about hex/octet values, floats, etc. Maybe make this more precise by referring to the value_expression rules `<const_expr>` as specified in 7.4.1.4.3 constants

  • Reported: IDL 4.2 — Thu, 19 Aug 2021 08:18 GMT
  • Updated: Tue, 10 Sep 2024 19:39 GMT

Restrict key element type for maps

  • Key: IDL43-70
  • Status: open   Implementation work Blocked
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    Currently the key element type for maps is the same as the value element type, but that looks to be open, this allows for example a union, struct, reference, or other complex type as key type, all of them lack a comparison operator, very likely it is better to define a special map_key_type_spec just as we have for the union as switch_type_spec

  • Reported: IDL 4.2 — Tue, 21 Mar 2023 07:21 GMT
  • Updated: Tue, 10 Sep 2024 19:06 GMT

bitmask/bitvalue scoping

  • Key: IDL43-77
  • Status: open   Implementation work Blocked
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    The spec doesn't say anything about bitmask bit_value scoping. I think the spec currently allows

    bitmask MyBitMask

    { flag0, flag1 };
    bitmask MyBitMask2 { flag0, flag1 }

    ;

    This is problematic when a bitmask maps to an enum in C++. As a bitmask is pretty similar to an enum I do ask the following, in section 7.5.2 it says:

    Enumeration value names are introduced into the enclosing scope and then are treated like any other declaration in that scope.

    What about a bitvalue, shouldn't this also be done for a bitvalue (the members of a bitmask), that would allow a safe mapping to an enum in C++.

    The spec should be clear about where bitmasks are introduced, within the bitmask scope itself, or in the enclosing scope

  • Reported: IDL 4.2 — Mon, 7 Aug 2023 14:31 GMT
  • Updated: Tue, 10 Sep 2024 16:11 GMT

bitfield identifiers

  • Key: IDL43-73
  • Status: open   Implementation work Blocked
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    The spec says for bitfield " list of identifiers (<identifier>*).", shouldn't this be 1 or 0 identifiers, what if the user specifies 4 identifiers, how to separate them, what is the meaning?

  • Reported: IDL 4.2 — Tue, 18 Jul 2023 09:31 GMT
  • Updated: Tue, 10 Sep 2024 15:43 GMT

Spec should describe to which element types @optional should be possible

  • Key: IDL43-100
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The spec doesn't describe exactly to which element types @optional should be possible, leaving it to the vendor implementation. The spec should describe to which element type this annotation (but also the others) should be applied, struct members sounds logical, but what about union members, attributes, exception members?

  • Reported: IDL 4.2 — Tue, 11 Jun 2024 09:13 GMT
  • Updated: Mon, 1 Jul 2024 15:13 GMT

Identify the types that numeric annotations can be applied to

  • Key: IDL43-95
  • Status: open  
  • Source: ZettaScale Technology ( Mr. Erik Hendriks)
  • Summary:

    There are currently a number of numeric annotations presented in the spec. These are annotations that impact the numerical behavior of a type (like its allowed ranges). Right now, the spec doesn't clearly specify where these annotations may be applied and where they may not be applied. It would be wise to extend the section that introduces these annotations with a paragraph that clearly lays out these restrictions.

  • Reported: IDL 4.2 — Tue, 11 Jun 2024 19:05 GMT
  • Updated: Wed, 12 Jun 2024 15:23 GMT

Clarify meaning of array and sequence annotations

  • Key: IDL43-53
  • Status: open  
  • Source: MIT/Lincoln Laboratory ( Mr. Daniel Herring)
  • Summary:

    It is unclear whether or how annotations such as "unit" and "range" apply to the values in an array or sequence. Other annotations may have similar ambiguity.

    Do they apply to each contained value, or do do they somehow apply to the aggregate value? What about multi-dimensional arrays or nested sequences?

    Does the range somehow apply to the sequence length, perhaps as a minimum?

    Where do they belong in the array or sequence definitions – before the keyword, before the type name, or somewhere else?

    Do the different locations accept different annotations? Do the annotations change meaning depending on location?

  • Reported: IDL 4.2 — Wed, 29 Sep 2021 16:31 GMT
  • Updated: Tue, 11 Jun 2024 23:08 GMT

No clarification when annotation is used at various levels

  • Key: IDL43-80
  • Status: open   Implementation work Blocked
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    There is nothing explained what the expected behavior is when an annotation is applied at multiple levels, for example see the changed example from 8.3.3, what is the range for Foo:bar2, is it min=10,max=20 or min=5,max=10

    @range (min=10, max=20)
    typedef long MyLong;
    ...
    struct Foo

    { @range (min=10, max=20) long bar1; // direct application @range (min=5, max=10) MyLong bar2; // indirect application trough type MyLong }

    ;

  • Reported: IDL 4.2 — Sun, 27 Aug 2023 08:19 GMT
  • Updated: Tue, 11 Jun 2024 22:11 GMT

Ambiguous use of numeric annotation on a typedef

  • Key: IDL43-79
  • Status: open   Implementation work Blocked
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Section 8.3.3
    Has the normative example;

    @range (min=10, max=20)
    typedef long MyLong;

    It is unclear to me if the annotation applies to the typedef keyword or to the type in the typedef definition.

  • Reported: IDL 4.2 — Mon, 21 Aug 2023 17:23 GMT
  • Updated: Tue, 11 Jun 2024 18:49 GMT

Setting Floating-point Literals to NaN and infinity not covered under the specification

  • Key: IDL43-91
  • Status: open  
  • Source: Ryan Friedman ( Ryan Friedman)
  • Summary:

    As a OMG IDL user, I have messages that treat NaN or infinity as a significant value. I would like to specify this as a default for a field.

    Currently, the OMG IDL specification says that a floating point value must include an integer part. It does not mention how to set or use special floating point values.

    Per IEEE-754, there are a few types of NaN. It would be desirable for OMG DDS IDL to interpret NaN as a quiet NaN, which matches C++ and Python.

    In ROS-IDL, it would look like this:
    float32 float32_nan NaN
    float64 float64_nan nan

    In ROS 2, I proposed an implementation that sets NaN. In the IDL generator, it creates the following IDL file, which is not supposedly valid according to the standard:

    module rosidl_generator_tests {
    module msg {
    module NanValueConstant_Constants

    { const float FLOAT32_NAN = nan; const double FLOAT64_NAN = nan; }

    ;
    struct NanValueConstant

    { uint8 structure_needs_at_least_one_member; }

    ;
    };
    };

    Can the specification be amended to support NaN, +inf, and -inf? This is blocking implementation in ROS 2.

  • Reported: IDL 4.2 — Tue, 5 Mar 2024 18:50 GMT
  • Updated: Tue, 11 Jun 2024 18:41 GMT

Allow true/false as boolean values

  • Key: IDL43-90
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Currently only TRUE or FALSE are allowed boolean values, but why not allow true and false (all lower case) as values

  • Reported: IDL 4.2 — Wed, 14 Feb 2024 11:18 GMT
  • Updated: Mon, 10 Jun 2024 23:44 GMT

Behavior of default union member not properly specified

  • Key: IDL43-94
  • Status: open  
  • Source: ZettaScale Technology ( Mr. Erik Hendriks)
  • Summary:

    The spec clearly specifies that when a union has an explicit default member, then this member should be chosen in its default constructor. When this is not the case, it would pick the first available case that is listed for its first available member.
    However, it makes sense that if there is an implicit default member, then it is picked by the default constructor for the union.
    Finally, it should be stated that you cannot overrule in any way what member the default constructor of a union will pick by using the @default annotation on any specific member,

  • Reported: IDL 4.2 — Tue, 19 Mar 2024 19:41 GMT
  • Updated: Mon, 10 Jun 2024 23:42 GMT

@value annotation used for enum is ambiguously defined

  • Key: IDL43-93
  • Status: open  
  • Source: ZettaScale Technology ( Mr. Erik Hendriks)
  • Summary:

    Should the IDL4 grammar specify that @value annotations, if specified for one enum field, MUST be used on all enum fields?
    Regardless of whether we make this restriction, the specification should clearly state what happens when one field is annotated, but the next one is not.

  • Reported: IDL 4.2 — Tue, 19 Mar 2024 15:00 GMT
  • Updated: Mon, 10 Jun 2024 22:31 GMT

optional should be a keyword, not an annotaton

  • Key: IDL43-50
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The annotation optional impacts the language mapping, for example in C it results in a pointer, with C++11 it could be a IDL::optional<>. The usage of an annotation is very weak in terms of semantics, it is much better to use a new optional keyword as optional heavily impacts the type presented to the programmer. Adding optional will break existing user code, it is not only something that is checked by a concrete middleware.

  • Reported: IDL 4.2 — Fri, 20 Aug 2021 08:03 GMT
  • Updated: Mon, 10 Jun 2024 22:23 GMT

The definition of annotation_body grammar allows typedef

  • Key: IDL43-92
  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    The

  • Reported: IDL 4.2 — Fri, 15 Mar 2024 20:58 GMT
  • Updated: Fri, 15 Mar 2024 21:06 GMT

Missing relationship between min/max/range/default

  • Key: IDL43-89
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The spec is silent about the relationship between min/max/range annotations and the default value. When I have an unsigned long and define min=10/max=20, is that legal without specifying a default value annotation? The default of an unsigned long is zero, so what should be generated in the code now as default? Or should the spec say that when min/max/range are used and the default value of the type is not in the range of those default should be specified by the user?

  • Reported: IDL 4.2 — Fri, 26 Jan 2024 15:51 GMT
  • Updated: Thu, 8 Feb 2024 18:22 GMT

IDL 4.2 i.e. the version published as ISO/IEC 19516 is full of broken references

  • Key: IDL43-88
  • Status: open  
  • Source: Leonardo S.p.A ( Simon McQueen)
  • Summary:

    The IDL 4.2 page has a download link for the spec as published as an ISO: https://www.omg.org/spec/IDL/ISO/19516/PDF

    All (?? - verification left as an exercise but there's 926 instances) the internal document links look to be screwy.

    Search for e.g. "Reference source not found"

    An example (from page 102):

    Annex A
    Consolidated IDL Grammar
    This annex gathers all the rules from all the building blocks.
    Error! Reference source not found.:
    Error! Reference source not found. Error! Reference source not found.
    Error! Reference source not found. Error! Reference source not found.
    Error! Reference source not found. Error! Reference source not found.
    ... etc...

  • Reported: IDL 4.2 — Sun, 10 Dec 2023 14:30 GMT
  • Updated: Tue, 19 Dec 2023 14:50 GMT

destructor/raise of exception

  • Key: IDL43-87
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    For all c++ code in this chapter the destructor should be override, not virtual

    The raise operation should be _raise, that way any derived user exception can have a raise member, similar to _name and _rep_id. Looks an oversight when adding the code from TAOX11, we use _raise always there

  • Reported: IDL 4.2 — Wed, 25 Oct 2023 08:18 GMT
  • Updated: Tue, 7 Nov 2023 15:58 GMT

Error! Reference source not found.

  • Key: IDL43-86
  • Status: open  
  • Source: Independent Security Consultant ( Henrik Johansson)
  • Summary:

    The data retrieval of described rules of constants entity during document compilation failed.

  • Reported: IDL 4.2 — Wed, 18 Oct 2023 12:42 GMT
  • Updated: Thu, 19 Oct 2023 16:23 GMT

Add support for binary constant default

  • Key: IDL43-85
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    With a bitset/bitfield I assume you can use @default to specify a default value, would be nice if a binary constant could be used, as with C++, a binary constant consists of a sequence of ‘0’ and ‘1’ digits, prefixed by ‘0b’ or ‘0B’ for example 0b101010

  • Reported: IDL 4.2 — Tue, 3 Oct 2023 06:25 GMT
  • Updated: Tue, 10 Oct 2023 13:31 GMT

bitset memory layout

  • Key: IDL43-84
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    IDL 4.2 says for bitset the following, but to our idea the IDL spec goes to far, how the data is organized in memory is something IDL can't enforce, probably not all programming languages provide such a direct way to control the memory layout. Middleware could control how a bitset is transferred on the wire, but I think IDL should not enforce the layout

    Bit sets are sequences of bits stored optimally and organized in concatenated addressable pieces called bit fields,
    themselves stored optimally. "Stored optimally" means that one bit uses just one bit in memory. "Concatenated" means
    that each bit field will be placed in memory just after its predecessor within the bit set (no alignment considerations
    apply).

  • Reported: IDL 4.2 — Mon, 2 Oct 2023 15:14 GMT
  • Updated: Tue, 10 Oct 2023 13:31 GMT

Add multimap

  • Key: IDL43-83
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    I assume that in a map keys may not be unique (this should be added to 7.4.13.4.3.1), in case that is a restriction for a map, I propose to add a multimap which allows keys to be duplicate.

  • Reported: IDL 4.2 — Mon, 11 Sep 2023 06:16 GMT
  • Updated: Thu, 14 Sep 2023 12:55 GMT

Spec should define defaults for all basic types

  • Key: IDL43-82
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    Now that with IDL4 the user can use @default to specify a specific default it would be good to also specify the default for all basic types when no @default is used. That way the user (or tool) can make a decision whether it must use @default in IDL or not

  • Reported: IDL 4.2 — Mon, 28 Aug 2023 11:44 GMT
  • Updated: Wed, 30 Aug 2023 15:28 GMT


Add ruby as language

  • Key: IDL43-66
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    Add ruby as language, there is a formal OMG language mapping for that, maybe just add all programming languages for which the OMG already has a formal language mapping

  • Reported: IDL 4.2 — Tue, 7 Jun 2022 06:34 GMT
  • Updated: Fri, 18 Aug 2023 23:23 GMT

signed_tiny_int should just extend octet_type

  • Key: IDL43-72
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    For int8 a new signed_type_int is defined, but I think it should just do the following so that anywhere where octet is used now int8 can be used

    <octet_type> ::+ "int8",

  • Reported: IDL 4.2 — Wed, 12 Jul 2023 08:26 GMT
  • Updated: Tue, 15 Aug 2023 07:03 GMT

inheritance of unions and enumerations

  • Key: IDL43-24
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    IDL 4.2 syntax supports inheritance of only interfaces, valuetypes, and structures.

    There are multiple scenarios where it would be useful to inherit other types, specifically Unions and Enumerations.

    (1) Inheritance of unions

    This would be very useful in some specs where unions are automatically generated. For example unions are created interface definitions in DDS-RPC and derived interfaces would like to use unions that "inherit" the unions in the base interfaces.

    This would be useful when a "derived" union wants to add some more cases to the base union.

    The derived union would have to use the same discriminator type. All it can do is add new discriminator cases that do not conflict with the non-default discriminator in the base union.

    It can add a default case if not present in the base union.

    Proposed syntax would be:

    union DerivedUnion : BaseUnion {
        case 1 :
           Case1Type case1meber;
    ...
    };
    

    (2) Inheritance of enumerations

    This is useful to add literals to an existing enumeration without touching the original definition.

    The literals on the derived union would be constrained to not conflict the literals in the base class.

    Proposed syntax would be:

    enum DerivedEnum : BaseEnum {
        AdditionalLiteral1,
        ...
    };
    
  • Reported: IDL 4.2 — Tue, 25 Sep 2018 19:31 GMT
  • Updated: Tue, 8 Aug 2023 06:45 GMT

Typo: Missing units

  • Key: IDL43-75
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    For bitmask the spec says "By default, the size of a bit mask is 32", but what unit is 32, I assume the spec wants to say "By default, the size of a bit mask is 32 bits"

  • Reported: IDL 4.2 — Mon, 31 Jul 2023 06:48 GMT
  • Updated: Wed, 2 Aug 2023 21:40 GMT

bitset mapping

  • Key: IDL43-74
  • Status: open   Implementation work Blocked
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    All constructed types map to a C+11 class with accessors, but the new bitset mapping is an exception now, it delivers no accessor methods which gives a different API to the programmer. We propose to map to a class with accessors, similar like struct, or fastdds does in their implementation (see https://fast-dds.docs.eprosima.com/en/latest/fastddsgen/dataTypes/dataTypes.html#bitsets). Also the IDL inheritance is gone in C11, propose to use a derived class, so that in the C+11 code there is also an inheritance

  • Reported: IDL 4.2 — Fri, 28 Jul 2023 13:59 GMT
  • Updated: Fri, 28 Jul 2023 15:53 GMT

Need builtin annotations that can be used to document the IDL

  • Key: IDL43-33
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    There is a general need to document the IDL. However the IDL language does not provide any standard way to do this. As a consequence people may be forced to define custom annotations which would preclude the use across projects and/or development of general tools that are documentation aware.

    To remediate this the suggestion is to add some built-in annotations that maybe used to document the IDL. For example the @documentation annotation below:

    @annotation documentation {
        string value default "TBD";
    };
    

    This annotation could applied to a type declaration or to a member / element, as in:

    @documentation("This documents the type Foo")
    struct Foo {
        @documentation("documentation for member m1")
        long m1;
        @documentation("documentation for member m2")
        long m2;
     };
    
    @documentation("This documents the type MyEnum")
    enum MyEnum {
        @documentation("documentation for literal L1")
        L1,
    
        @documentation("documentation for literal L2")
        L2
     };
    
  • Reported: IDL 4.2 — Thu, 11 Apr 2019 18:17 GMT
  • Updated: Tue, 18 Jul 2023 16:33 GMT

formal_parameter_type not extended

  • Key: IDL43-71
  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    When map/bitset/bitmask are added it looks formal_parameter_type is not extended to allow these new types to be used as templated module arguments.

  • Reported: IDL 4.2 — Tue, 11 Jul 2023 16:04 GMT
  • Updated: Tue, 11 Jul 2023 20:19 GMT

Additional details needed in definition of maps

  • Key: IDL43-69
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    Section 7.4.13.4.3.1 defines IDL Maps but doesn't specify:

    • Which types may be keys
    • If maps need to de-duplicate equivalent entries
    • If maps need to preserve order

    The most essential of these is the first. It's currently unrestricted but this causes problems for language mappings where some additional operations (like less-than or equal-to) must be defined for these types. In order to prevent different language mappings adding different (conflicting) restrictions, the IDL spec should define this.

    One approach to this would be that each building block should define how its types can (or can't) be used in maps. For example: everything in core data types is allowed; interfaces are not allowed; valuetypes are not allowed; etc.

  • Reported: IDL 4.2 — Tue, 21 Mar 2023 20:30 GMT
  • Updated: Fri, 24 Mar 2023 13:28 GMT

Importing a name scope recursively imports all name scopes nested within it

  • Key: IDL43-35
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    The section Imports contains

    The effects of an import statement are as follows:

    • [...]
    • Importing a name scope recursively imports all name scopes nested within it.

    This looks counter intuitive to me.

    Example:

    module commontypes {
       module nested1 {
          enum RGBColor { RED, GREEN, BLUE };
       }
       module nested2 {
          enum TrafficLight { READ, YELLOW, GREEN };
       }
    };
    

    What happens if another module does "import commontypes"?

    If, as the standard says, all name scopes nested within "commontypes" are recursively imported then this would lead to errors:
    The enum values RED and GREEN would be directly visible and would be in conflict with each other.

  • Reported: IDL 4.2 — Mon, 29 Jun 2020 07:47 GMT
  • Updated: Wed, 7 Dec 2022 15:26 GMT

Annotation @hashid should be added to 8.3.1 'Group of Annotations General Purpose'

  • Key: IDL43-25
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    The 'Group of Annotations General Purpose' includes the @autoid annotations which can optionally specify a HASH as in @autoid(HASH).

    To be useful this must be augmented with the @hashid("MyString") annotation that allows an ID to be explicitly assigned by computing the hash of a string using the same algorithm that @autoid(HASH) uses.

  • Reported: IDL 4.2 — Tue, 25 Sep 2018 21:53 GMT
  • Updated: Tue, 6 Dec 2022 21:26 GMT

Syntax and scoping when applying annotations requires clarification

  • Key: IDL43-4
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    7.4.15.4.2 on p.101 contains the rule

    (225) <annotation_appl> ::= "@" <scoped_name> [ "(" <annotation_appl_params> ")" ]

    The nature of the EBNF notation leaves room for interpreting that between the @ and the <scoped_name> there could appear spaces, tabs, or even comments.

    On the other hand, 7.4.15.4.1 on p.100 contains:

    (220) <annotation_header> ::= "@annotation" <identifier>

    Here, it is clear that @annotation shall be treated as a single token without intermittent characters between @ and annotation.

    I propose adding a clarification in the explanations at the beginning of p.102 (following rule 227):

    Applying an annotation consists in prefixing the element under annotation with:

    • The annotation name ( <scoped_name> ) prefixed with the at symbol( @ ), also known as commercial at. There shall be no intermittent spaces, tabs, or comments between @ and <scoped_name>.

    The last sentence is my proposed addition.

  • Reported: IDL 4.2b1 — Fri, 26 Jan 2018 22:03 GMT
  • Updated: Tue, 21 Jun 2022 23:16 GMT

Table formatting

  • Key: IDL43-32
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Table 7-13 (Integer types) should have a little bit wider column 1 and the font size "See Building Block Extended Data" should match the other font in this table

  • Reported: IDL 4.2 — Fri, 1 Mar 2019 10:07 GMT
  • Updated: Tue, 21 Jun 2022 20:54 GMT

Constants for Core Data Types

  • Key: IDL43-21
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    Extend the grammar for Constants to allow constants for all Core Data Types that are currently not allowed:

    • sequence
    • structure
    • union
    • array
  • Reported: IDL 4.2b1 — Mon, 26 Feb 2018 22:10 GMT
  • Updated: Tue, 21 Jun 2022 20:13 GMT
  • Attachments:

Clarify recursive/forwarded rules for maps

  • Key: IDL43-56
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    Section 7.4.1.4.4.4.4 Constructed Recursive Types and Forward Declarations (in the Core Data Types BB) has special semantic rules for sequences. The intent of Maps (in the Extended Data Types BB) seems to be that maps should have these same semantic rules.

  • Reported: IDL 4.2 — Fri, 3 Jun 2022 19:49 GMT
  • Updated: Fri, 3 Jun 2022 19:49 GMT

Add c++11 as language

  • Key: IDL43-49
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    There are a lot of more possibilities to be used with C++11 compared to C++, there is a specific OMG language mapping for C++11, so we would like to propose to add c++11 as defined value

  • Reported: IDL 4.2 — Thu, 19 Aug 2021 08:41 GMT
  • Updated: Fri, 3 Jun 2022 19:44 GMT

Allow nested module definitions

  • Key: IDL43-54
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Currently when we want to declare a type in a deeply nested module we have to start with all higher level modules, for example

    module A {
    module B {
    module C

    { struct Foo; // Forward declaration typedef sequence<Foo> FooSeq; }
    }
    }

    It would be much easier that we can do the following (based on the C++17 namespace changes also allowing that for namespaces)

    module A::B::C { struct Foo; // Forward declaration typedef sequence<Foo> FooSeq; }
  • Reported: IDL 4.2 — Thu, 28 Oct 2021 11:10 GMT
  • Updated: Wed, 3 Nov 2021 17:53 GMT

Specify where annotations can be applied

  • Key: IDL43-27
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    IDL 4.0 contained specific grammar rules for where annotations can be applied. Issue IDL41-9 revised these rules and left the spec with the general statement that (7.4.15.4.2): "An annotation may be applied to any IDL constructs or sub-constructs."

    This is problematic for the following reasons:

    • The phrase "under annotation" is used in multiple places in the spec without it being defined
    • Tool implementors using a grammar based on the one in the spec need to make their own enhanced grammar to include <annotation_appl>, which undermines the usefulness of having a grammar in the spec
    • Documentation of specific annotations (whether standardized in IDL, standardized in other OMG documents such as XTYPES, or non-standard) has no systemic way of describing where the annotation should be used
    • Users have little assurance that their IDL will be understood by all conforming tools, even when using standardized annotations
  • Reported: IDL 4.2 — Wed, 5 Dec 2018 16:43 GMT
  • Updated: Wed, 29 Sep 2021 16:32 GMT

Remove the bifuration of basic and full inetrfaces

  • Key: IDL43-52
  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Since IDL is a specification language why have an IDL interface that cannot define data types it wishes to encapsulate and use as parameters for methods and attribute types? It looks like someone had a programming language in mind. I guess in the end the reason I think basic interfaces are a bad idea is that they can only be identified heuristically. The absence of contained types is a poor indicator of the IDL authors intent regarding whether the interface is basic or not.

  • Reported: IDL 4.2 — Wed, 8 Sep 2021 14:55 GMT
  • Updated: Wed, 8 Sep 2021 14:55 GMT

Behaviour when nested is not present should be standardized

  • Key: IDL43-51
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Currently the specification says: Note – The default value (TRUE) is significant when the annotation is present (this means that using the compact form @nested will set the element as nested, which is what is expected intuitively). It does not mean that by default (i.e.,when no annotation is present) an element is nested.

    The case when no nested is present should be specified, it should be the same as TRUE or FALSE and not left open. We observed that different DDS vendors take different decisions making portability of user IDL which uses partly @nested broken. Some vendors assume default nested TRUE, others FALSE which in practice means when the user wants portable IDL he has to specify it which each IDL type.

  • Reported: IDL 4.2 — Mon, 23 Aug 2021 17:18 GMT
  • Updated: Wed, 8 Sep 2021 14:33 GMT

Missing hyperlinks for CORBA speficiations

  • Key: IDL43-45
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    For the CORBA specifications as part of the scope chapter there are no hyperlinks, these should be added

  • Reported: IDL 4.2 — Thu, 19 Aug 2021 07:40 GMT
  • Updated: Thu, 19 Aug 2021 14:25 GMT

Feature macros to guard building blocks

  • Key: IDL43-44
  • Status: open  
  • Source: MIT/Lincoln Laboratory ( Mr. Daniel Herring)
  • Summary:

    Now that IDL is modular with building blocks, IDL authors need a way of guarding IDL files so they are compatible with tools that implement different subsets of the building blocks. See discussion in IDL43-21 for a motivating example.

    See C++ feature test macros for a possible implementation pattern.
    https://en.cppreference.com/w/cpp/feature_test

    Another option is to have an "IDL_VERSION" macro that can be used as a pre-processor condition.

  • Reported: IDL 4.2 — Tue, 15 Jun 2021 21:14 GMT
  • Updated: Wed, 16 Jun 2021 07:26 GMT

Ability to add annotations by reference

  • Key: IDL43-43
  • Status: open  
  • Source: MIT/Lincoln Laboratory ( Mr. Daniel Herring)
  • Summary:

    At present, annotation syntax must be placed in the IDL file, usually right before or after the syntax being annotated.

    This works very well for annotations that define shared interface constraints. It does not work well for annotations that control internal implementation details, such as the selection of an API option. These internal details should be separated from the shared interface and so do not belong in the shared IDL file.

    This proposal is to add a new syntax for annotating IDL structures. The basic idea is to define an annotation that takes two parameters, a "place" in the IDL and an annotation, and has the effect of inserting the annotation at the given place. For example @insert(Foo.x, @some(value)) would be equivalent to placing @some(value) by the definition of Foo.x.

    With this mechanism, end users could create a custom IDL that includes the shared IDL and then adds the custom annotations.

  • Reported: IDL 4.2 — Tue, 15 Jun 2021 20:56 GMT
  • Updated: Tue, 15 Jun 2021 20:56 GMT

Missing bullet "Integers restricted to holding 8 bits of information"

  • Key: IDL43-9
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    7.4.13.4 "Explanations and Semantics" gives a synoptic list of the complements,

    Those complements are:

    • Additions to structure definition in order to support single inheritance and void content (no members).
    • Ability to discriminate a union with other types (wide char and octet).
    • An additional template type (maps).
    • Additional constructed types (bitsets and bitmasks).

    The complement "Integers restricted to holding 8 bits of information" (7.4.13.4.4) should be added there.

  • Reported: IDL 4.2b1 — Sun, 4 Feb 2018 13:38 GMT
  • Updated: Tue, 15 Jun 2021 19:41 GMT

Annotation for union discriminator name

  • Key: IDL43-42
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    Predecessor: CPP1116-3

    For mapping the switch of unions, the language mappings choose different fixed names.
    It would be desirable to permit names that reflect the user's application domain.
    Example:

      enum environment_t { air, water, land };
    
      @switchname("environment")
      union env_info_t switch (environment_t) {
        case air:
          air_info_t air_info;
        case water:
          [...]
      };
    

    The @switchname annotation would cause the discriminator to be mapped using the given name.

    This may replace the name chosen by the language mapping (such as in the Ada mapping), or it may supplement the mapping chosen name (such as in the C++ mapping), depending on the nature of the mapped union.

    The provided name may not overlap with an enum value given in a case and it may also not overlap with a branch member name.

  • Reported: IDL 4.2 — Sat, 1 May 2021 16:43 GMT
  • Updated: Sun, 23 May 2021 10:32 GMT

Restrict bitshifts

  • Key: IDL43-41
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Currently the spec says:

    The << binary operator indicates that the value of the left operand shall be shifted left the number of bits specified by the right operand, with 0 fill for the vacated bits. The right operand shall be in the range 0 <= right operand < 64.•The >> binary operator indicates that the value of the left operand shall be shifted right the number of bits specified by the right operand, with 0 fill for the vacated bits. The right operand shall be in the range 0 <= right operand < 64

    But this should be more restricted, the range should be dependent on the number of bits of the underlying type, when it is for example a 32bit long, the operand should be in the range of 0 <= 32

  • Reported: IDL 4.2 — Mon, 10 May 2021 10:21 GMT
  • Updated: Tue, 11 May 2021 13:54 GMT

Allow enumerator value to be set without using @value

  • Key: IDL43-40
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    IDL 4.2 allows the @value on an enum to set a specific value for example

    enum Test_E

    { @value(8) TEST_NO, @value(10) TEST_YES }

    ;

    It would be more clear and logical when IDL would allow

    enum Test_E

    { TEST_NO = 8, TEST_YES = 10 }

    ;

  • Reported: IDL 4.2 — Tue, 13 Apr 2021 06:21 GMT
  • Updated: Tue, 13 Apr 2021 12:56 GMT

Use of Omg.Types

  • Key: IDL43-39
  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    The use of the Omg.Types name should be changed to OMG.Types.

  • Reported: IDL4-CSHARP 1.1b1 — Fri, 26 Mar 2021 15:40 GMT
  • Updated: Fri, 26 Mar 2021 15:40 GMT

Allow empty IDL modules

  • Key: IDL43-38
  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    At the moment model generated IDL files are used it could happen that in a certain configuration setting an empty IDL module appears in an IDL file or when doing some prototyping the users uses an empty IDL file. Currently seciton 7.4.1.4.2 of the IDL specification requires an IDL module to have at least 1 definition. We propose to more relax this, to allow an empty IDL module.

    Rule 3 should be changed to

    <module_dcl> ::= "module" <identifier> "

    {" <definition>* "}

    " A module

    And in the text

    A list of at least one definition (<definition>+) enclosed within braces ({}). Those definitions form the module body.

    Could be changed to

    A list of zero or more definitions (<definition>*) enclosed within braces ({}). Those definitions form the module body

  • Reported: IDL 4.2 — Fri, 26 Feb 2021 09:39 GMT
  • Updated: Tue, 23 Mar 2021 20:56 GMT

Explain how to handle when an annotation appears in attributes with multiple declarators

  • Key: IDL43-37
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    It is possible to put an annotation on an attribute with multiple declarators, like this:

    struct Foo {
      @key long x, y;
    };
    

    What is the effect of this? Does the annotation apply to both declarators? In that case, how do you interpret the following:

    struct Foo {
      @fieldid(0x01000) long x, y;
    };
    

    The spec should say how to handle this case.

    Proposal - annotation applies to all declared members. In some cases this causes an error (same ID on 2 members). In other cases, tools could decide to issue warnings.

  • Reported: IDL 4.2 — Tue, 8 Dec 2020 16:09 GMT
  • Updated: Tue, 23 Mar 2021 20:54 GMT

clarify forwarding rules related to structure inheritance

  • Key: IDL43-36
  • Status: open  
  • Source: Real-Time Innovations ( Mr. Dave Stringer)
  • Summary:

    Structure inheritance is described by rules (45) and (48), page 27. The constraints on using forward-declared structures are given in section 7.4.1.4.4.4.4, page 40. For clarity, it would be better if this section made explicit the prohibited uses of forward declarations. This is done for value types in section 7.4.5.4.2 on page 57, "It is illegal to inherit from from a forward-declared value type not previously defined". Though this is a clarification it has been shown to be needed as this illegal use for forward-declared structures has occurred in external (to OMG) specifications that use IDL.

  • Reported: IDL 4.2 — Wed, 7 Oct 2020 13:56 GMT
  • Updated: Tue, 23 Mar 2021 20:51 GMT

Need the concept of a "using namespace" directive to simplify IDL files

  • Key: IDL43-34
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    Programming languages that have the concept of modules/namespaces also include the concept of "using" a namespace type such that one can ommit the explicit reference to the 'used' namespace.

    The following is an example for C++:

    Assume the declaration:

    namespace MyNamespace
    {
        class MyClass
        {
        public:
            void my_operation() {}
        };
        void MyFunction1(MyClass) {}
    }
    

    Normally these types need to be accessed using their fully qualified names:

    MyNamespace::MyClass obj;
    obj.my_operation();
    MyNamespace::MyFunction1(obj);
    

    This can be cumbersome when having to reference a lot of types in the same namespace, specially for deep nested namespaces.

    The C++ using declaration can bring the name space or individual types into scope simplifying the coding as in:

    using MyNamespace::MyClass;
    MyClass obj;
    obj.my_operation();
    MyFunction1(obj);
    

    Or alternatively bringing every type in the name space into the scope:

    using namespace MyNamespace;
    MyClass obj;
    obj.my_operation();
    MyFunction1(obj);
    

    Java and C# provide similar facilities:
    In Java the "import" keyword is used to import packages or types into the scope. The syntax is:

    import package.name.ClassName;   // To import a certain class only
    import package.name.*;
    

    In C# the "using" keyword is used to import namespaces or types into the scope. The syntax is:

    using  MyNamespaceName.MyClassName;   // To import a certain class only
    using MyNamespaceName;
    

    This issue request that a similar facility is added to IDL

  • Reported: IDL 4.2 — Tue, 23 Jun 2020 03:14 GMT
  • Updated: Tue, 23 Mar 2021 20:46 GMT

Rules for Qualified Names need to take into account other Building Blocks

  • Key: IDL43-31
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    This was originally reported as https://issues.omg.org/browse/CORBA34-1

    In 7.5.1, the 3rd bullet point lists "interface, struct, union, exception." Instead the same language from 7.5.2 ("The following kinds of definitions...") should be in effect.

  • Reported: IDL 4.2 — Thu, 14 Feb 2019 23:31 GMT
  • Updated: Tue, 23 Mar 2021 20:31 GMT

current IDL4 grammar breaks backward compatibility with respect to short hand notations

  • Key: IDL43-30
  • Status: open  
  • Source: ZettaScale Technology ( Mr. Erik Hendriks)
  • Summary:

    In section 7.4.4.4.2 it is explained that an annotation may be used in a shortened form in the following conditions:

    • There is no member or only one member with a default value.
      • In that it is allowed to apply the annotation by using just the annotation name.
    • There is only one member.
      • In that case you may apply the name of the annotation and the value of its member, without explicitly mentioning the member name and the equals sign.

    However, the second bullet may break backward compatibility when annotations get extended with additional members in future spec releases. Consider the following example:

    @bit_bound(32)
    bitmask DataRepresentationMask {
       @position(0) XCDR, 
       @position(1) XML,
       @posiiton(2) XCDR2
    }
    
    @annotation data_representation {
        DataRepresentationKind allowed_kinds;
    };
    

    Now to annotate an IDL type to support only the XCDR2 annotation, I can apply a shortened annotation like this:

    @data_representation(XCDR | XCDR2)
    struct Foo {
       long my_long;
    };
    

    Now suppose in a future version of the spec, we extend the @data_representation annotation with an additional field to specify the supported endianness, like this:

    enum EndiannessKind {
        BIG_ENDIAN,
        LITTLE_ENDIAN,
        NATIVE_PLATFORM
    };
    
    @annotation data_representation {
        DataRepresentationKind allowed_kinds;
        EndiannessKind endianness;
    };
    

    In this case, the addition of the new member suddenly invalidates existing IDL files that use the shorthand notation.

    What I want to propose is to allow the shorthand notation to be used for implicitly referring to the first available member. That is fully compatible with the current rule, but will also still apply when new members are added afterwards.

  • Reported: IDL 4.2 — Tue, 12 Feb 2019 16:31 GMT
  • Updated: Tue, 23 Mar 2021 20:31 GMT

Extended structs that are both inheriting and empty

  • Key: IDL43-28
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    The grammar rule 195 (for struct_def) indicates that a structure may either inherit from a base or may be empty, but not both. The intent based on the text around the rule seems to be to allow structs that are both empty and inheriting.

  • Reported: IDL 4.2 — Wed, 12 Dec 2018 22:20 GMT
  • Updated: Tue, 23 Mar 2021 20:28 GMT

Some standardized annotations use keywords as identifiers

  • Key: IDL43-26
  • Status: open  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    8.3.3.1 "@default" and 8.3.6.2 "@oneway" specify standardized annotations that a user is not allowed to make use of because grammar rule 225 (in 7.4.15.4.2) states that a <scoped_name> is used to identify the applied annotation. From rule 4, a <scoped_name> is built out of <identifiers> which can't be keywords (see 7.2.1, 7.2.3, 7.2.4).

  • Reported: IDL 4.2 — Wed, 5 Dec 2018 00:00 GMT
  • Updated: Tue, 23 Mar 2021 20:24 GMT

Incorrect rule number on connector_inherit_spec

  • Key: IDL43-23
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    Section 7.4.11.4.3 on page 85 contains:

    (181) <connector_inherit_spec> ::= ":" <scoped_name>
    

    The rule number should be 182.

  • Reported: IDL 4.2 — Sun, 1 Jul 2018 06:26 GMT
  • Updated: Tue, 23 Mar 2021 20:07 GMT

Typos in 8.2.2 enumerated list

  • Key: IDL43-22
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    Page 112 top continues the bullet list started on p.111 bottom:

    • May precise on which elements the annotation is valid in that specific context. That list may be only a subset of all the possible ones.

    Replace "precise" by a verb, e.g. specify, detail, elaborate, or expound.

    • Shall indicate the default behavior [...]. This is because the later values are intended to be the most logical values when the annotation is present.

    "later" -> latter

  • Reported: IDL 4.2b1 — Sat, 17 Feb 2018 14:36 GMT
  • Updated: Tue, 23 Mar 2021 20:07 GMT

Unicode apostrophe in source code

  • Key: IDL43-11
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    7.2.6.2.1 on page 23 contains:

    A character literal is one or more characters enclosed in single quotes, as in:
    const char C1 = ’X’;

    Please use the ASCII apostrophe:
    const char C1 = 'X';

  • Reported: IDL 4.2b1 — Sun, 4 Feb 2018 14:16 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Mapping int8/uint8 in absence of target language native support

  • Key: IDL43-10
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    If an implementation wishes to claim support for the "Building Block Extended Data-Types", it must support all of its complements, including the section 7.4.13.4.4 "Integers restricted to holding 8-bits of information".

    However, if the targeted programming language does not natively support int8 or uint8 then it is not obvious how the "unsupported" type may be mapped.

    For example, the Java language has a native type byte which is signed.
    The question then arises how the implementation maps the type uint8.

    The implementation could choose to

    • Maintain bit size:
      In that case, it would map uint8 to Java byte.
      The question then arises how values exceeding the positive signed maximum (127) are handled.
    • Maintain numeric range:
      In that case, it could map uint8 e.g. to Java short (16 bit quantity) or int (32 bit quantity).
      The implementation must then address the interoperability with other languages where uint8 is
      mapped to an 8 bit quantity.
    • Use yet a different mapping, for example a holder class (cf. Short, Integer, etc.)

    I therefore propose adding the requirement that the implementation shall document its mapping choice:

    If the targeted programming language does not natively support int8 or uint8 then an implementation
    shall include information about how it maps the types which lack the native language support.
    
  • Reported: IDL 4.2b1 — Sun, 4 Feb 2018 13:56 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Incorrect rule number on

  • Key: IDL43-12
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    In section 7.4.11.4.3 page 87 and in Annex A page 132, <connector_inherit_spec> should have the rule number 182.

  • Reported: IDL 4.2b1 — Thu, 8 Feb 2018 21:22 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Typo in title of 7.4.1.4.1

  • Key: IDL43-3
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    There is a stray > at the end of the title,

    7.4.1.4.1 IDL Specification>

  • Reported: IDL 4.2b1 — Tue, 30 Jan 2018 02:22 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Typo in Annex A: Consolidated IDL Grammar

  • Key: IDL43-5
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    Page 133 last item of "From Building Block Extended Data-Types" :

    (1) <unsigned_longlong_int> ::+ “uint64”

    The rule number should be 215.

    As an aside, the quotation marks used in rules 208 to 215 are fancy Unicode characters while the rest of the grammar uses the regular ASCII code 34 decimal.

  • Reported: IDL 4.2b1 — Mon, 29 Jan 2018 18:59 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Copy/paste problem at

  • Key: IDL43-8
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    This is not an issue in the strict sense, just a usability observation.
    If I copy/paste the word <porttype_def> of rule 174, it comes out as

    >‎ yedeepyotrop <
    
  • Reported: IDL 4.2b1 — Wed, 31 Jan 2018 06:52 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Apparently incomplete phrase

  • Key: IDL43-7
  • Status: open  
  • Source: Airbus Group ( Mr. Oliver M. Kellogg)
  • Summary:

    In section 4 "Terms and Definitions" on page 7, the last sentence is:

    > [...] Building blocks are described in
    > clause 0,

    The sentence seems to end on the comma; furthermore, I cannot find a "clause 0".

  • Reported: IDL 4.2b1 — Wed, 31 Jan 2018 01:04 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Formatting error in title of 7.4.13.4

  • Key: IDL43-2
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    The title of 7.4.13.4 says:

    7.4.13.4 <unsigned_longlong_int> ::+ “uint64”Explanations and Semantics

    This is a formatting error. The {{ <unsigned_longlong_int> ::+ “uint64”}} should appear before the title as one of the rules following:

    (214) <unsigned_long_int> ::+ “uint32”

    Note that this problem appears only in the generated PDF. The word document is fine.

  • Reported: IDL 4.2 — Fri, 8 Dec 2017 23:10 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT

Typo in section 7.4.1.4.4.4.3 Enumerations

  • Key: IDL43-1
  • Status: open  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    Section 7.4.1.4.4.4.3 Enumerations says:

    An enumeration must contain at least one enumerator and no more than 232.

    The 232 is a typo. It was meant to be 2 32

  • Reported: IDL 4.2 — Fri, 8 Dec 2017 22:41 GMT
  • Updated: Thu, 1 Mar 2018 00:28 GMT