The second (and final) LaTeX prerelease for 2020-02-02 is available for testing
A few days ago we submitted a new LaTeX development format to CTAN and by now it should be available to all users using MikTeX or TeX Live (on any operating system).
This format allows you to test the upcoming LaTeX release scheduled for 2020-02-02 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problem beforehand, but such an undertaking is necessarily incomplete, which is why we ask for user testing.
Besides developers we also ask ordinary users to try out the new release candidate, because the more people who test the new format, the higher the chances that any hidden problems are identified before the final release in February hits the streets.
Processing your documents with the prerelease is straight forward. All
you have to do is to replace the invocation command by appending
-dev to the executable, e.g., on the command line you would run
pdflatex-dev myfile or lualatex-dev myfile or xelatex-dev myfile
instead of using
xelatex. If you use an
integrated editing environment, then it depends on the system
how to configure it to use an alternative format; but in any case the necessary
modification should be straight forward.
Please test now — this is the final pre-release prior to the main 2020-02-02 release
We ask you to test now, because this pre-release (with the execption of some further documentation improvements) is representing the 2020-02-02 in the way we want to roll it out in February.
If you encounter any issues with it, please open a bug report at our Issue Tracker for LaTeX2e.
Main features of 2020-02-02 prerelease 3
For technical reasons this second prerelease is labeled “prerelease 3”. Prerelease 1 existed only for a few hours on CTAN, as it was missing some files due to a problem in the build process, but because it was already on CTAN we had to increase the prerelease number.
Improvements for selecting and managing modern fonts
Many modern fonts available these days offer additional font faces,
e.g., small caps italics or a condensed font series, etc. To better
support these fonts NFSS (the New Font Selection Mechanism for
LaTeX) was extended by incorporating ideas from the
fontspec packages. In addition all symbols formerly
provided through the
textcomp package are now available out of the
box and the use of
\oldstylenums got improved.
We also fixed a number of smaller bugs. A detailed description of the
new features and the bug fixes can be found in a draft version of
ltnews31 which you can access via
texdoc ltnews31 if the
pre-release is installed on your computer.
Main features already available in the previous pre-release
Below is a summary of the main features that were made available earlier in the first pre-release.
A new LuaTeX engine coming up …
In TeXLive 2020 the LuaLaTeX format will always use the new LuaHBTeX
engine, which is LuaTeX with an embedded HarfBuzz library.
HarfBuzz can be used by setting a suitable renderer in the font
declaration. An interface for that is provided by the
This additional font renderer will greatly improve the shaping of
various scripts, which are currently handled correctly only by
To simplify the testing of the new engine, the necessary executables have been added to MiKTeX and TeXLive 2019 and both have changed the LuaLaTeX-dev format to use it. This means you can already now test the new engine by using the prerelease!
Even if you have no need for the new HarfBuzz functionality it might be worthwhile running some tests, because, from 2020 onwards this will be the only LuaTeX engine for which a LaTeX format will be distributed in TeXLive and MikTeX.
Improved load-times for
The LaTeX3 programming layer,
expl3, has over the past decade moved
from being largely experimental to broadly stable. It is now used in a
significant number of third-party packages, either explicitly or
implicitly (e.g., by loading
xparse to define user command
interfaces), so that many documents load the
expl3 code at some
point in the preamble. Most LaTeX documents compiled using XeTeX or
fontspec, which is written using
expl3 so in these
engines it is nearly always used.
expl3 layer contains a non-trivial number of macros, and when
used with the XeTeX and LuaTeX engines, it loads a large body of
Unicode data. This means that even on a fast computer, there is a
relatively large load time penalty whenever
expl3 is needed.
For this release, the team have made adjustments in the LaTeX 2e kernel to
pre-load a significant portion of
expl3 when the format is built. This is
transparent at the user level, other than the significant decrease in document
processing time: there will be no “pause” for loading Unicode data
files. Loading of
expl3 in documents and packages can be done as usual;
it will, at some future time, become possible to omit
entirely, but, to support older formats, this explicit loading is at present still recommended.
The prereleases will never go stale in the future (we hope)
The release policy we will follow should ensure that the
releases are never older than the main release.
When a full 2020-02-02 release is made, the
-dev release will be
updated to be the same format, or possibly
a pre-release of the next release. It will not be left as a
pre-release of 2020-02-02 at that point.
More details on prereleases please …
More details and some background information about these concepts and the process of the development formats is available in a TUGboat article:
- Frank Mittelbach
- TUGboat 40:2, 2019
How do you prevent creating banana software (i.e., software that gets ripe at the customer site)? By proper testing! But this is anything but easy.
The paper will give an overview of the efforts made by the LaTeX Project Team over the years to provide high-quality software and explains the changes that we have made this summer to improve the situation further.
Enjoy — Frank