[Python-3000] long/int unification
Guido van Rossum
guido at python.org
Wed Sep 6 01:05:22 CEST 2006
On 9/5/06, Travis Oliphant <oliphant.travis at ieee.org> wrote:
> What impact is this long/int unification going to have on C-based
> sub-types of the old int-type? Will you be able to sub-class the
> integer-type in C without carrying around all the extra backage of the
> Python long?
This seems unlikely given that the PyInt *type* will go away (though
the PyInt *API* methods may well continue to exist). You can subclass
the PyLong type just as easily. What baggage are you thinking of?
> NumPy has a scalar-type that inherits from the current int-type which
> allows it to participate in many Python optimizations. Will the ability
> to do this disappear?
What kind of optimizations are you thinking of?
If you're thinking of the current special-casing for e.g. list[int] in
ceval.c, that code will likely disappear (although something
equivalent will eventually be added).
See my message about premature optimization in the Py3k from about 10 days ago.
> I'm just wondering about the C-side view of the int/long unification. I
> can see benefit to the notion of integer unification, but wonder if
> strictly throwing out the small integer type on the C-level is actually
> going too far. In NumPy, we have 10 different integer data-types
> corresponding to what can be contained in an array. This direction was
> chosen after years of frustration of trying to fit a square peg (the
> item from the NumPy array) into a square hole (the limited Python scalar
But now that we have __index__, of course, there's less reason to
subclass PyInt in the first place -- you can write your own 32-bit
integer *without* inheriting from PyInt or PyLong, and it should be
usable perfectly whenever an integer is expected. Id rather make sure
*this* property is provided without compromise than attempting to keep
random older optimizations alive for nostalgia's sake.
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000