LATEX3 News
Issue 6, June 2011

A key aim of releasing ‘stable’ LATEX3 material to
CTAN is to allow users to benefit from new ideas now,and also to raise the profile of usable LATEX3 ideas.
This is clearly being successful, with xparse being ofparticular utility to end users. This increase in interest
has been particularly notable on the new TeX.SX Q&Asite.

The LATEX3 Team expands
Raising interest in LATEX3 developments has inevitably
led to feedback on cases where the code base has required attention. It has also attracted new programmers to using LATEX3 ideas, some more than others!
Bruno Le Floch has over the past few months mademany useful contributions to LATEX3, and we are very
pleased that he has recently joined the LATEX3 Project.
Bruno has taken a particular interest in improving
the performance and reliability of the expl3 language.
This has already resulted in new implementations forthe prop and seq data types. At the same time, hehas identified and fixed several edge-case issues in core
expl3 macros.

The ‘Big Bang’In parallel to Bruno’s improvements, Joseph Wright initiated a series of ‘Big Bang’ improvements to LATEX3.
The aim of the Big Bang was to address a number oflong-standing issues with the LATEX3 code base. Development has taken place over many years, with thestatus of some of the resulting code being less thanclear, even to members of The LATEX3 Project! At thesame time, different conventions had been applied todifferent parts of the code, which made reading someof the code rather ‘interesting’. A key part of the Big
Bang has been to address these issues, cleaning up theexisting code and ensuring that the status of each partis clear.
The arrangement of LATEX3 code is now the same inthe development repository and on CTAN, and splits
the code into three parts.
l3kernel The core of LATEX3, code which is expected tobe used in a LATEX3 kernel in more or less the current
form. Currently, this part is made up of the LATEX3
programming layer, expl3.
l3packages LATEX 2ε packages making use of LATEX3
concepts and with stable interfaces. The xparse andxtemplate packages are the core of this area. While
many of the ideas explored here may eventually appear in a LATEX3 kernel, the interfaces here are tied toLATEX 2ε .
l3experimental LATEX 2ε packages which explore moreexperimental LATEX3 ideas, and which may see interface changes as development continues. Over time, weexpect code to move from this area to either l3kernel or
l3packages, as appropriate.
In addition to these release areas, the development
code also features a l3trial section for exploring codeideas. Code in l3trial may be used to improve or replace
other parts of LATEX3, or may simply be dropped!
As well as these improvements to the code usedin LATEX3, much of the documentation for expl3 hasbeen made more precise as part of the Big Bang. Thismeans that source3.pdf is now rather longer than it
was previously, but also should mean that many of theinaccuracies in earlier versions have been removed. Of
course, we are very pleased to receive suggestions forfurther improvement.

LATEX3 on GitHub
The core development repository for LATEX3 is held in
an SVN repository, which is publicly viewable via theProject website. However, this interface misses out onsome of the ‘bells and whistles’ of newer code-hostingsites such as GitHub and BitBucket. We have therefore established a mirror of the master repository on
GitHub1 . This is kept in synchronisation with the main
SVN repository by Will Robertson (or at least by hislaptop!).
The GitHub mirror offers several useful features forpeople who wish to follow the LATEX3 code changes.
GitHub offers facilities such as highlighted differences
and notification of changes. It also makes it possible
for non-Team members to submit patches for LATEX3 as‘pull requests’ on GitHub.
As well as offering a convenient interface to theLATEX3 code, the GitHub site also includes an issue
database2 . Given the very active nature of LATEX3
development, and the transitory nature of many of
the issues, this provides a better approach to tracking
issues than the main LATEX bug database3 . Develop1 http://github.com/latex3/svn-mirror
2 http://github.com/latex3/svn-mirror/issues
3 http://www.latex-project.org/bugs.html

LATEX3 News, and the LATEX software, are brought to you by the LATEX3 Project Team; Copyright 2011, all rights reserved.

ers and users are therefore asked to report any issues
with LATEX3 code via the GitHub database, rather
than on the main Project homepage. Discussion on theLaTeX-L mailing list is also encouraged.

Next steps
The ‘Big Bang’ involves making a number of changes
to expl3 function names, and is likely to break at least
some third-party code. As a result, the updates will
not appear on the TEX Live 2011 DVD release, butwill instead be added to TEX Live once regular updates
restart (probably August).
Bruno is working on a significant overhaul of thel3fp floating-point unit for LATEX3. He has developed anapproach which allows expandable parsing of floatingpoint expressions, which will eventually allow syntax
such as\fp_parse:n { 3 * 4 ( ln(5) + 1 ) }This will result in some changes in the interface forfloating-point numbers, but we feel that the long-term
benefit is worth a small amount of recoding in otherareas.
Joseph has completed documentation of the xgalley
module, and this is currently being discussed. Joseph
is hoping to move on to implement other more visible
ideas based on the xtemplate concept over the next few
months.