Cyclone programming language and its influence
Jonathan Goodwin
jondgoodwin at gmail.com
Sat Oct 17 23:27:56 UTC 2020
On Friday, 16 October 2020 at 21:59:44 UTC, jmh530 wrote:
> On Friday, 16 October 2020 at 20:16:10 UTC, Joseph Rushton
> Wakeling wrote:
>> [snip]
>>
>>
>> This article that it links to (it's mentioned in the section
>> on Cone) looks of particular interest w.r.t. D's further
>> development of memory safety features and alternatives to GC:
>> https://jondgoodwin.com/pling/gmm.pdf
>
> That was interesting. It looks like a big part of that paper is
> basically taking the pony language's reference capabilities and
> then adding a lock permission, which sounds a lot like a shared
> mutable variable in D. Pony certainly comes across as
> interesting, but the emphasis on the actor model made it a bit
> hard for me to grok.
You are right that half that paper focuses on what Pony calls
reference capabilities and I call permissions. I have shared more
of my thoughts in the 3-part post series that begins with this
post: https://pling.jondgoodwin.com/post/race-safe-strategies/
There is more to say on this topic, pioneered by Dr. Colin Gordon
et al with M# (Midori) and picked up on by Pony, having to do
with the safe movement of complex mutable graphs from one thread
to another. The essential safety concept revolves around the
notion of external isolation, mechanisms that prevent "external"
objects from having shared references within the isolated graph.
In future posts, I hope to explain this valuable technique and
its usefulness.
The other half of that paper focuses on the concept of regions,
orthogonal to permissions. At the time I wrote the paper, I was
unfamiliar with Cyclone and how much more vigorously it explored
the idea of a language supporting multiple memory management
strategies. I believe the approach I am taking improves on what
Cyclone accomplishes, but I am indebted to them for opening my
eyes towards a path for supporting safe, first-class regions,
which will be handy for arenas and pools.
The way I like to think about it is that regions promote memory
safety and permissions support data race safety.
More information about the Digitalmars-d
mailing list