comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Allocators design flaw
Date: Fri, 20 Oct 2017 20:42:45 -0500
Date: 2017-10-20T20:42:45-05:00	[thread overview]
Message-ID: <ose8ml$qqi$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: ort609$1i31$2@gioia.aioe.org

"Victor Porton" <porton@narod.ru> wrote in message 
news:ort609$1i31$2@gioia.aioe.org...
> Dmitry A. Kazakov wrote:
>
>> On 2017-10-14 04:53, Victor Porton wrote:
>>> It is impossible to properly implement an allocator through a C function
>>> (such as raptor_alloc_memory() from Raptor C library) which allocates a
>>> struct and returns the pointer to the allocated struct.
>>>
>>> It is because RM13.11(21.5/3) "The Alignment parameter is a nonzero
>>> integral multiple of D'Alignment..."
>>>
>>> (If it were "The Alignment parameter is equal to D'Alignment", then we
>>> would be able just to check (in Allocate procedure implementation) that
>>>
>>> pragma Assert(Dummy_Record'Alignment mod Alignment = 0);
>>> -- where Dummy_Record is an arbitrary C-convention record
>>> -- (as all C records have the same alignment reqs)
>>>
>>> So Alignment parameter may be arbitrarily big and the C function
>>> alignment may not conform to it.
>>
>> Usually allocators return addresses already rounded and there is nothing
>> to worry about.
>>
>>> Let us think how to work around (in Ada 202x) of this design flaw.
>>
>> If any it is _alloc_memory() flaw, not Ada's.
>
> It is an Ada flaw, because Ada must be able to interact with legacy C
> libraries.

Ada can interact just fine with C libraries. But there was never any 
intention that allocators and storage pools would be part of that 
interaction. It seems to be the case here that you are trying to fit a 
square peg into a round hole.

Keep in mind that all C interfacing is by definition implementation-defined, 
since it depends heavily on the C compiler. There's only so much portability 
that can be achieved in such interfacing; it can never be 100%.

                                Randy. 



  parent reply	other threads:[~2017-10-21  1:42 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-14  2:53 Allocators design flaw Victor Porton
2017-10-14  7:27 ` Dmitry A. Kazakov
2017-10-14 13:52   ` Victor Porton
2017-10-14 14:25     ` Dmitry A. Kazakov
2017-10-14 14:03   ` Victor Porton
2017-10-14 14:26     ` Dmitry A. Kazakov
2017-10-14 15:18       ` Victor Porton
2017-10-14 15:44         ` Dmitry A. Kazakov
2017-10-14 16:42           ` Victor Porton
2017-10-14 16:13     ` Simon Wright
2017-10-14 16:38       ` Victor Porton
2017-10-14 14:12   ` Victor Porton
2017-10-14 14:20     ` Victor Porton
2017-10-14 14:24       ` Victor Porton
2017-10-14 14:36         ` Dmitry A. Kazakov
2017-10-14 15:17           ` Victor Porton
2017-10-14 15:51             ` Dmitry A. Kazakov
2017-10-14 16:34               ` Victor Porton
2017-10-14 17:14                 ` Dmitry A. Kazakov
2017-10-14 17:24                   ` Victor Porton
2017-10-14 18:08                     ` Dmitry A. Kazakov
2017-10-14 14:28     ` Dmitry A. Kazakov
2017-10-14 15:14       ` Victor Porton
2017-10-14 15:42         ` Simon Wright
2017-10-14 16:29           ` Victor Porton
2017-10-14 20:07             ` Simon Wright
2017-10-14 21:26               ` Victor Porton
2017-10-21  1:42     ` Randy Brukardt [this message]
2017-10-14  8:02 ` Simon Wright
2017-10-14 13:59   ` Victor Porton
2017-10-14 14:35     ` Simon Wright
2017-10-14 15:11       ` Victor Porton
2017-10-14 15:56         ` Simon Wright
2017-10-14 16:22           ` Victor Porton
2017-10-29 16:01           ` David Thompson
2017-10-14 14:11 ` Victor Porton
replies disabled

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