Saturday, March 28, 2009

NumPy 1.3 coming soon!

David Cournapeau just announced the first release candidate for NumPy 1.3. This release comes just over 6 months since the last minor release. It includes numerous bug-fixes, documentation improvements, improved Windows support, major code cleanups and refactoring, as well as several new features. NumPy 1.3 provides Python 2.6 compatibility on all supported platforms, an important first step in migrating to Python 3. This release also provides experimental Windows 64 bit support.

An important highlight of this release, is the addition of generalized universal functions. In NumPy, a universal function (or ufunc) is a wrapper that provides a common interface to mathematical functions, which operate on scalars and can be made to operate on ndarrays in an element-by-element fashion. NumPy provides a number of built-in ufuncs for mathematical operations, trigonometric functions, bit-twiddling, comparisons, etc. For example, add is a ufunc that wraps scalar addition to provide addition of ndarrays. Ufuncs support array broadcasting, type casting, as well as several other features. Generalized ufuncs extend this idea to functions on ndarrays. In other words, while ufuncs are limited to wrapping element-by-element functions, generalized ufuncs support ndarray-by-ndarray operations. There is similar functionality and terminology in PDL, the Perl vector library. There is all ready some documentation for this powerful new feature, but as always we need help improving it, which anyone can do by simply clicking here. In particular, a few examples would be very helpful.

Finally, as the 1.3 release manager, David focused a lot of attention on improving our release infrastructure (in addition to his numerous efforts with every aspect of the project). In particular, he made great progress in automating the release process. This effort should provide immediate pay off by reducing the time and effort needed to make future NumPy and (potentially) SciPy releases. In turn this will help increase the frequency with which we are able to get bug-fixes, improved documentation, speed optimizations, and new features out to the wider community.

No comments: