From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Visibility of Indexing aspects
Date: Mon, 6 Aug 2018 16:46:14 -0500
Date: 2018-08-06T16:46:14-05:00 [thread overview]
Message-ID: <pkafj7$5tg$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: cc25c794-5986-4f6e-9d5e-0ec20a4f47d0@googlegroups.com
"Dan'l Miller" <optikos@verizon.net> wrote in message
news:cc25c794-5986-4f6e-9d5e-0ec20a4f47d0@googlegroups.com...
...
>Ummmmmmmmm, what is so incredibly "expensive" about Element =>
>Self.Data(Index)'Access in OP?
Nothing is expensive about *that*, but it's also very unsafe by itself (this
either prevents a container from ever reusuing memory, or essentially
requires being OK with dangling pointers and the erroneousness that they
cause).
Our requirement was that the user-defined dereference mechanism needs to be
safe (at least possible to be safe), and that requires the container to be
able to find out when the dereference ceases to exist. At that point, the
container can free the underlying memory if need be. (For an extreme
example, consider a persistent container, where the object only should exist
in memory so long as it is being used there.) The design that we came up
with for Ada 2012 uses finalization for this notification; we looked at
other mechanisms, but they would have had similar overhead.
The Ada containers use the finalization to clear the tampering check (which
prevents deleting of elements while the dereference exists); other uses are
possible, of course.
Without these sorts of checks, Ada containers would be no more safe than C
code. In particular, Ada programmers do not expect checked indexing to be
unsafe, so syntax of C(I) being unsafe would be a particular surprise.
Randy.
next prev parent reply other threads:[~2018-08-06 21:46 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-02 20:31 Visibility of Indexing aspects Randy Brukardt
2018-08-03 0:43 ` Dan'l Miller
2018-08-03 20:56 ` Randy Brukardt
2018-08-03 21:32 ` Dan'l Miller
2018-08-06 21:46 ` Randy Brukardt [this message]
2018-08-06 22:12 ` Dmitry A. Kazakov
2018-08-07 15:13 ` Dan'l Miller
2018-08-07 22:41 ` Randy Brukardt
-- strict thread matches above, loose matches on Subject: below --
2018-07-14 14:18 Jere
2018-07-14 17:04 ` Shark8
2018-07-14 18:29 ` Jere
2018-07-14 18:41 ` Dmitry A. Kazakov
2018-07-14 23:00 ` Shark8
2018-07-14 23:28 ` Jere
2018-07-15 14:41 ` AdaMagica
2018-07-15 15:33 ` Jere
2018-07-16 3:22 ` AdaMagica
2018-07-17 0:35 ` Jere
2018-07-17 9:46 ` AdaMagica
2018-07-17 10:11 ` AdaMagica
2018-07-20 12:08 ` Jere
2018-07-20 16:11 ` AdaMagica
2018-07-20 22:03 ` Dan'l Miller
2018-07-20 22:07 ` Jere
2018-07-21 10:33 ` AdaMagica
2018-07-24 3:32 ` Randy Brukardt
2018-07-24 17:15 ` Dan'l Miller
2018-07-25 5:37 ` Randy Brukardt
2018-07-25 18:26 ` Dan'l Miller
2018-07-25 19:58 ` AdaMagica
2018-07-25 20:57 ` Dan'l Miller
2018-07-26 0:12 ` Randy Brukardt
2018-07-26 2:41 ` Dan'l Miller
2018-07-26 19:09 ` Randy Brukardt
2018-07-26 20:31 ` Shark8
2018-07-26 21:25 ` Dan'l Miller
2018-07-27 22:05 ` Randy Brukardt
2018-07-28 0:35 ` Dan'l Miller
2018-07-27 21:58 ` Randy Brukardt
2018-07-20 22:23 ` Jere
2018-07-20 22:25 ` Jere
2018-07-21 5:58 ` J-P. Rosen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox