On Thu, 18 Sept 2025 at 14:26, Marco Elver <el...@google.com> wrote: > > Fair points. "Context Analysis" makes sense, but it makes the thing > (e.g. lock) used to establish that context a little awkward to refer to > -- see half-baked attempt at reworking the documentation below.
Yeah, I agree that some of that reads more than a bit oddly. I wonder if we could talk about "context analysis", but then when discussing what is *held* for a particular context, call that a "context token" or something like that? But I don't mind your "Context guard" notion either. I'm not loving it, but it's not offensive to me either. Then the language would be feel fairly straightforward, Eg: > +Context analysis is a way to specify permissibility of operations to depend > on > +contexts being held (or not held). That "contexts being held" sounds odd, but talking about "context markers", or "context tokens" would seem natural. An alternative would be to not talk about markers / tokens / guards at all, but simply about a context being *active*. IOW, instead of wording it like this: > +The set of contexts that are actually held by a given thread at a given point > +in program execution is a run-time concept. that talks about "being held", you could just state it in the sense of the "set of contexts being active", and that immediately reads fairly naturally, doesn't it? Because a context is a *state* you are in, it's not something you hold on to. The tokens - or whatever - would be only some internal implementation detail of how the compiler keeps track of which state is active, not the conceptual idea itself. So you name states, and you have functions to mark those context states as being entered or exited, but you don't really even have to talk about "holding" anything. No? Linus