I found the cause of this bug: in
numpy/core/include/numpy/ndarraytypes.h, in the enum NPY_TYPES, the
value NPY_CHAR has changed between NumPy 1.5 and 1.6 (more precisely, it
was increased by 3, because new types were introduced).

python-scientific uses this enum value at several places (under its
alias PyArray_CHAR). Hence the bug. I verified that replacing
PyArray_CHAR by (PyArray_CHAR+3) in python-scientific and then compiling
against NumPy 1.5 creates a package which is ABI compatible with NumPy
1.6.

This is clearly an ABI breakage in NumPy. I don't see how to fix it
without bumping the ABI number. Since NPY_CHAR must apparently come
after NPY_NTYPES in the enum (the latter counts the number of types), it
seems difficult to patch NumPy 1.6 so that NPY_CHAR keeps the same value
as in 1.5.

What remains unclear to me is whether NPY_CHAR is really meant to be
part of the external API. It looks like the NumPy maintainers are
well-aware of ABI compatibility issues in this very enum (see the
comments in the 1.6 source file), so maybe the change is on purpose. In
that latter case, it is python-scientific which is buggy. That remains
to be clarified.

-- 
 .''`.    Sébastien Villemot
: :' :    Debian Developer
`. `'     http://www.dynare.org/sebastien
  `-      GPG Key: 4096R/381A7594

Attachment: pgpf7fJYRkcFt.pgp
Description: PGP signature

_______________________________________________
Python-modules-team mailing list
Python-modules-team@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/python-modules-team

Reply via email to