From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.8 required=3.0 tests=BAYES_00,PLING_QUERY autolearn=no autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: 2dsa | !2dsa ? Date: Tue, 29 Dec 2020 16:51:19 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <2fa5a097-a0a6-4614-b990-ee70b89ab470n@googlegroups.com> <578126cd-507b-4e6b-8c08-31a115773bd2n@googlegroups.com> <30f2c0d8-58c2-4ca9-bfd6-2aa38309d27cn@googlegroups.com> NNTP-Posting-Host: 5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.9.2 Xref: reader02.eternal-september.org comp.lang.ada:60975 List-Id: On 2020-12-29 16:14, Luke A. Guest wrote: > On 29/12/2020 14:56, Dmitry A. Kazakov wrote: > >>> for increasing support for that annex. So the ARG could change the >>> annex but >>> it seems unlikely that any changes would make it into implementations. >>> (We've been told not to expect even the implementation of bugs fixes >>> included in Ada 202x, even from the vendor that originally requested >>> the bug >>> fixes.) >> >> Why there should be any vendor support in the first place? Why not to >> redefine it as a set of abstract tagged types allowing custom user >> implementations like storage pools and streams do? > > Would the compiler still need any support for this or would it just be a > set of interfaces at library level? Yes, because the idea is to have remote objects and remote calls looking exactly same as local objects and local calls. So the compiler must translate a call to an RPC to a call to some user primitive operation like System.RPC does. The operation would have a controlling parameter "connection" or "remote partition". The actual input values of the original call must be marshaled, e.g. as an output stream. The output values and the result will be returned via an input stream and deserialized from there into the actual parameters/result or else into a remote exception occurrence to re-raise locally if that was the outcome. Here lie a lot of problems. First is non-portability of stream attributes. Second is lack of support for bulky transfers and multiplexing. It is highly desirable that the output stream could be written in chunks as well as reading the input stream. E.g. if you pass large objects or if you want to multiplex RPCs made from different tasks rather than interlock them (which for synchronous RPC would result in catastrophic performance). The current Annex E is very crude to allow efficient, low-latency, real-time implementations. P.S. If Ada supported delegation, introspection and getter/setter interface, then, probably, all remote call/objects stuff could be made at the library level. But for now, compiler magic is needed. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de