[Python-Dev] x64 and the testsuite

Kristján Valur Jónsson kristjan at ccpgames.com
Thu May 3 19:21:18 CEST 2007

> -----Original Message-----
> From: python-dev-bounces+kristjan=ccpgames.com at python.org
> [mailto:python-dev-bounces+kristjan=ccpgames.com at python.org] On Behalf
> Of Thomas Heller
> Sent: Thursday, May 03, 2007 17:04
> To: python-dev at python.org
> Subject: Re: [Python-Dev] x64 and the testsuite
> Kristján Valur Jónsson schrieb:
> > Hello again.
> > A lot of overflow tests fail in the testsuite, by expecting overflow
> using sys.maxint.
> > for example this line, 196, in test_index.py:
> self.assertEqual(x[self.neg:self.pos], (-1, maxint))
> On my (virtual) win64-machine, which has less than 1GB, quite some
> tests fail with MemoryError.
> The tests pass on 64-bit linux machines, though.
I haven't got memory error yet.  Many tests allocate some 4GB, and the OS happily
enters paging mode.  They then succeed eventually.
As for linux, many of the range overflow tests rely on sys.maxint.  Presumably,
this is 1<<63 on those machines?

If that is the case, I have two suggestions:
a) Propagate the Windows idiom of sizeof(size_t) != sizeof(long) by keeping
some sys.maxsize for list length, indices, etc.
b) Elevate int to 64 bits on windows too!
B is probably a huge change.  Not only change PyIntObject but probably create some Py_int and so on.
Ok, b) is not a real suggestion, then.

> > than the "64 bit" in sys.version test?  Should we have something like
> sys.bits?
> You can use 'struct.calcsize("P")' to find out the pointer size.
Hm, I could do that I suppose.
maxsize = (1L<<(struct.calcsize("P")*8-1))-1
minsize = maxsize-1

And use those in the testsuite...

More information about the Python-Dev mailing list