# Sage 3.2.2 Release Tour

Sage 3.2.2 was released on December 30, 2008. For the official, comprehensive release notes, see sage-3.2.2.txt.

## Algebra

• Using Python's (version 2.5) pickling protocols (Burcin Erocal) -- Changed sage.structure.element.Element to use Python's pickling protocol via __getstate__() and __setstate__(). The previous pickling implementation in sage.structure.element.make_element is retained for backward compatibility.

• Method injvar() is deprecated (John Palmieri) -- The method injvar() in sage/structure/category_object.pyx is now deprecated. One should instead use inject_variables() in order to make variable names available for interactive use.

## Basic Arithmetic

• Fraction fields (Burcin Erocal) -- Updated the sage.rings.fraction_field.FractionField_generic class to the new coercion model, and Cythonize the sage.rings.fraction_field_element.FractionFieldElement class. Homomorphisms of fraction fields now work, and the random_element() method of fraction fields returns sensible results.

## Build

• Controlling the number of threads used for parallel testing (Dan Drake) -- Added the NUM_THREADS variable to the file SAGE_ROOT/makefile to make it easier to control the number of threads used during parallel testing. Previously the number of threads was hard coded into SAGE_ROOT/makefile at various places, which made the file rather difficult to maintain.

## Calculus

• Derivative of a vector and a matrix (Jason Grout) -- Given a vector or matrix of differentiable expressions, the entries in that vector or matrix can be differentiated. This is handy for working with differential equations when we want to do differentiation and integration of matrices and vectors, with the exact same answer as obtained by using the apply_map method.

• Cleaned up implementation of piecewise-defined functions (Mike Hansen, Paul Butler) -- Some updating of the class sage/functions/piecewise.py. This includes not explicitly using Maxima where not necessary in order to take advantage of pynac in the future. When differentiating piecewise functions where some piece uses multiplication, the expression that is passed to Maxima is properly formatted for Maxima to work with that expression.

## Coercion

• A factory and pickling framework (Robert Bradshaw) -- Uniqueness of parents makes Sage operate much more smoothly. This leads to an enormous amount of nearly identical caching code scattered throughout the library. This factory handles all the caching and also provides a good pickling mechanism.

## Words

• A library for studying and manipulating words (Arnaud Bergeron, Amy Glen, Sebastien Labbe, Franco Saliola) -- This adds lots of functionality for combinatorics on words. The new features are highlighted in this Sage worksheet (PDF version).

ReleaseTours/sage-3.2.2 (last edited 2009-12-26 14:47:06 by Minh Nguyen)