On Thu, Nov 13, 2025 at 8:37 AM Rob Meijer <
pib...@gmail.com> wrote:
>
> Looks good. In my current draft actors are a wrapper around a "Scope" plus either a "function" or a "def", where a def and a function are close to the same things but they have slightly different definitions syntax because of import contract needs.
>
> I haven't gotten to working out the exact details yet for actors, but I'm definitely going to take a deeper look at your implementation to see if there are things I should change on my end.
>
> I took some time to work out details for Scope/scope and the scoping rules on different levels and how they relate to the low assumption parallelism, plus some other details including the import (merge) that I think might interest you. Please borrow anything you like from that.
>
> The details on the actors bit, as well as the details on attenuation and decomposition and possibly a less minimal strictly POLA exception handling setup, still need working out.
>
> I'll definitely look deeper into your work before working out the actor details, also looking at ideas for what to do with exceptions because that is the only part where strict POLA as it is in the draft now feels constraining.
>
I'm not really certain exceptions with strict POLA must feel constraining.
in fact a decade ago harper gave a characterization of exceptions in
standard ML as shared secrets. They've formed the basis for many
sealer/unsealer implementations in that language.
https://existentialtype.wordpress.com/2012/12/03/exceptions-are-shared-secrets/
I somewhat feel that there is some mixing of authority in the SML
characterization of exceptions. This largely follows from the
"balance" of introduction and elimination rules in logic in the sense
that because "matching" and "constructors" are linked what harper
calls a "raiser" and a "handler" in other words it is impossible to
separate the ability to raise from the ability to handle. He also
discusses "wild-card handlers", I would characterize these as a 3rd
form of authority. Essentially a wild card handler is the authority
to observe that an exception occurred. If I were going for a "least"
POLA account of exceptions I would start with separating these 3
authorities
1. raise (basically is just sealing along with a channel between stack frames)
2. observation (may not be able to unseal but can observe that a
message was sent)
3. decode (unseal)
He gives this the formal treatment in his book PFPL, but it's by no
means an easy read that you can just pick up and expect to glean
anything from without first from without spending time understanding
his entire formal structure.
I've sort of skipped over all the topics that usually come to mind
when people mention exceptions (the control flow/goto-esque
implications), presumably control in actor/capability language
shouldn't be restricted to a single channel for "return" values, my
feeling is that aspect is already gone by the time you're using
message passing so I won't dwell on it.
This isn't really taking into account capability OS mechanisms like
seL4's async notifications
which are a form of signaling akin to observation since they cannot
carry state/values but I feel should stop here before I manage to test
everybody's patience.
But what I seek to get across is that the standard ML account of
exception values tend to look alot like sealing/unsealing except
sealing and unsealing are bi-implicated (having a sealer implies
having an unsealer and vice versa) plus observation, signaling and
some control flow aspects. But I don't feel like it is out of reach of
pola/capability system, On the contrary these are all pretty
fundamental aspects of some modern capability systems.
> To view this discussion visit
https://groups.google.com/d/msgid/cap-talk/CAMpet1UMh6-TemKRv%3DZZT3ym-L36GkuZpOAXu7ke36EgSzR5FQ%40mail.gmail.com.