\chapter{\ufc{} versions}
\label{app:versions}
\index{versions}

To keep things simple, the UFC classes do not have any run time
version control. To upgrade to a new UFC version, all libraries and
applications must therefore be recompiled with the new header file
\texttt{ufc.h}.

\section{Version 1.0}

Initial release.

\section{Version 1.1}

The following six functions have been added to the interface:
\begin{itemize}
\item \texttt{ufc::finite\_element::evaluate\_dofs}
\item \texttt{ufc::finite\_element::evaluate\_basis\_all}
\item \texttt{ufc::finite\_element::evaluate\_basis\_derivatives\_all}
\item \texttt{ufc::dof\_map::geometric\_dimension}
\item \texttt{ufc::dof\_map::num\_entity\_dofs}
\item \texttt{ufc::dof\_map::tabulate\_entity\_dofs}
\end{itemize}

An implementation of UFC version 1.0 can be recompiled with the header
file from UFC version 1.1 without changes to the source code. The new
functions introduced in 1.1 will then simply throw an informative
exception. (The new functions are virtual but not pure virtual.)

\section{Version 1.2}

The following functions have been modified:
\begin{itemize}
\item \texttt{ufc::dof\_map::local\_dimension}
\end{itemize}
The following functions have been added to the interface:
\begin{itemize}
\item \texttt{ufc::dof\_map::max\_local\_dimension}
\end{itemize}

\section{Version 1.4}

The behavior of the functions
\texttt{ufc::form::create\_cell\_integral},
\texttt{ufc::form::create\_exterior\_facet\_integral} and
\texttt{ufc::form::create\_interior\_facet\_integral} were changed to
return a zero pointer when there is no integral on the given domain.

\section{Version 2.0}

The following names have been changed:
\begin{itemize}
\item
  \texttt{ufc::dof\_map} $\rightarrow$ \texttt{ufc::dofmap}
\item
  \texttt{ufc::form::num\_cell\_integrals} $\rightarrow$ \texttt{ufc::form::num\_cell\_domains}
\item
  \texttt{ufc::form::num\_exterior\_facet\_integrals} $\rightarrow$ \texttt{ufc::form::num\_exterior\_facet\_domains}
\item
  \texttt{ufc::form::num\_interior\_facet\_integrals} $\rightarrow$ \texttt{ufc::form::num\_interior\_facet\_domains}
\end{itemize}

The following new data members have been added:
\begin{itemize}
\item
  \texttt{ufc::cell:index}
\item
  \texttt{ufc::cell:local\_facet}
\item
  \texttt{ufc::cell:mesh\_identifier}
\end{itemize}

The following new functions have been added:
\begin{itemize}
\item
  \texttt{ufc::finite\_element::topological\_dimension}
\item
  \texttt{ufc::finite\_element::geometric\_dimension}
\item
  \texttt{ufc::finite\_element::create}
\item
  \texttt{ufc::dofmap::topological\_dimension}
\item
  \texttt{ufc::dofmap::create}
\item
  \texttt{ufc::cell\_integral::tabulate\_tensor} (quadrature version)
\item
  \texttt{ufc::exterior\_facet\_integral::tabulate\_tensor} (quadrature version)
\item
  \texttt{ufc::interior\_integral::tabulate\_tensor} (quadrature version)
\end{itemize}
