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
next prev parent 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