On Jul 3, 2010, at 10:50 PM, Mark S. Miller wrote:

> On Sat, Jul 3, 2010 at 10:27 PM, Leo Meyerovich <[email protected]> wrote:
> Is object identity the inverse of hash? So myObj == identity(hash(myObj))?
> 
> No. There is not and must not be an identity function which turns data into 
> access. This would destroy the most important safety property of JavaScript, 
> that object references are not forgeable.
> 


I'm with you there. Was surprised when I thought it was being proposed in that 
way! 


> Also, hashes can collide. So the most you get is the conventional:
> 
> * if (typeof x !== 'number' && x === y) then hash(x) === hash(y)
> 
> * if (hash(x) === hash(y)) then it is likely but not guaranteed that x === y.
> 

Object hashes seems like a misnomer in this case as it seems fine to require 
them not to collide. I don't know what happens in JS when you use more than 32 
bits or 64 bits of references, but I'd expect a similar out-of-memory 
restriction for a for-free (hashless) implementation ;-) Anyways, red herring 
and I probably don't know enough about serialization, object persistence, etc. 
to discuss what a useful API would be here for expected use case in a helpful 
way.

>  
> Then weakly keyed or mapped tables are obviously possible, even though 
> they'll have to be manually cleared of expired values.
> 
> Unfortunately, while this may support encoding weak mappings, I suspect a 
> feature like that is used more often in frameworks than application code, so 
> there might be a big penalty. ActionScript 3 introduced a Dictionary object 
> that performs weak mappings -- perhaps that can be used to find a concrete 
> comparison point. i don't know how this is distinct from 'ephemeron' tables, 
> so I might be missing something.
> 
> I don't know ActionScript or its Dictionaries.

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html

I no longer have asc installed so cannot directly check when they write 
'weakKeys'  whether they really meant weak keys or weak mappings (so both key & 
value are weak); the description reads both ways. It might be useful to analyze 
how it is used (or not) before suggesting a deviation from it. This is not from 
the perspective of weak dictionaries being good but something that can be 
learned from. 

FWIW, I believe ActionScript's use introduces non-determinism to the language: 
iterating over the dictionary can reveal an object that is only weakly 
referenced if the GC hasn't run yet. At this point, the JS semantics guys might 
want to chime in -- it simplifies requirements on GC implementation, but I 
don't know how it changes program analysis (e.g., an escape analysis would 
simply be conservative there). Just as introducing forgeable references breaks 
encapsulated reasoning, this might also interact oddly with some useful 
characterizations of JS. Unfortunately, the semantically clean alternative, 
forcing a reachability check, isn't decidable.

- Leo



>  
> 
> - Leo
> 
> 
> 
> On Jul 3, 2010, at 12:00 PM, [email protected] wrote:
> 
>> Send es-discuss mailing list submissions to
>>      [email protected]
>> 
>> To subscribe or unsubscribe via the World Wide Web, visit
>>      https://mail.mozilla.org/listinfo/es-discuss
>> or, via email, send a message with subject or body 'help' to
>>      [email protected]
>> 
>> You can reach the person managing the list at
>>      [email protected]
>> 
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of es-discuss digest..."
>> Today's Topics:
>> 
>>   1. Re: We need to name "EphemeronTable" (was: Do we need an
>>      experimental    extension naming convention?) (Brendan Eich)
>>   2. Re: We need to name "EphemeronTable" (was: Do we need an
>>      experimental    extension naming convention?) (P T Withington)
>> 
>> From: Brendan Eich <[email protected]>
>> Date: July 2, 2010 10:01:26 PM PDT
>> To: Mark S. Miller <[email protected]>
>> Cc: "[email protected]" <[email protected]>, Erik Arvidsson 
>> <[email protected]>
>> Subject: Re: We need to name "EphemeronTable" (was: Do we need an 
>> experimental extension naming convention?)
>> 
>> 
>> On Jul 2, 2010, at 7:45 PM, Mark S. Miller wrote:
>> 
>>> I'm also in favour of a regular Map and Set. Also a dense List (i.e., what 
>>> we might have otherwise called an Array :(.) However, the history of oo 
>>> class libraries shows collection libraries to be a tarpit, so I'm unwilling 
>>> to take the lead on this issue. If someone else would like to, so long as 
>>> they keep it bloody simple (i.e., not like Java, Smalltalk, or STL), that'd 
>>> be great. Even the E collections 
>>> <http://erights.org/elang/collect/tables.html> 
>>> <http://erights.org/javadoc/org/erights/e/elib/tables/EMap.html>, where I 
>>> could make them as simple as I wished, got way too complicated -- more 
>>> complicated than I would find acceptable.
>>> 
>>> Great designers of extraordinarily simple expressive APIs, please step 
>>> forward!
>> 
>> Ideally TC39 should not standardize or design anything not already proven 
>> and popular (if not dominant) in the field. The problem is no one can make 
>> practicaly O(1) collections without Object.hashcode and Object.identity.
>> 
>> Say we add hashcode and identity. Then we'll have to wait a while, Could we 
>> bootstrap Set, Map, and WeakMap and call it enough? I think so.
>> 
>> "Dense List" could be added but implementations are optimizing for dense 
>> arrays already. I think this one is too close to Array to be worth it, but 
>> without a detailed design that's just my gut reaction. FWIW.
>> 
>> /be
>> 
>> 
>> 
>> From: P T Withington <[email protected]>
>> Date: July 3, 2010 4:47:50 AM PDT
>> To: Brendan Eich <[email protected]>
>> Cc: "Mark S. Miller" <[email protected]>, Erik Arvidsson 
>> <[email protected]>, "[email protected]" <[email protected]>
>> Subject: Re: We need to name "EphemeronTable" (was: Do we need an 
>> experimental extension naming convention?)
>> 
>> 
>> Coming late to the party:  'alias' might be intuitive (from it's dictionary 
>> definition and use in filesystems as a non-preserving way to give an 
>> alternate name).
>> 
>> On 2010-07-03, at 00:57, Brendan Eich wrote:
>> 
>>> On Jul 2, 2010, at 8:58 PM, David Herman wrote:
>>> 
>>>>> Cool. I'm warming to WeakMap as well. Do we have any objections to 
>>>>> WeakMap?
>>>> 
>>>> +1
>>>> 
>>>> I <3 WeakMap.
>>> 
>>> The Force is strong with WeakMap! ;-)
>>> 
>>> +1 or more
>>> 
>>> /be
>>> 
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>> 
>> 
>> 
>> 
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> 
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> 
> 
> 
> 
> -- 
>     Cheers,
>     --MarkM

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to