% Copyright 2009 The LaTeX Project
\documentclass{ltnews}
\PassOptionsToPackage{colorlinks}{hyperref}

\usepackage{metalogo,ragged2e}

\AtBeginDocument{
  \renewcommand{\LaTeXNews}{\LaTeX3~News}
  \RaggedRight
}

\usepackage{url}
\newcommand\TUG[1]{\textsc{tug}~#1}

\publicationmonth{June}
\publicationyear{2009}
\publicationissue{2}

\begin{document}
\maketitle

\section{\TeX~Live and the \textsf{expl3} code}

\TeX~Live 2009 is almost upon us, and the \LaTeX3 team have been
readying a new release of the experimental \LaTeX3 code for this.
Very dramatic changes have occurred since the
last public release of the code in \TeX~Live~2008; no backwards compatibility has been
maintained (as warned in the beginning of the documentation) but we
believe the changes made are all much for the better. Almost every
single part of \textsf{expl3} has been scrutinized, resulting in a far
more coherent code base.

The \textsf{expl3} code is now considered to be much more stable than
it was before; a comprehensive test suite has been written that helps
to ensure that we don't make any mistakes as we change things in the
future. In the process of writing the test
suite, many minor bugs were fixed; we recommend such test suites for
all similar developmental projects!
Some small underlying changes are still expected in the
\textsf{expl3} code, but major, disruptive, changes aren't planned.

\section{Planned updates}

Until now, the last update to \textsc{ctan} of the \textsf{expl3}
bundle was for \TeX~Live~2008. Now that work on the code is happening
on a semi-steady basis, we plan to keep updates rolling out to
\textsc{ctan} more frequently. This will allow anyone who wishes to
experiment with the new code to use the \TeX~Live or MiK\TeX\
updaters to install a recent version without having to `check out' the
\textsc{svn} repository and install the packages manually.

\section{New members}

We didn't say anything about it in the last status update, but Joseph
Wright and Will Robertson are now members of the \LaTeX\ Team. They
have been working fairly exclusively on the \textsf{expl3} code.

It's worth repeating that \LaTeXe\ is essentially frozen in order to
prevent any backwards compatibility problems. As desirable as it is
to benefit from the new features offered by new engines \XeTeX\ and
Lua\TeX, we cannot risk the stability of production servers running
older versions of \LaTeXe\ which will inevitably end up processing
documents written into the future.

\LaTeX3 will not be inheriting the same restraints, so stay tuned.

\newpage

\section{Some specifics}

Morten H\o gholm will be presenting the recent changes in much more detail at
\TUG{2009}. Here are some quick specifics for those interested. New code written
and broad changes made to the \textsf{expl3} modules:
\begin{description}
\item [More logical function names]
  Many function names that were hold-outs from the \TeX\ naming system
  have been changed to fit into the more logical scheme of \textsf{expl3}; e.g.,
  \verb|\def:Npn| and \verb|\let:NN| are now \verb|\cs_set:Npn| and
  \verb|\cs_set_eq:NN|.

\item [Defining functions and conditionals]
  Much thought was put into new ways to define
  functions and conditionals with a minimum of code.
  See \verb|\cs_set:Nn| and \verb|\prg_set_conditional:Nnn|.

\item [Smart comparisons]
  Comparisons can be made much more easily now, with familiar notation such as
  \verb|\intexpr_compare_p:n{ #1+3 != \l_tmpa_int }|.

\item [Data from variables] A new function argument specifier \texttt{V} has
  been added for extracting information from variables of different types,
  without needing to know the underlying variable structure. Some other
  tidy-ups on the argument specifiers offered, partially as a result of the
  addition of this new one.

\item [l3msg] New module to deal with communication between \LaTeX3 code
  and the user (info messages, warnings, and errors), including message
  filtering partially inspired by the \textsf{silence} package.
  \end{description}

\section{The next six months}

Having overhauled the \textsf{expl3} code, we now plan to perform an
analogous process with the foundations of the
\textsf{xpackages}. These are the higher-level packages that will
provide the basic needs such as control of the page layout and rich
document-level interaction with the user. As the groundwork for this
layer of the document processing matures, we will be able to start
building more packages for a \LaTeX3 kernel; these packages will also
be usable on top of \LaTeXe\ and serve as broadly customisable
templates for future document design.

As gaps in the functionality offered by \textsf{expl3} are found (in
some cases, we know that they exist already), the programming layer
will be extended to support our needs. In other cases, wrappers around
\TeX\ functions that can be more usefully handled at a higher level
will be written.

In terms of what we're planning to work on next, three \textsf{xpackage}s
will take the focus of our attention.
\begin{description}
\item [xbase]
  `\textsf{xbase}' is actually two packages: \textsf{xparse} and
  \textsf{template}. These contain code for, respectively, defining new
  document commands (such that a user would use; e.g., \verb|\section|,
  \verb|\makebox|, \dots) and for handling keyval lists for user input and
  document specification. \textsf{xparse} was presented at \TUG{1999}%
  \footnote{\url{http://www.latex-project.org/papers/tug99.pdf}}
  and Lars Hellstr\"om wrote some notes on \textsf{template} in 2000%
  \footnote{\url{http://www.latex-project.org/papers/template-notes.pdf}}.
  Functionality coverage for these packages is good but concepts need a good
  ``airing''. There are various approaches taken for keyval input, some more
  recent than the \textsf{template} code, so there are some alternatives to
  evaluate.
\item [galley2] Sophisticated handling for \mbox{constructing} paragraphs and
  other document elements. Morten spoke on this at \TUG{2008}%
  \footnote{\url{http://river-valley.tv/the-galley-module/}}.
  Design needs to be revisited after some stress testing.
\item [xor] This is the \LaTeX3 output routine for splitting the galley into
  page and sub-page sized chunks. Ideas and code need work to move to
  ``production ready'' status. Early developments with this package were
  published by Frank in 2000%
  \footnote{\url{http://www.latex-project.org/papers/xo-pfloat.pdf}}.
\end{description}

Expect to hear again from us at Christmas. If you'd like to discuss any
of these ideas, please join us on the \textsc{latex-l} mailing list%
\footnote{\url{http://www.latex-project.org/code.html}}.

\end{document}



