On Sat, Jul 27, 2013 at 1:27 PM, David Jeske <[email protected]> wrote:
> below are some brainstorms. terrible names for communication purposes > only.. > > NoThreadSpawn - does not create any OS level threads > If those threads survive to escape the call, it's an escape. If they are all cleaned up before the thread is done, why is this any business of the caller? What is the real-world concern? I can see uses for this. What I'm really trying to get at is whether this wants to be an effect or whether the real thing we want is to be able to type the fact that access to a given [graph of] object[s] is unique (i.e. non-concurrent). > NoRingSwitch - does not call any kernel-call > Again, why is this any business of the caller? What is the real-world concern? > NoBlock - does not call any blocking kernel calls > I don't think this one is meaningful without NoPreempt. Can you give a real-world use case? > I'm tempted to add: > > NoGlobals - does not depend on any static module global region/BSS -- is > this the same as NoDetect? > Not quite. The only reason to preclude dependence on globals is isolation. It is sufficient to preclude dependence on *mutable* globals. If *nobody* can mutate a global, then that global is for all intents and purposes a literal, and there's no real reason to be concerned about it. Here's another potentially interesting one, thought the verification system it implies is frightening: terminating - procedure, when called, is guaranteed to terminate I can see strong uses for several of these in very peculiar codes. Most of them don't strike me as general enough to warrant promotion into language-supported effects. Might be better to handle some of these with attributes and an offline checker. shap
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
