[Numpy-discussion] C-API change for 1.2

Jon Wright wright@esrf...
Sat Aug 16 16:02:56 CDT 2008


Robert Kern wrote:
>
> FWIW, neither PIL nor PyOpenGL have C code which uses numpy arrays, so
> they are entirely unaffected.

OK, so here are some projects which might notice a 1.2 installation, in 
as much as they turn up on a google code search for:

  #include "numpy/arrayobject.h" -scipy -enthought

... so one might imagine their programs will suddenly stop working. 
Based on the first 40 of >200 hits, these projects seem to offer binary 
windows downloads and have a C source which includes numpy/arrayobject.h :

PyQwt3d
ScientificPython
RPy
PyTables
pygsl
VPython
bayes-blocks http://forge.pascal-network.org/projects/bblocks/
fdopython http://fdo.osgeo.org

For these ones I only found source, so they'd be daft to complain about 
a program that previously worked just fine has stopped working:

neuron (www.neuron.yale.edu)
pysl    - bridge between python and S-lang
BGL - Biggles Graphics Library
www.eos.ubc.ca/research/clouds/software.html
astronomyworks.googlecode.com
pyrap.google.com
pyroms.googlecode.com
pyamg.googlecode.com
mdanalysis.googlecode.com
pythoncall - python to matlab interface
code.astraw.com/projects/motmot

(It is impressive that there are so many users out there, and it turns 
out that this is a great way to find interesting code.)

Even if there turn out to be a lot of duplicates in the >200 hits, 
already most of those projects have notices saying things like "be sure 
to get numpy, not Numeric or numarray". Do you want all of them to be 
delivering a matrix of binaries for different python versions multiplied 
by numpy <1.1.x versus >1.2.x ? What happens when someone wants to use 
*two* modules at the time, but one is distributing 1.1 binaries and the 
other has 1.2? The main reason I changed to numpy was that you stopped 
doing the Numeric binaries for python2.5. There was no way to distribute 
my own code for 2.5 without shipping Numeric too, which I didn't want to 
do, given that you were trying to get everyone to switch.

What is the cool new feature that 1.2 has gained which is making all 
this worthwhile? Are you really 100% certain you need that new feature 
enough to make all those strangers need to do all that work? Can you 
give a concrete example of something which is gained by:

> "The hasobject member of the PyArray_Descr structure should be renamed to "flags" and converted to a 32-bit integer."

Try to look 12 months into the future and ask yourselves if it was 
really a good idea to break the ABI.

Jon


More information about the Numpy-discussion mailing list