Hi,

I noticed that sometimes the Travis CI buildbot succeeds, and Stefan's
buildbot fails on the same code.
I also understand that sometimes the 32bit and 64bit Python versions
behave differently in tests
and sometimes also major Python versions like 3.2 vs 2.7, also I think
2.4 and 2.5 (or maybe it was 2.3 and 2.4).

All these are caused by the different behavior of the hash() function.
In particular, 32bit and 64bit
and also sometimes Python versions have different hash implementation.
Also in SymPy,
sometimes we just store instances in a dictionary, but instances have
essentially random hash
(depending on where they sit in the memory, right?).

So rather than trying to make the hash() uniform, we need to make sure
that SymPy tests pass
with any hash() implementation. I think the way to do it is to use the
new "-R" option (http://bugs.python.org/issue13703) and specify
the PYTHONHASHSEED env variable. We will use let's say 3 or 4
different tests with different (but definite) value.
Besides that, we should also run with "-R" and keep the seed random
(to help discover seeds, that break sympy),
but we need to be able to print the seed, so that we can add it to the
test suite. My hope is that by having
3 or 4 different seeds will catch pretty much all such bugs in sympy
(if things behave randomly,
it shouldn't even matter what seeds we use, as long as we use 3 or 4
different seeds). And we can just use one platform
for testing. This should take care of the hash() differences for good hopefully.

Besides the hash, is there any other difference between platforms?

Ondrej

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to