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