[latex3-commits] [git/LaTeX3-latex3-latex3] master: First draft for L3News 12 (f770caf08)

Joseph Wright joseph.wright at morningstar2.co.uk
Fri Nov 15 00:18:03 CET 2019


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/f770caf0851fbe92ffaeea9676ca2241824593a7

>---------------------------------------------------------------

commit f770caf0851fbe92ffaeea9676ca2241824593a7
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Thu Nov 14 23:18:03 2019 +0000

    First draft for L3News 12


>---------------------------------------------------------------

f770caf0851fbe92ffaeea9676ca2241824593a7
 l3kernel/doc/l3news12.tex | 231 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 231 insertions(+)

diff --git a/l3kernel/doc/l3news12.tex b/l3kernel/doc/l3news12.tex
index d6f3ffeda..5b8a0de3c 100644
--- a/l3kernel/doc/l3news12.tex
+++ b/l3kernel/doc/l3news12.tex
@@ -1,6 +1,8 @@
 % Copyright 2019 The LaTeX3 Project
 \documentclass{ltnews}
 
+\usepackage{csquotes}
+\usepackage{hologo}
 \usepackage{ragged2e}
 
 \PassOptionsToPackage{colorlinks}{hyperref}
@@ -39,4 +41,233 @@
 
 \tableofcontents
 
