From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Custom Storage Pool questions
Date: Wed, 13 Oct 2021 20:21:42 -0500 [thread overview]
Message-ID: <sk80n7$t0f$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: sjbq96$3cl$1@gioia.aioe.org
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:sjbq96$3cl$1@gioia.aioe.org...
> On 2021-10-03 06:33, Randy Brukardt wrote:
...
> Yes, but static monolithic linking is even more fragile. Typically a
> customer orders software off the shelf. It means that he says I need, e.g.
> HTTP client, ModBus master, CANOpen etc. It is simply impossible to
> re-link everything for each customer and run integration tests.
??? When you are dynamically loading stuff, you simply are assuming
everything is OK. (Which is usually nonsense, but for the sake of argument,
assume that it is OK to do.) When you statically link, you surely can make
the same assumption. It doesn't make sense to say you have to run
integration tests when you statically link and not do the same when you
dynamically load stuff.
Of course, when you statically link Ada code, you can include that code in
your static analysis (including, of course, the various guarantees that the
Ada language and compiler bring). When you dynamically load, you can have
none of that.
> So the software is organized as a set of plug-in relocatable libraries,
> each of them maintained, versioned and tested separately. You cannot turn
> clock 20 years back.
And you still have to do integration testing when using them together -- or
you could have done the same at the Ada source code level (that is, version,
maintain, and test separately) and still have the advantages of Ada
checking.
...
>> Of course you can.
>
> How? Ada does not determine the way you link an executable. If I put a
> package in a library it is there. If the package derives from a tagged
> type
This I don't understand at all. A dynamically loaded library necessarily has
a C interface (if it is generally useful, if not, it might as well be
maintained as Ada source code, there's no advantage to dynamic linking in
that case and lots of disavantages), and that can't export a tagged type.
In any case, a tagged type extension is a compile-time thing -- the compiler
has to know all of the details of the type.
>> The only thing you need to be compatible with is a C interface, which
>> is the only thing you need to interface to existing libraries that
>> you can't avoid.
>
> That would kill most of Ada libraries.
There's no use to an Ada dynamic library -- if it's only for your
organization's use, static linking is way better. And if it is for
everyone's use, it has to have a C interface, thus no tagged types.
>>> So getting rid of nesting tagged types will ease nothing.
>>
>> The problem is tagged types not declared at the library level.
>> Relocatable librarys are still library level (they have their own global
>> address space).
>
> When the library is loaded dynamically, there is no way to know in the
> executable the tag of the extension or prepare an extension of the
> dispatching table. I think it is far worse than a nested declaration, when
> is you have some information.
Ignoring that fact that this is useless construct, it is not at all hard to
do, because you have to know that the tag and subprograms are declared in
the dynamically loaded thing. Thus, one has to use a wrapper to call them
indirectly, but that's easy to do when everything is library level. It's
essentially the same as shared generics, which Janus/Ada has been doing for
decades -- including tagged type derivation.
The problem comes about when you have things whose lifetime is limited and
need to have a static link or display to access them. Managing that is a
nightmare, no matter how you try to do it.
Randy.
next prev parent reply other threads:[~2021-10-14 1:21 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-13 0:53 Custom Storage Pool questions Jere
2021-09-13 5:29 ` Randy Brukardt
2021-09-14 1:04 ` Jere
2021-09-21 0:06 ` Randy Brukardt
2021-09-18 11:32 ` Simon Wright
2021-09-20 0:31 ` Jere
2021-09-20 6:34 ` Niklas Holsti
2021-09-20 6:48 ` Emmanuel Briot
2021-09-20 7:35 ` Dmitry A. Kazakov
2021-09-20 16:59 ` Shark8
2021-09-21 0:50 ` Randy Brukardt
2021-09-21 23:08 ` Jere
2021-09-28 4:42 ` Randy Brukardt
2021-10-02 23:19 ` Jere
2021-10-03 8:52 ` Dmitry A. Kazakov
2021-10-14 1:26 ` Randy Brukardt
2021-09-13 11:12 ` J-P. Rosen
2021-09-14 0:48 ` Jere
2021-09-14 6:08 ` J-P. Rosen
2021-09-15 0:39 ` Jere
2021-09-15 7:01 ` Simon Wright
2021-09-16 23:32 ` Jere
2021-09-20 23:51 ` Randy Brukardt
2021-09-21 22:40 ` Jere
2021-09-14 6:23 ` Dmitry A. Kazakov
2021-09-14 6:42 ` J-P. Rosen
2021-09-14 7:00 ` Dmitry A. Kazakov
2021-09-20 23:58 ` Randy Brukardt
2021-09-15 0:21 ` Jere
2021-09-15 6:54 ` Dmitry A. Kazakov
2021-09-20 23:48 ` Randy Brukardt
2021-09-14 10:54 ` Egil H H
2021-09-15 0:11 ` Jere
2021-09-15 16:43 ` Simon Wright
2021-09-15 17:03 ` Simon Wright
2021-09-15 19:07 ` Dmitry A. Kazakov
2021-09-15 20:40 ` Simon Wright
2021-09-16 7:12 ` Emmanuel Briot
2021-09-16 23:21 ` Jere
2021-09-17 7:08 ` Emmanuel Briot
2021-09-17 7:18 ` Simon Wright
2021-09-17 13:56 ` Dmitry A. Kazakov
2021-09-17 19:46 ` Simon Wright
2021-09-17 20:39 ` Dmitry A. Kazakov
2021-09-17 21:17 ` Niklas Holsti
2021-09-18 7:49 ` Dmitry A. Kazakov
2021-09-18 9:03 ` Niklas Holsti
2021-09-18 10:22 ` Dmitry A. Kazakov
2021-09-18 15:59 ` Niklas Holsti
2021-09-18 16:19 ` Dmitry A. Kazakov
2021-09-19 10:36 ` Niklas Holsti
2021-09-19 11:41 ` Dmitry A. Kazakov
2021-09-20 7:05 ` Niklas Holsti
2021-09-20 7:35 ` Dmitry A. Kazakov
2021-09-20 8:08 ` Niklas Holsti
2021-09-20 8:28 ` Dmitry A. Kazakov
2021-09-21 0:45 ` Randy Brukardt
2021-09-21 0:40 ` Randy Brukardt
2021-09-21 0:30 ` Randy Brukardt
2021-09-21 0:37 ` Randy Brukardt
2021-09-21 6:28 ` Dmitry A. Kazakov
2021-09-28 4:38 ` Randy Brukardt
2021-09-28 7:00 ` Dmitry A. Kazakov
2021-09-21 0:26 ` Randy Brukardt
2021-09-21 6:51 ` Dmitry A. Kazakov
2021-09-28 4:31 ` Randy Brukardt
2021-09-28 6:56 ` Dmitry A. Kazakov
2021-09-28 7:52 ` Simon Wright
2021-09-28 8:07 ` Dmitry A. Kazakov
2021-09-28 22:04 ` Randy Brukardt
2021-09-29 7:57 ` Dmitry A. Kazakov
2021-09-29 14:41 ` Shark8
2021-09-29 15:16 ` Dmitry A. Kazakov
2021-09-30 0:16 ` Randy Brukardt
2021-09-30 8:08 ` Dmitry A. Kazakov
2021-10-01 0:04 ` Randy Brukardt
2021-10-01 8:25 ` Dmitry A. Kazakov
2021-10-02 9:06 ` Randy Brukardt
2021-10-02 10:18 ` Dmitry A. Kazakov
2021-10-03 4:33 ` Randy Brukardt
2021-10-03 8:40 ` Dmitry A. Kazakov
2021-10-14 1:21 ` Randy Brukardt [this message]
2021-10-14 3:12 ` philip...@gmail.com
2021-10-14 7:31 ` Dmitry A. Kazakov
2021-10-15 0:36 ` Randy Brukardt
2021-10-15 8:08 ` Stephen Leake
2021-10-15 8:18 ` Dmitry A. Kazakov
2021-10-15 22:22 ` Randy Brukardt
2021-10-15 8:15 ` Dmitry A. Kazakov
2021-10-15 22:44 ` Randy Brukardt
2021-10-16 9:00 ` Dmitry A. Kazakov
2021-10-16 14:32 ` Simon Wright
2021-10-16 15:06 ` Dmitry A. Kazakov
2021-10-18 14:23 ` Shark8
2021-09-21 0:19 ` Randy Brukardt
2021-09-21 0:18 ` Randy Brukardt
2021-09-16 8:41 ` 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