
\addcontentsline{toc}{chapter}{Changes for Version 3.5}
\section*{Changes in Version 3.5}
TAO is now included in the PETSc distribution and the PETSc
repository, thus it versions will always match the PETSc version. The
TaoSolver object is now simply Tao and there is no TaoInitialize() or
TaoFinalize(). Numerious changes have been made to make the source
code more PETSc-like.  All future changes will be listed in the PETSc changes documentation.

\addcontentsline{toc}{chapter}{Changes for Version 2.0}
\section*{Changes in Version 2.0}

TAO version numbers will now adhere to the new PETSc standard of 
Major-Minor-Patch. Any patch-level changes will have an attempt to keep the 
applicatin programming interface (API) untouched, but in any case backward 
compatibility with previous version of the minor version will be 
maintained.

Many new features and interface changes were introduced in TAO version 2.0 (and continue to be used in version 2.2.0).
TAO applications created for previous versions will need to be updated to 
work with the new version.  We apologize for any inconvenience this situation
may cause; these changes were needed to keep the interface
clean, 
clear, and easy to use. Some of the most important changes are highlighted 
below.

\vspace{7mm}
\noindent \textbf{Elimination of the TaoApplication Object}. The largest change to the TAO programming interface was the elimination of the
TaoApplication data structure. In previous versions of TAO, this structure was 
created by the application programmer for application-specific data and 
routines.  In order to more closely follow PETSc design principles, this 
information is now directly attached to a Tao object instead.  See 
Figure~\ref{fig:tao_commands} for a listing of what the most common TAO 
routines now look like without the TaoApplication object.

\vspace{7mm}
\noindent \textbf{New Algorithms}. TAO has a new algorithm for solving derivative-free nonlinear least
squares
problems, POUNDerS, that can efficiently solve parameter optimization problems 
when no derivatives are available and function evaluations are expensive. 
See 
Section~\ref{sec:pounders} for more information on the details of the 
algorithm and Section~\ref{sec:leastsquares} for how to use it.
TAO now also provides a new algorithm for the solution of optimization
problems with partial differential equation (PDE) constraints based on a
linearly constrained augmented Lagrangian (LCL) method.  More 
information on PDE-constrained optimization and LCL can be found 
in Section~\ref{sec:lcl}.


\vspace{7mm}
\noindent \textbf{TaoLineSearch Object}. TAO has promoted the line search to a full object.  Any of the available 
TAO line search algorithms (Armijo, Mor\'e-Thuente, GPCG, and unit) can now 
be selected regardless of the overlying TAO algorithm.  Users can also
create new line search algorithms that may be more suitable for their
applications.  More information is available in 
Section~\ref{sec:TaoLineSearch}.

\vspace{7mm}
\noindent \textbf{Better Adherence to PETSc Style}. TAO now features a tighter association with PETSc standards and practices.  All 
TAO constructs now follow PETSc conventions and are written in C.  There is 
no longer a separate abstract class for vectors, matrices, and linear 
solvers. TAO now uses these PETSc objects directly.  We believe these 
changes make TAO applications much easier to create and maintain for 
users already familiar with PETSc programming. These changes also allow 
TAO to relax some of the previously imposed requirements on the PETSc 
configuration.  TAO now works with PETSc configured with single-precision 
and quad-precision arithmetic when using GNU compilers and no longer 
requires a C++ compiler.  However, TAO is not compatible with PETSc 
installations using complex data types.