+\section{Introduction}
+
+There has been quite a gap since the last \emph{\LaTeX3 News} (Issue~11,
+February 2018), and so there is quite a bit to cover here. Luckily, one of the
+things there \emph{is} to cover is that we are using a more formalised approach
+to logging changes, so writing up what has happened is that bit easier.
+
+Work has continued apace across the \LaTeX3 codebase in the last (nearly) two
+years. A lot of this is ultimately focussed on making the core of \pkg{expl3}
+even more stable: \emph{squeezing} out more experimental ideas, refining
+ones we have and making it a serious option for core \LaTeX{} programming.
+
+\section{New features in \pkg{expl3}}
+
+\subsection{A new argument specifier: \texttt{e}-type}
+
+During 2018, the team worked with the \TeX{} Live, \hologo{XeTeX} and
+(u)p\TeX{} developers to add the \cs{expanded} primitive to \hologo{pdfTeX}{},
+\hologo{XeTeX} and (u)p\TeX{}. This primitive was originally suggested for
+\hologo{pdfTeX}{} v1.50 (never released), and was present in \hologo{LuaTeX}{}
+from the start of that project.
+
+Adding \cs{expanded} let us create a new argument specifier: \texttt{e}-type
+expansion. This is \emph{almost} the same as \texttt{x}-type, but is itself
+expandable. (It also doesn't need doubled \verb|#| tokens.) That's incredibly
+useful for creating function-like macros: you can ensure that \emph{everything}
+is expanded in an argument before you go near it, with not an \cs{expandafter}
+in sight.
+
+\subsection{New functions}
+
+New programming tools have appeared in various places across \pkg{expl3}.
+The highlights are
+\begin{itemize}
+  \item Shuffling of sequences to allow randomization
+  \item A suite of random-number based functions, including some macro code
+    to ensure truly even distribution of the underlying random values
+  \item Arrays of integers and floating point values; these have constant-time
+    access
+  \item Functions to return values after system shell usage
+  \item (Expandable) access to file information, including file size, MD5
+    hash and modification date
+\end{itemize}
+
+For the latter, we have revised handling of file names considerably. There is
+now support for finding files in expansion contexts (by using the
+\cs{(pdf)filesize} primitive). Spaces and quotes in file names are now fully
+normalised, in a similar manner to the approach used by the latest \LaTeXe{}
+kernel.
+
+\subsection{String conversion moves to \pkg{expl3}}
+
+In addition to entirely new functions, the team have moved the
+\pkg{l3str-convert} module from the \pkg{l3experimental} bundle into the
+\pkg{expl3} core. This module is essential for dealing with the need to produce
+\textsc{utf}-16 and \textsc{utf}-32 strings in some contexts, and also offers
+built-in escape for \textsc{url}s and \textsc{pdf} strings.
+
+\section{Notable fixes and changes}
+
+\subsection{Message formatting}
+
+The format of messages in \pkg{expl3} was originally quite text-heavy, the idea
+being that they would stand out in the \texttt{.log} file. However, this made
+the hard to find by a regular expression search, and was very different from
+the \LaTeXe{} message approach. The formatting of \pkg{expl3} messages has been
+aligned with that from the \LaTeXe{} kernel, such that \textsc{ide} scripts and
+similar will be able to find and extract them directly.
+
+\subsection{Key inheritance}
+
+A number of changes have been made to the inheritance code for keys,
+to allow inheritance to work \enquote{as expected} in (almost) all
+cases.
+
+\subsection{Floating point juxtaposition}
+
+% BRUNO???
+
+\subsection{Changing box dimensions}
+
+\TeX{}'s handling of boxes is subtly-different from other registers, and this
+shows up in particular when you want to resize a box. To bring treatment of
+boxes, or rather the grouping behavior of boxes, into line with other
+registers, we have made some internal changes to how functions such as
+\cs{box_set_wd:N} are implemented. This will be transparent for
+\enquote{well-behaved} use cases of these functions.
+
+\subsection{More functions moved to stable}
+
+A large number of functions which were introduces as candidates have been
+evaluated and moved to stable status. The team hope to have move all functions
+in \pkg{expl3} to stable status, or move them out of the core, over the coming
+months.
+
+\subsection{Deprecations}
+
+There have been two notable sets of deprecations over the past 18 months.
+First, we have rationalised all of the \enquote{raw} primitive names to the
+form \cs{tex_<name>:D}. This means that the older names, starting
+\cs{pdftex_...}, \cs{xetex_...}, etc., have been removed.
+
+Secondly, the use of integer constants, which dates back to the earliest days
+of \pkg{expl3}, is today more likely to make the code harder to read than
+anything else. Speed improvements in engines mean that the tiny enhancements in
+reading such constants are no longer required. Thus for example \cs{c_two} is
+deprecated in favour of simply using \texttt{2}.
+
+In parallel with this, a number of older \texttt{.sty} files have been removed.
+These older files provided legacy stubs for files which have now been
+integrated in the \pkg{expl3} core. They have now had sufficient time to allow
+users to update their code.
+
+\section{Internal improvements}
+
+\subsection{Cross-module functions}
+
+The team introduced the idea of internal module functions some time ago. Within
+the kernel, there are places where functions need to be used in multiple
+modules. To make the nature of the kernel interactions clearer, we have worked
+on several aspects
+\begin{itemize}
+  \item Reducing as far as possible cross-module functions
+  \item Making more generally-useful functions public, for example
+    scan marks
+  \item Creating an explicit cross-kernel naming convention for
+    functions which are internal but are essential to use in multiple
+    kernel modules
+\end{itemize}
+
+\subsection{The backend}
+
+Creating graphics, working with color, setting up hyperlinks and so on require
+backend-specific code. Here, backends are for example \texttt{dvips},
+\texttt{xdvipdfmx} and the direct \textsc{pdf} mode in \hologo{pdfTeX} and
+\hologo{LuaTeX}. These functions are needed across the \LaTeX3 codebase and
+have to be updated separate from the \pkg{expl3} core. To facilitate that, we
+have split those sources into a separate bundle, which can then be updated as
+required.
+
+At the same time, the code these files contains is very low-level and is best
+described as internal. We have re-structured how the entire set of functions
+are referred to such that they are now internal for the area they implement,
+for example image inclusion, box affine transformations, etc.
+
+\section{Better support for (u)p\TeX{}}
+
+The developers behind (u)p\TeX{} (Japanese \TeX{}) have recently enhanced their
+English documentation (see \url{https://github.com/texjporg/ptex-manual}).
+Using this new information, we have been able to make internal adjustments to
+\pkg{expl3} to better support these engines.
+
+\section{Options}
+
+A new option \texttt{undo-recent-deprecations} is now available for cases where
+a document (or package) requires some \pkg{expl3} functions that have been
+formally removed after deprecation. This is to allow \emph{temporary}
+work-arounds for documents to be compiled whilst code is begin updated.
+
+The \enquote{classical} options for selecting backends (\texttt{dvips},
+\texttt{pdftex}, etc.) are now recognised in addition to the native key--value
+versions. This should make it much easier to use \pkg{expl3} image and color
+support as it is brought up to fully-workable standards.
+
+\section{Engine requirements}
+
+The minimum engine versions needed to use \pkg{expl3} have been
+incremented a little
+\begin{itemize}
+  \item \hologo{pdfTeX} v1.40
+  \item \hologo{XeTeX} v0.99992
+  \item \hologo{LuaTeX} v0.95
+  \item $\epsilon$-(u)p\TeX{} mid-2012
+\end{itemize}
+
+\section{Documentation}
+
+\subsection{News}
+
+The \emph{\LaTeX3 News} files were until recently only used to create
+\textsc{pdf} files on the team website. We have now integrated those into the
+\pkg{l3kernel} (\pkg{expl3} core) bundle. The news files cover all of \LaTeX3
+files, as the core files are always available.
+
+\subsection{ChangeLog}
+
+Since the start of 2018, the team have commenced a comprehensive
+change log for each of the bundles which make up the \LaTeX3 code.
+These are simple Markdown text files, which means that they can be displayed
+formatted in web views.
+
+\section{Changes in \pkg{xparse}}
+
+A number of new features have been added to \pkg{xparse}. To allow
+handling of the fact that skipping spaces may be required only in
+some cases when searching for optional arguments, a new modifier
+\texttt{!} is available in argument specifiers. This causes
+\pkg{xparse} to \emph{require} that an optional argument follows
+immediately with no intervening spaces.
+
+There is a new argument type purely for environments: \texttt{b}-type
+for collecting a \cs{begin}/\cs{end} pair, i.e., collecting the body of
+an environment. This is similar in concept to the \pkg{environ} package,
+but is integrated directly into \pkg{xparse}.
+
+Finally, it is now possible to refer to one argument as the
+default for another optional one, for example
+\begin{verbatim}
+\NewDocumentCommand{\caption}{O{#2} m}
+  ...
+\end{verbatim}
+
+\section{New experimental modules}
+
+A number of new experimental modules have been added within the
+\pkg{l3experimental} bundle
+\begin{itemize}
+  \item \pkg{l3bechmark} Performance-testing system using the timing
+    function in modern \TeX{} engines
+  \item \pkg{l3cctab} Category code tables for all engines, not
+    just \hologo{LuaTeX}
+  \item \pkg{l3color} Color support, similar in interface to \pkg{xcolor}
+  \item \pkg{l3draw} Creation of drawings, inspired by \pkg{pgf}, but
+    using the \LaTeX3 \textsc{fpu} for calculations
+  \item \pkg{l3pdf} Support for \textsc{pdf} features such as compression,
+    hyper-links, etc.
+  \item \pkg{l3sys-shell} Shell escape functions for file manipulation
+\end{itemize}
+
 \end{document}





More information about the latex3-commits mailing list