comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: 2dsa | !2dsa ?
Date: Tue, 29 Dec 2020 16:51:19 +0100	[thread overview]
Message-ID: <rsfj9l$vnu$1@gioia.aioe.org> (raw)
In-Reply-To: rsfh4h$1t6o$1@gioia.aioe.org

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

  reply	other threads:[~2020-12-29 15:51 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-22 20:00 2dsa | !2dsa ? Rod Kay
2020-12-23  1:32 ` Randy Brukardt
2020-12-23  8:44   ` Dmitry A. Kazakov
2020-12-24 12:02     ` Maxim Reznik
2020-12-24 13:30       ` Dmitry A. Kazakov
2020-12-27 19:30         ` Rod Kay
2020-12-27 19:34           ` Rod Kay
2020-12-28 23:41             ` Randy Brukardt
2020-12-29 14:56               ` Dmitry A. Kazakov
2020-12-29 15:14                 ` Luke A. Guest
2020-12-29 15:51                   ` Dmitry A. Kazakov [this message]
2020-12-31 23:43                 ` Randy Brukardt
2021-01-09 15:05                   ` Rod Kay
2021-01-11 14:59         ` Shark8
2021-01-11 15:32           ` Dmitry A. Kazakov
2021-01-11 20:35             ` Shark8
2021-01-11 21:46               ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox