From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Intervention needed?
Date: Tue, 19 Mar 2019 17:04:22 -0500
Date: 2019-03-19T17:04:22-05:00 [thread overview]
Message-ID: <q6rp17$ajh$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: q6qa4u$kd0$1@gioia.aioe.org
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:q6qa4u$kd0$1@gioia.aioe.org...
> On 2019-03-19 03:18, Optikos wrote:
>> On Monday, March 18, 2019 at 7:36:17 PM UTC-4, Randy Brukardt wrote:
>
>>> since the containers are designed with possibly dangling cursors, a
>>> totally
>>> safe system would not be usable with them. The containers do include
>>> checks
>>> that would detect many ownership problems, however, so any lack of
>>> compile-time safety is definitely mitigated. (It's not 100% safe because
>>> of
>>> the possiblity that a cursor outlive the owner object; in that case, the
>>> checks are unreliable.)
>>
>> A container could have (as a required fundamental axiom) a singly-linked
>> list of spirits of all cursors ever created that reference it. As each
>> cursor's life ends, that dying cursor directly knows O(1) where its
>> spirit is within that linked list, and then removes its dying spirit too.
>> Then as the lifetime of the container ends, the finalization of that
>> linked list is to walk that link-list of spirits to abruptly undermine
>> each spirit's corresponding still-living cursor so that that
>> longer-lived-than-its-container cursor abruptly has the usual customary
>> representation of cursor-exhausted-its-walk-of-the-container (i.e., the
>> end-of-loop criterion during normal-operations' not-end-of-lifed cursor
>> walks of not-end-of-lifed container), so that cursors are all instantly
>> loop-terminating gracefully whenever their container ceases to exist.
>
> Forgive my ignorance, but how this is different from a weak reference?
>
>> Hence, no cursor ever contains a pointer/access/address value that out
>> lives its container, because that pointer was overwritten (at container
>> finalization) with the cursor-exhausted-its-walk-of-the-container
>> reserved value that all loops & conditional branches interrogate as a
>> matter of their normal-operations behavior. Q.E.D.
>
> The cursor is still dangling. The difference is that one can check if it
> indeed is (with a nice race condition attached).
Right. And dangling pointers are illegal in a full Rust-like scheme. So you
can't declare them at all, which is a problem when you need to implement an
existing specification that has them.
A lot of what the ownership scheme does well isn't really necessary in Ada
in the first place, as one can use a discriminant-dependent component to get
the same effect without any pointers at all. I'm talking about
dynamically-sized arrays and singly-linked lists (which are just sequences
of elements, can be modeled as an array just as well as with a list). The
more complex data strurtures seem to be very hard to build that way -- but
those are the only ones really need pointers in the first place. So I'm not
fully sold on the concept as the cure to all ills - it's just another tool
to make code a bit safer.
Randy.
next prev parent reply other threads:[~2019-03-19 22:04 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-08 16:43 Intervention needed? Olivier Henley
2019-03-08 16:58 ` Dmitry A. Kazakov
2019-03-08 17:31 ` gautier_niouzes
2019-03-11 14:31 ` antispam
2019-03-11 15:07 ` gautier_niouzes
2019-03-11 17:19 ` Dmitry A. Kazakov
2019-03-11 15:34 ` Lucretia
2019-03-11 17:30 ` Simon Wright
2019-03-11 17:42 ` Dmitry A. Kazakov
2019-03-11 18:14 ` AdaMagica
2019-03-11 19:52 ` Olivier Henley
2019-03-11 20:04 ` Lucretia
2019-03-11 22:08 ` Jeffrey R. Carter
2019-03-12 2:04 ` Lucretia
2019-03-12 13:17 ` Olivier Henley
2019-03-12 16:32 ` Jeffrey R. Carter
2019-03-12 16:56 ` Lucretia
2019-03-12 17:20 ` Lucretia
2019-03-12 18:14 ` Olivier Henley
2019-03-12 19:21 ` Lucretia
2019-03-12 21:53 ` Randy Brukardt
2019-03-13 10:50 ` Jere
2019-03-17 12:52 ` Optikos
2019-03-17 16:37 ` Luke A. Guest
2019-03-17 16:48 ` Paul Rubin
2019-03-20 0:49 ` Optikos
2019-03-20 1:04 ` Paul Rubin
2019-03-20 1:19 ` Optikos
2019-03-18 23:36 ` Randy Brukardt
2019-03-19 2:18 ` Optikos
2019-03-19 8:44 ` Dmitry A. Kazakov
2019-03-19 9:53 ` Optikos
2019-03-19 22:13 ` Randy Brukardt
2019-03-19 22:26 ` Paul Rubin
2019-03-20 1:08 ` Jere
2019-03-22 2:26 ` Randy Brukardt
2019-03-23 15:56 ` Jeffrey R. Carter
2019-03-23 21:38 ` Paul Rubin
2019-03-19 22:36 ` Optikos
2019-03-19 23:13 ` Randy Brukardt
2019-03-20 1:28 ` Jere
2019-03-20 8:42 ` Dmitry A. Kazakov
2019-03-22 2:00 ` Randy Brukardt
2019-03-22 11:10 ` Jere
2019-03-23 8:03 ` Randy Brukardt
2019-03-23 21:32 ` Jere
2019-03-20 7:59 ` Optikos
2019-03-22 2:16 ` Randy Brukardt
2019-03-22 8:38 ` Optikos
2019-03-22 10:54 ` Jere
2019-03-23 7:53 ` Randy Brukardt
2019-03-23 13:59 ` Jere
2019-03-23 21:19 ` Jere
2019-03-23 21:29 ` Paul Rubin
2019-03-26 8:09 ` Optikos
2019-03-20 1:20 ` Jere
2019-03-22 2:30 ` Randy Brukardt
2019-03-22 9:08 ` Dmitry A. Kazakov
2019-03-22 22:23 ` Optikos
2019-03-27 19:20 ` G. B.
2019-03-27 21:02 ` Paul Rubin
2019-03-28 7:01 ` Maciej Sobczak
2019-03-28 7:17 ` Paul Rubin
2019-03-28 8:39 ` Simon Wright
2019-03-30 4:31 ` Paul Rubin
2019-03-30 22:14 ` Robert A Duff
2019-03-30 22:55 ` Paul Rubin
2019-03-28 9:06 ` Dmitry A. Kazakov
2019-03-28 20:48 ` G. B.
2019-03-29 5:13 ` Bojan Bozovic
2019-03-29 8:13 ` Dmitry A. Kazakov
2019-03-29 6:57 ` Maciej Sobczak
2019-03-29 7:13 ` Paul Rubin
2019-03-29 8:39 ` Dmitry A. Kazakov
2019-04-01 15:13 ` Optikos
2019-04-01 16:51 ` Dmitry A. Kazakov
2019-04-01 21:42 ` Randy Brukardt
2019-04-02 8:30 ` Dmitry A. Kazakov
2019-04-02 15:53 ` Anh Vo
2019-03-19 22:04 ` Randy Brukardt [this message]
2019-03-19 22:22 ` Paul Rubin
2019-03-19 23:01 ` Randy Brukardt
2019-03-19 9:37 ` Optikos
2019-03-19 22:21 ` Randy Brukardt
2019-03-29 17:56 ` Florian Weimer
2019-03-29 22:17 ` Randy Brukardt
2019-03-29 22:35 ` Florian Weimer
2019-04-01 21:17 ` Randy Brukardt
2019-03-29 17:41 ` Florian Weimer
2019-03-29 22:16 ` Randy Brukardt
2019-03-29 22:43 ` Florian Weimer
2019-04-01 21:29 ` Randy Brukardt
2019-04-01 22:14 ` Simon Wright
2019-04-02 21:55 ` Randy Brukardt
2019-04-04 15:07 ` Simon Wright
2019-03-12 21:41 ` Randy Brukardt
2019-03-13 9:10 ` Maciej Sobczak
2019-03-13 11:08 ` Jere
2019-03-13 11:11 ` Jere
2019-03-13 11:59 ` Jere
2019-03-13 13:44 ` Olivier Henley
2019-03-13 15:56 ` Simon Wright
2019-03-13 16:25 ` Olivier Henley
2019-03-14 0:40 ` Simon Wright
2019-03-13 16:27 ` Olivier Henley
2019-03-14 22:41 ` Randy Brukardt
2019-03-16 21:30 ` Olivier Henley
2019-03-29 17:38 ` Florian Weimer
2019-03-13 13:23 ` Olivier Henley
2019-03-22 11:10 ` Lucretia
2019-03-22 14:09 ` J-P. Rosen
2019-03-22 16:41 ` Jeffrey R. Carter
2019-03-22 17:29 ` Paul Rubin
2019-03-22 22:36 ` Optikos
2019-04-01 7:28 ` gautier_niouzes
-- strict thread matches above, loose matches on Subject: below --
2019-03-25 19:14 Randy Brukardt
2019-03-25 20:44 ` Dmitry A. Kazakov
2019-03-28 0:48 ` Jere
2019-04-02 22:07 Randy Brukardt
2019-04-03 7:29 ` Dmitry A. Kazakov
2019-04-03 14:31 ` Optikos
2019-04-03 14:54 ` Dmitry A. Kazakov
2019-04-03 15:29 ` Optikos
2019-04-03 16:16 ` Simon Wright
2019-04-03 17:15 ` Dmitry A. Kazakov
2019-04-03 21:12 ` Simon Wright
2019-04-04 7:09 ` Dmitry A. Kazakov
2019-04-04 5:44 ` Maciej Sobczak
2019-04-04 7:17 ` Dmitry A. Kazakov
2019-04-04 7:22 ` Paul Rubin
2019-04-04 8:37 ` Niklas Holsti
2019-04-05 0:13 ` Randy Brukardt
2019-04-05 5:45 ` Maciej Sobczak
2019-04-05 15:17 ` Optikos
2019-04-06 1:38 ` Jere
2019-04-06 4:25 ` alby.gamper
2019-04-06 6:49 ` Jere
2019-04-06 8:24 ` alby.gamper
2019-04-04 12:28 ` Simon Wright
2019-04-04 16:17 ` Optikos
2019-04-03 15:07 ` Lucretia
2019-04-03 16:15 ` Simon Wright
2019-04-03 17:23 ` Niklas Holsti
2019-04-03 17:48 ` Bill Findlay
2019-04-03 21:01 ` Simon Wright
2019-04-03 18:58 ` Dennis Lee Bieber
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox