[Numpy-discussion] NumPy beta release plan
oliphant.travis at ieee.org
Sat Jul 8 02:17:14 CDT 2006
Some of you may have noticed that things have been changing rapidly in
the NumPy world (if you were out of the office in June then all the
activity may seem overwhelming).
All of this activity is based on the fact that the upcoming beta release
will mean a feature freeze for NumPy.
As a review:
The biggest changes over the past 3 months have been
1) Capitalized-type-names (Float32, Complex64, Int8, etc) are now
only available in the numpy.oldnumeric namespace (this is the
namespace that convertcode.py replaces for Numeric). We are trying
to wean you off character codes as much as possible. They are still
there, of course but should only be used in special cases not as
a general rule.
2) Un-specified data-types now default to floating point.
To help with code you have that relies on integer data-types you
can either use functions from numpy.oldnumeric where the functions
are still defined with the integer-default data-types or use
functions in numpy/lib/convdtype to replace type-less versions of
ones, zeros, empty with empty(..., dtype=int).
3) C-API names have prefix PyArray_ (like always), NPY_ or npy_.
The NPY_ and npy_ prefixes are new and were done to remove the
likelihood of name collisions when NumPy is used with another
library. The old (and un-prefixed) names are accessible by
importing numpy/noprefix.h instead of numpy/arrayobject.h
It is fine to use noprefix.h in-place of arrayobject.h if you
expect to have no naming conflicts. This is what NumPy itself does.
4) The flag combinations with _FLAGS in the name have the _FLAGS
removed (but are prefixed with NPY_). Again the old names are
still available in numpy/noprefix.h
5) The Numarray C-API is now available as numpy/libnumarray.h as
long as you use the directory returned from numpy.get_numarray_include()
as an argument to -I in the compile command.
More minor changes:
1) ctypes attribute added for ease of working with ctypes data
2) T attribute added as a convenience for .transpose()
Personally, I don't want to make any more changes so that we can make a
1.0 beta release that will freeze the API. Because of my guarantee to
keep SVN versions of NumPy/SciPy/matplotlib working, changes probably
cause more headache for me than anyone else.
Unless there is a serious issue pointed out, the only thing that should
be changed at this point are bug-fixes, documentation strings, and added
tests. Once 1.0b1 is released nothing but those things can be added.
I'd like July to be a much more calm month. We should get the 1.0b1 out
in the next couple of weeks. That way perhaps 1.0b2 can be out by the
SciPy conference. I can see the beta release period taking several
months with only bug-fixes/docstring/testing improvements happening over
So, take this message as a warning for the up-coming feature freeze on
NumPy and an invitation to contribute docstrings and unit-tests.
I hope the rapid pace of June development did not scare too many
people. Please voice your concerns if you have them.
More information about the Numpy-discussion