[squeak-dev] #= ==> #hash issues

Chris Cunningham cunningham.cb at gmail.com
Thu Nov 15 21:53:39 UTC 2018


Nice.  It seems like we have consensus on what to change.

I'll push these changes (with the tests) to trunk soon.

The fix I have for #hash was exactly what Elliot suggested.
I'll make sure to include the rehash as well (thanks for the code snippit
Bert!)
If no one objects strenuously, I'll also include Eliot's slight rewrite of
#= has well - it is marginally cleaner and equally fast, so now is a
reasonable time to include it.

I'll delay working on bug #3380 for now - to fix this, we'd have to also
add in a check on class in #= to make sure we aren't comparing an interval
to an array.  Unless someone has been bitten by this recently, I'd rather
wait.

-cbc


On Thu, Nov 15, 2018 at 1:32 PM Chris Muller <asqueaker at gmail.com> wrote:

> > Isn't this extremely simple to fix?
> >
> > #= is implemented in terms of start, step, and last.
> >
> > So why not implement #hash as
> >
> > ^(start hash bitXor: step hash) bitXor: self last hash
> >
> > Then in the postscript do a
> >
> > HashedCollection rehashAll
> >
> > and that should be it, right?
> >
> > I did a quick check using
> >
> > Dictionary allInstances select: [ :dict | dict keys anySatisfy:
> #isInterval]
> >
> > and the system seems fine after that.
>
> You forgot about the universe that lies beyond the fringes of the
> image.  There be persistent data files out there.  And users.
> Possibly with systems that rely on Interval>>#hash.
>
> But since most applications don't use non-Integer based Intervals
> (since Interval doesn't really support them, by design, I guess),
> there's no reason whatsoever to decimate the universe when Eliot's
> simply fixes the corner case that no one is using anyway.
>
> +1 to Eliots suggestion to fix Interval>>#hash.
>
>  - Chris
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20181115/19ffce38/attachment.html>


More information about the Squeak-dev mailing list