<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        Hi Jakob,<div><br></div><div>collections use #hash, which can be different for different objects. So rehashing is important after #becomeForward: in any case.</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 15.04.2020 13:18:59 schrieb Jakob Reschke <forums.jakob@resfarm.de>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="auto">Hi,<div dir="auto"><br></div><div dir="auto">The reason I read somewhere for the copyHash true default is that one would have to rehash collections that contain the involved objects if the hash did change.</div><div dir="auto"><br></div><div dir="auto">Anything to be done in this regard of you change the default?</div><div dir="auto"><br></div><div dir="auto">Kind regards,</div><div dir="auto">Jakob </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> schrieb am Mi., 15. Apr. 2020, 11:56:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div id="m_1318783677778397372__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        Hi all!<div><br></div><div>Thank you all for the clarification. Yes, please let's not copy the identity hash by default.</div><div><br></div><div>+1 on changing the default behind #becomeForward:</div><div><br></div><div>Best,</div><div>Marcel</div><div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:#aaaaaa;margin-top:10px">Am 15.04.2020 09:59:09 schrieb Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" target="_blank" rel="noreferrer">leves@caesar.elte.hu</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">Hi Chris,
<br>
<br>On Tue, 14 Apr 2020, Chris Muller wrote:
<br>
<br>> Hi Eliot,
<br>>  
<br>>
<br>>       Right.  A couple of questions are
<br>> 1. what the f**k are become: becomeForward: becomeForward:copyHash: et al doing in ProtoObject?  (IMO, they should be in Object and have no business being in ProtoObject whatsoever).
<br>> 
<br>> 
<br>> For Proxy's.  They don't typically inherit from Object, but must be able to become their normal object upon receiving a message it #doesNotUnderstand:.  Maybe you're implying those programs should be using the mirror
<br>> primitives, but those weren't always available, so hopefully that at least answers your question.
<br>
<br>The primitives are defined on arrays. A proxy can and should always do
<br>
<br>      { self } elementsForwardIdentityTo: { proxiedObject }
<br>
<br>So, that's not a reason to have those methods implemented by ProtoObject.
<br>
<br>>
<br>>       2. whether becomeForward: should do copyHash: true by default.  This seems wrong to me, and implementing is as copyHash: false makes more sense.  But I'm wondering if there are important use cases.
<br>> 
<br>> 
<br>> Yes, changing the identityHash without changing the identity is basically "wrong", and even dangerous if it's a system Symbol used as keys in IdentityDictionary's like Environments, etc.
<br>> 
<br>>    Object new becomeForward: #size   "do it = lock up your image"
<br>
<br>The VM won't let you overwrite the Symbol's identityHash in current 
<br>Trunk, you'll get an error instead.
<br>
<br>
<br>Levente
<br>
<br>> 
<br>>  - Chris
<br>> 
<br>><br></div></blockquote>
                                        </div></div><br>
</blockquote></div>
</div></blockquote>
                                        </div></body>