ANN: numarray-0.9

Todd Miller jmiller@stsci.edu
12 Mar 2004 16:36:54 -0500


Release Notes for numarray-0.9

Numarray is an array processing package designed to efficiently
manipulate large multi-dimensional arrays.  Numarray is modelled after
Numeric and features c-code generated from python template scripts,
the capacity to operate directly on arrays in files, and improved type
promotions.

I. ENHANCEMENTS

1. Support for "from __future__ import division"

True division has been implemented for numarray.  This means that
modules that wish to use true division can also use numarray and
numarray division will work as follows:

a. dividing any two integer arrays using "/" results in a Float32
array.

b. dividing two floating point arrays using "//" results in truncation
of the result as in: a // b == floor(a/b).

2. C-coded array slicing

Array slicing has been re-implemented in C-code as part of the
_ndarray module.  This means faster slicing.  Thanks go to Warren
Hack, Chris Hanley, and Ivo Busko for helping debug a huge refcount
error.

3. Decreased Ufunc overhead

Ufunc execution speed has clawed and scratched its way back to where
it was around numarray-0.5.  Improvements here included optimization
of the ufunc caching, smarter thread handling, and smarter support for
subclasses.  The ufunc caching is based on a simple 20 element table
for each ufunc.

4. Faster array creation from C

Code which creates NumArrays from C (including numarray itself) can
now do so faster because the API functions have been modified to do
the array __init__ inline rather than through an expensive Python
callback.

II. BUGS FIXED / CLOSED

See
http://sourceforge.net/tracker/?atid=450446&group_id=1369&func=browse
for more details.

913781 Another memory leak in example in Chapter 12
908399 Numarray 0.7: "del a[1]" dumps core
899259 astype Int16 copy4bytes: access beyond buffer
895801 Buffer overflow in sum w/ 0-sized array
894810 MemoryError When Creating Large Arrays
890703 getnan() and getinf() failure
883124 and and operator.and respond differently
865410 Usage of __dict__
854480 Slice assignment of float to integer
839367 Overlapping slice assign fails
828941 Numarray: determinant returns scalar or array
820122 Linearalgebra2.determinant problem
817343 Sub-classing of NumArray inhibited by complex values
793336 crash in _sort.pyd
772548 Reference counting errors
683957 Adding certain arrays fails in Numarray

III. CAUTIONS

1. numarray extension writers should note that the documented use of
PyArray_INCREF and PyArray_XDECREF (in numarray) has been found to be
incompatible with Numeric and has therefore been deprecated.  numarray
wrapper functions using PyArray_INCREF and PyArray_XDECREF should
switch to ordinary Py_INCREF and Py_XDECREF.

-- 
Todd Miller <jmiller@stsci.edu>