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