
\chapter{What will be changed}

\section{Memory management}

If I have the courage, I might one day write a garbage collector
for {\TeXmacs}.

\section{Graphical interface}

We wish to move towards {\sc Guile-Gtk}.

\section{Encodings and fonts}

\begin{itemize}
  \item Some changes have still to be made in the way
        font encodings are handled. This should make it easier
        to maintain fonts with characters from several physical fonts,
        virtual fonts, special characters, etc.
  \item Currently, the current logical font is determined from
        a fixed set of environment variables only.
        The current typesetting font should rather be a tree
        (instead of a string), which is evaluated
        (so that environment variables are replaced) and
        then passed to ¤find_font(display,tree)¤.
        The current font can then be a joined font and
        future fonts might depend on user environment variables
        (i.e. colored fonts, using more than one color).
\end{itemize}

\section{Speed}

In order to speed up the program, we already made the major change that
not the whole document is typeset again when making local changes.
However, several other main optimizations should still be made:
\begin{itemize}
  \item Improving the speed of loading (and saving) files.
        This will accelerate loading fonts.
  \item Encode the standard operators and system environment variables;
        this will globally accelerate all parts of the program.
  \item The way system style environment variables are handled for
        typesetting concats and paragraphs is far from optimal.
        Some serious rethinking should be undertaken here.
  \item The computation of the current context at a given cursor position
        takes a lot of time, especially the computation of the environment.
        This slows down the cursor movement for complex texts.
        using TeX fonts (it scrolls much quicklier when using X fonts).
\end{itemize}

\section{Miscellaneous changes}

The following ad hoc implementations should be changed or made more robust:
\begin{itemize}
  \item Cursor movement along lines of a paragraph (when moving to
        the right at the end of a line, the cursor should jump to
        the start of the next line).
  \item Widths of fraction bar, square root upper line and negations.
  \item Boxes should not have origins; its children should
        have positions instead.
  \item Clear separation between files which depend on the system
        (i.e. ¤gencc¤, ¤fast_alloc.gen.cc¤, ¤file.gen.h¤,
        ¤dir.gen.h¤) in some directory and the others.
\end{itemize}
