[Python-3000] long/int unification
Travis Oliphant
oliphant.travis at ieee.org
Wed Sep 6 00:17:49 CEST 2006
martin at v.loewis.de wrote:
> Here is a quick status of the int_unification branch,
> summarizing what I did at the Google sprint in NYC.
>
> - the int type has been dropped; the builtins int and long
> now both refer to long type
> - all PyInt_* API is forwarded to the PyLong_* API. Little
> changes to the C code are necessary; the most common offender
> is PyInt_AS_LONG((PyIntObject*)v) since I completely removed
> PyIntObject.
> - Much of the test suite passes, although it still has a number
> of bugs.
> - There are timing tests for allocation and for addition.
> On allocation, the current implementation is about a factor
> of 2 slower; the integer addition is about 1.5 times slower;
> the initial slowdowns was by a factor of 3. The pystones
> dropped about 10% (pybench fails to run on p3yk).
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?
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?
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
types).
-Travis
More information about the Python-3000
mailing list