CVS difference for ais/ai-00273.txt

Differences between 1.3 and version 1.4
Log of other versions for file ais/ai-00273.txt

--- ais/ai-00273.txt	2002/01/24 04:54:12	1.3
+++ ais/ai-00273.txt	2002/02/20 01:04:08	1.4
@@ -1,5 +1,6 @@
-!standard  E.05 (01)                                   01-09-05  AI95-00273/00
+!standard  E.05 (01)                                   02-02-08  AI95-00273/01
 !class amendment 01-09-05
+!status work item 02-02-08
 !status received 01-08-23
 !qualifier Error
 !priority Low
@@ -8,6 +9,11 @@
 
 !summary
 
+Implementations are not required to support the interface of the
+language-defined package System.RPC. Implementations are permitted
+to support alternative versions of the package System.RPC for
+implementing remote subprogram calls.
+
 !question
 
 System.RPC is designed to allow users to change from one vendor PCS
@@ -28,20 +34,95 @@
 
 !recommendation
 
-Make System.RPC implementation advice.
+Implementations are not required to support the predefined interface
+of System.RPC if another interface is more appropriate for the
+communication subsystem.  Implementations are allowed to provide
+an alternative version of package System.RPC, however they should
+be encouraged to support a substantially equivalent set of capabilities
+to that defined in the predefined specification of the package.
 
 !wording
 
+Delete the normative sentence at the end of E.5(1) that requires
+using the language-defined System.RPC interface.
+
+Under implementation advice, add:
+
+An alternative declaration is allowed for package System.RPC as long
+as it provides a set of operations that is substantially equivalent
+to the specfication defined in this clause.
+
 !discussion
 
+The current language requires implementors of Annex E to support the
+interface to the PCS defined in E.5 (package System.RPC).  The original
+concept of requiring this standardization was to allow for a well-defined
+interface separating the compiler support for marshalling and unmarshalling
+from the implementation of the underlying communication subsystem, which
+might well be provided by another vendor.  The idea was that such a
+separation would enhance portability of PCS implementations by providing
+a "plug and play" capability.
+
+As it has turned out in practice, Annex E has not been widely implemented
+by vendors.  In fact, at the time of this writing, only one vendor has
+chosen to provide full support for the Annex.  This vendor has discovered
+that the existing definition of System.RPC is overly constrained for
+supporting distributed environments such as CORBA, which provide a
+richer set of capabilities than that afforded by the predefined RPC
+interface.  Although the language allows extending the set of operations
+of System.RPC and the definition of child units, it still imposes
+a model based on a particular notion of Partition_Ids and send-receive
+operations that may limit its applicability.
+
+It's unreasonable to constrain implementations to support an interface
+that is deemed unsuitable or overly inflexible for their target distribution
+environments.  In particular, it doesn't make sense to require vendors to
+support the predefined interface along with other interfaces only for
+the purpose of satisfying a reference manual requirement if their
+target users do not benefit from its support. An analogy can be made
+with the run-time support for tasking implementations, where it would
+be unreasonable for the language to attempt to define a particular
+interface to tasking primitives, since this would be unlikely to
+provide a suitable and efficient mapping to a wide variety of underlying
+tasking executives.
+
+Consequently this AI removes the normative rule requiring support for
+the language-defined interface for System.RPC and changes this to
+Implementation Advice.  Note that the flexibility provided by relaxing
+this requirement is similar to what is allowed for package Ada.Command_Line,
+where implementations are permitted to change the interface to suit
+the particulars of argument passing on a given operating system.
+Given that System.RPC is not a user-level interface it seems even
+more appropriate to permit vendors to have this kind of flexibility
+in changing the interface of System.RPC and not to be burdened with
+supporting an interface that may be inappropriate or inadequate for
+the distributed communication protocols available on their chosen
+environments.
 
 !corrigendum xx.xx(xx)
 
 @drepl
+The @i<Partition Communication Subsystem> (PCS) provides facilities for
+supporting communication between the active partitions of a distributed
+program. The package System.RPC is a language-defined interface to the PCS.
+An implementation conforming to this Annex shall use the RPC interface to
+implement remote subprogram calls.
 @dby
+The @i<Partition Communication Subsystem> (PCS) provides facilities for
+supporting communication between the active partitions of a distributed
+program. The package System.RPC is a language-defined interface to the PCS.
+
+@dinsa
+The Write operation on a stream of type Params_Stream_Type should raise
+Storage_Error if it runs out of space trying to write the Item into the stream.
+@dinst
+An alternative declaration is allowed for package System.RPC as long
+as it provides a set of operations that is substantially equivalent
+to the specfication defined in this clause.
 
 !ACATS test
 
+Several existing ACATS tests will have to be deleted if this AI is approved.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent