% 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}