On May 15, 2011, at 3:41 PM, Sam Tobin-Hochstadt wrote: > On Sun, May 15, 2011 at 6:31 PM, Allen Wirfs-Brock > <[email protected]> wrote: >> >> On May 14, 2011, at 5:03 PM, Oliver Hunt wrote: >> >>> I suspect i did suggest WeakMap but I think I misunderstood the proposal. >>> I felt the goal was to prevent the key from being kept around forever even >>> when the value was gone, I did not expect the key to keep the value alive. >>> >>> --Oliver >>> >> >> I think I've suggest in the past that what we are currently calling >> "WeakMap" should just be called "ObjectMap" or something like that. I can't >> think of any use case where object identify is used as a map key and you >> don't want the "WeakMap" semantics. Essentially "WeakMap" just means >> "NonLeakyObjectMap". > > It's pretty easy to implement a Set datastructure on top of a Map, and > if your set's equality is ===, then you'd want a strong > object-identity-keyed map. WeakMap semantics would clearly be wrong > here.
I talked to Sam because it wasn't totally clear to me what the loss of a WeakMap entry if all clients of that Set implementation lost their keys would break. He replied "enumeration". That's a good point but it disqualifies WeakMap out of the gate. WeakMaps are not enumerable, again to avoid leaking GC non-determinism. Therefore I don't think ObjectMap is a better name than WeakMap. But neither is NonEnumerableEphemeronBasedWeakMap ;-). > Of course, to do this using ES.next WeakMaps would be annoying, > because *only* objects can be used as keys, but that's not really > relevant to the strong/weak distinction. This is a good point too. Not sure we've considered a value -> value map carefully yet. /be _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

