>>
>> ... then I still don't see how to do an encoding of weak references that
>> isn't invasive (e.g., adding in a user-level GC that constructors are
>> somehow guaranteed to go through). For a non-invasive approach, there might
>> be probablistic guarantees achieved by API restrictions (e.g., limit the
>> number of bad guesses of IDs for the otherwise forgeable ID->object
>> function) or a creative use of lexically scoped regions, but I'm skeptical
>> of anything complicated like that.
>
> I don't see the connection. We're talking about Ephemeron (Tables) as
> primitives in the language. The GC definitely has to know about them.
> Likewise for hashcode: if the object's address is one-way hashed to the
> hashcode() result, but the GC moves the object, then the object will need to
> grow a field to store its invariant hashcode.
Ah, I was confused by the use of bootstrap in "Could we bootstrap Set, Map, and
WeakMap and call it enough?" ; I thought you meant a user-level encoding of
these given language-level hashes etc.
Found the table proposal.. without iteration (and assuming no weak ptrs), one
of my main use cases (data flow constructs), is still restricted. Given other
proposals like object hashing, I'm not sure how much of a win these tables are.
If the reason they're not there is non-determinism, weak ptrs would make this a
non-issue. Furthermore, I suspect numerics already introduce non-deterministism
and embeddings of JS push most programs towards it as well (browsers, servers,
games), so purism would be a Quixotian goal. Assuaging some concerns, iteration
can be phrased as a capability (and thus disabled) and not made generic
(preventing unintended encountering such as preventing it from hitting generic
for-in sugar).
- Leo
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss