Welcome to the Monastery | |
PerlMonks |
Re^4: The 10**21 Problem (Part 4)by eyepopslikeamosquito (Archbishop) |
on May 20, 2014 at 13:12 UTC ( [id://1086782]=note: print w/replies, xml ) | Need Help?? |
Yes, I believe you are correct. From stringobject.c: we can see that it is not whether the platform itself is 64-bit that matters, but whether the long type used by the C compiler that Python was built with is 64-bit. For Python built with a 32-bit long my solution should work, for a 64-bit long it will not. On 64-bit architectures, Windows C compilers tend to use the LLP64 programming model (32-bit long), while most others tend to use the LP64 model (64-bit long). From this stack overflow question: The true "war" was for sizeof(long), where Microsoft decided for sizeof(long) == 4 (LLP64) while nearly everyone else decided for sizeof(long) == 8 (LP64). Note that a programming model is a choice made on a per-compiler basis, and several can coexist on the same OS. However, the programming model chosen as the primary model for the OS API typically dominates. Hmmm, I see from this later stringobject.c that _Py_HashSecret_* has been added, presumably to protect against DoS attacks that exploit hash collisions in Python dictionaries.
See also:
In Section
Meditations
|
|