comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Is there a reason System.Storage_Pools isn't Pure?
Date: Wed, 19 Apr 2017 09:37:31 +0200
Date: 2017-04-19T09:37:31+02:00	[thread overview]
Message-ID: <od743q$p4n$1@gioia.aioe.org> (raw)
In-Reply-To: 61e151c1-9fe6-4d32-8f13-d425bc41a616@googlegroups.com

On 19/04/2017 01:42, Shark8 wrote:
> On Tuesday, April 18, 2017 at 12:32:34 PM UTC-6, Randy Brukardt wrote:
>> Originally, it was not Pure because it was a child of System, which was not
>> Pure. So I can't find any discussion of the merits.
>>
>> However, Pure packages are automatically Remote_Types packages (that is,
>> values of the type can be transmitted between partitions). We'd never want
>> that to be the case with a storage pool, so there doesn't seem to be any
>> point in it being Pure.
>
> Are we sure we'd never want that?
> I imagine that would be an interesting way to do VMs -- essentially
> transmitting the [contained] memory directly between partitions, right?

No, so long you don't know what is in the memory. Even considering the 
case of a shared [distributed] memory pool it cannot be pure. E.g. 
initialization of an object in the shared memory must be done only once, 
which does not preclude binding of each shared copy/view, like mapping 
pointers since copies may be located in different virtual address spaces.

> What about a usable-for-anything holder?

Huh, what about fixing initialization/fixed in the first place. We would 
not need kludges like holders if any type could have proper constructor 
and destructor, access types included.

>> IMHO, Pure packages are too restricted to be useful (and not restricted
>> enough to be useful when synchronization is involved); it makes sense for
>> individual subprograms but not for an entire package. So I recommend only
>> trying to make packages Preelaborated. (That's especially true in Ada 2012,
>> where limited I/O is possible.) [Distribution might change this thinking;
>> I'm only considering stand-alone programs that don't use Annex E.]
>
> That's probably truer than I'd like -- but I guess the question was
> borne out of playing around w/ pure units and seeing how far I could
> push the style-guide's instruction "Use pragma Pure where allowed."

A lot of use cases conflated into single pragma Pure:

1. Value/object identity
2. Elaboration
3. Early evaluation (e.g. compile time, elaboration time)

It must be reworked from the start, IMO.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2017-04-19  7:37 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-18  6:31 Is there a reason System.Storage_Pools isn't Pure? Shark8
2017-04-18 18:32 ` Randy Brukardt
2017-04-18 23:42   ` Shark8
2017-04-19  7:37     ` Dmitry A. Kazakov [this message]
2017-04-19 18:50       ` Shark8
2017-04-19 19:48         ` Dmitry A. Kazakov
2017-04-19 20:42       ` Randy Brukardt
2017-04-19 20:36     ` Randy Brukardt
2017-04-20  0:12       ` Shark8
2017-04-22  5:02         ` Randy Brukardt
2017-04-22 17:18           ` Shark8
replies disabled

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