17:43 | <Ashley Claymore> | https://es.discourse.group/t/note-in-liveness-section-appears-to-be-normative/1345 Cross posting question I posted in the forum 🙂 |
17:47 | <shu> | no, not the intention that it's normative |
17:48 | <shu> | liveness is defined on sets of objects |
17:48 | <annevk> | Ashley Claymore: that does seem like a bug of sorts; you shouldn't have requirements in notes; notes should be statements of fact, or discuss some context or some such |
17:48 | <shu> | the note is clarifying that this clearing operation is on sets of objects, not individual objects |
17:48 | <shu> | it's in there because a previous formulation of liveness was buggy in that way |
17:49 | <Ashley Claymore> | The bit I’m missing is that there doesn’t seem to be a requirement for what is in the set |
17:49 | <shu> | that's defined in liveness, the two bullet points |
17:49 | <shu> | there is no requirement on the size of that set |
17:50 | <shu> | it is as compliant to never clear any objects as it is to always clear the maximal set of non-live objects |
17:50 | <annevk> | shu: I'd rephrase the "must" bits as statements of fact then, this is reading as separate requirements |
17:50 | <shu> | annevk: fair |
17:52 | <Ashley Claymore> | The bit that is tripping me up, is the liveness of a set that only has one object in it: this seems to only refer to the keptAliveList and weakRef-oblivious executions. So it then only clears weakrefs that have that one object as its target. |
17:52 | <Ashley Claymore> | But other weakRefs could allow that object to be reached, without mention of them being cleared |
17:53 | <Ashley Claymore> | Apart from in that last note |
17:54 | <shu> | in your example, that set would be considered live then |
17:54 | <shu> | the WeakRef-oblivious execution part is parametric on this set of objects S |
17:54 | <shu> | it's not that all derefs for all weakrefs return undefined |
17:54 | <Ashley Claymore> | Ooo |
17:54 | <Ashley Claymore> | That is what I’m missing |
17:54 | <shu> | so if your set S has one object in it, but is reachable by a WeakRef that's not in S |
17:55 | <shu> | the "with respect to S " part |
17:55 | <shu> | maybe this should be rewritten to be more function-like so it obviously takes S as an input or something |
17:55 | <Ashley Claymore> | Thanks Shu! |
17:55 | <shu> | sure thing, let me think of how to improve the note and this editorially |
17:56 | <Ashley Claymore> | I think it is clear, not sure why I didn’t correctly apply that description when reading the other parts |
17:57 | <Ashley Claymore> | If a different way of phrasing it comes to mind I’ll say. |
18:06 | <shu> | annevk: how would you recommend the "must" be restated as a statement of fact? |
18:06 | <shu> | does something like "conformance requires implementations do blah blah" suffice? |
18:25 | <Ashley Claymore> | Something like that does sound good to me - "WeakRef-oblivious execution with respect to S" could maybe be "WeakRef[S]-oblivious-execution" - though I can see why others may prefer the wordier wording 😆 |