Version 1.5 of ai05s/ai05-0065-1.txt

Unformatted version of ai05s/ai05-0065-1.txt version 1.5
Other versions for file ai05s/ai05-0065-1.txt

!standard 13.13.2(52/2)          08-04-18 AI05-0065-1/03
!class binding interpretation 07-10-18
!status Amendment 201Z 08-11-26
!status WG9 Approved 08-06-20
!status ARG Approved 8-0-1 06-11-11
!status work item 07-10-18
!status received 07-08-08
!priority Low
!difficulty Easy
!qualifier Error
!subject Remote access types should be defined as externally streamable
!summary
All remote access types are allowed in a Remote_Types packages; they are not required to have stream attributes specified by a visible attribute_definition_clause.
!question
A Remote_Types packages requires [E.2.2(8/2)] that
the full view of each type declared in the visible part of the library unit that has any available stream attributes shall support external streaming (see 13.13.2).
This seems to imply that remote access types are not allowed unless they meet the requirements of 13.13.2(52/2), which says that access types must have Read and Write attributes specified by a visible attribute_definition_clause.
But that's bizarre, because their purpose is to be communicable across partitions. What is the intent?
!recommendation
(See Summary.)
!wording
Modify 13.13.2(52/2):
A type is said to support external streaming if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of {a non-remote}[an] access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an attribute_definition_clause, and that attribute_definition_clause is visible. An anonymous access type does not support external streaming. All other types {(including remote access types, see E.2.2)} support external streaming.
!discussion
It is easier to define "remote access types" to be externally streamable than to add additional text to Annex E.
While such access types are not necessarily streamable outside of partition communication (for instance, they may not work to disk files), that's not relevant for the formal definition of "externally streamable" (which is only about partition communication). This is mildly annoying, as it is different than the intuitive meaning of "externally streamable". But it isn't sufficient reason to add a bunch of additional text to Annex E.
!corrigendum 13.13.2(52/2)
Replace the paragraph:
A type is said to support external streaming if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of an access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an attribute_definition_clause, and that attribute_definition_clause is visible. An anonymous access type does not support external streaming. All other types support external streaming.
by:
A type is said to support external streaming if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of a non-remote access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an attribute_definition_clause, and that attribute_definition_clause is visible. An anonymous access type does not support external streaming. All other types (including remote access types, see E.2.2) support external streaming.
!ACATS Test
An ACATS test should ensure that remote access types are allowed (it seems likely that one exists).
!appendix

From: Gary Dismukes
Sent: Wednesday, August 8, 2007  1:43 PM

The following restriction applies to Remote_Types packages:

E.2.2(8/2)

   the full view of each type declared in the visible part of the
   library unit that has any available stream attributes shall
   support external streaming (see 13.13.2).

This seems to imply that remote access types are not allowed in the
visible part unless they meet the requirements of 13.13.2(52/2), which
says that access types must have Read and Write attributes specified
by a visible attribute_definition_clause.

But surely remote access types should always be treated as externally
streamable, since their purpose is to be communicable across partitions,
so it seems like there should be a rule added to define them as such in
either 13.13.2(52/2) or somewhere in E.2.2.

****************************************************************

Questions? Ask the ACAA Technical Agent