[latex3-commits] [git/LaTeX3-latex3-latex3] master: l3news: First pass over expl3 part (947208e)

Joseph Wright joseph.wright at morningstar2.co.uk
Fri Feb 2 22:47:26 CET 2018

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


commit 947208e5c6a10ca42885d85f6e4d7b9288c26a45
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Feb 2 21:47:26 2018 +0000

    l3news: First pass over expl3 part


 news/l3news11.tex |  258 +++++++++++++++++++++++------------------------------
 1 file changed, 111 insertions(+), 147 deletions(-)

diff --git a/news/l3news11.tex b/news/l3news11.tex
index 18ed787..2ddc8e0 100644
--- a/news/l3news11.tex
+++ b/news/l3news11.tex
@@ -27,8 +27,8 @@
 % Avoid hyphenation of csnames
@@ -42,158 +42,128 @@
-\tableofcontents  % to see what is there right now
-\textbf{Skeleton for next l3news ... sections to be added and filled in}
-There has been something of a gap since the last \LaTeX3 News, but this does
-not mean that work has not been going on. The Team have been working on a
-number of areas, many of which reflect wider take-up of \pkg{expl3}. There have
-also been a number of significant new developments in the \LaTeX3
-\enquote{sphere} in the last year.
+\section{Move of sources from Subversion to Git}
-\section{Move of sources from SVN to Git}
+The \LaTeX{} team have used a variety of version control systems over the life
+of the \LaTeX3 sources. For a long time we maintained the \LaTeX3 sources in
+Subversion (SVN) but also provided a read-only clone of them on GitHub using
+SubGit from TMate Software~\cite{SubGit} to synchronize the two
+repositories---a solution that worked very well.
-For a long time we maintained the \LaTeX3 sources in SVN but also provided a
-readonly clone of them on Github using the SubGit software from TMate Software
-to syncronize the two repositories---a solution that worked very well.
+We have now retired the Subversion repository and completely moved over to Git,
+with the master \LaTeX3 repository hosted on GitHub:
+\url{https://github.com/latex3/latex3}. This new approach means we are (slowly)
+adopting some new approaches to development, for example branches and accepting
+pull requests.
-We have now retired the SVN repository and completely moved over to
+\subsection{Version identifiers}
+Following this change, we have removed Subversion \verb=$Id= lines from the
+\LaTeX3 sources. The function \cs{GetIdInfo} is now \emph{deprecated}, and the
+team recommend that package authors include version information directly in
+\cs{ProvidesExplPackage} (or similar) lines. At present, we will be retaining
+\cs{GetIdInfo} as there are several possible use cases. The \LaTeX3 sources now
+have only release date strings as identifiers.
+\section{\pkg{expl3} updates and extensions}
+Work has continued on the codebase over the last year, with both small
+changes/fixes and more substantial changes taking place. The following sections
+summarise some of the more notable changes.
+\subsection{\pkg{l3sort} moves to the kernel}
+Sorting is an important ability, and for some time the team have provided a
+stand-alone \pkg{l3sort} to support this. The functionality has seen wide take
+up, and so has now been integrated directly into the kernel. This took place in
+parallel with some interface changes to \enquote{round out} the code.
-\section{\pkg{expl3} updates and extensions throughout the year}
+\subsection{Boolean functions}
-\textbf{just a list of change notes, to be expanded and/or partially dropped}
-\subsection{Release 2017-01-28}
+For some time, the team have been aware that boolean expressions can fail in
+certain circumstances, leading to low-level errors. This is linked to two
+features of the long-standing \cs{bool_if:n(TF)} function: expandable operation
+and short-circuit evaluation.
+Addressing that has meant two changes: altering \cs{bool_if:n(TF)} to
+\emph{always} evaluate each part of the expression, and introducing new
+short-circuit functions without the issue. The latter are |lazy| in \pkg{expl3}
-\item Remove deprecated function \cs{scan_align_safe_stop:}
-\item Remove deprecated key properties \texttt{.value_required:}
-  and \texttt{.value_forbidden:}
-\item Bug fix for \cs{l_char_active_seq}
-\item Index improvements in interface3/source3
-\item Improve internal robustness of l3sort
-\item Better uniformity for \texttt{rand()} and related
-  FPU functions
-\item Basic key inheritance in l3keys
-\item New experimental functions for selecting random
-  entries in seq data, etc.
+\item \cs{bool_lazy_all:n(TF)}
+\item \cs{bool_lazy_and:nn(TF)}
+\item \cs{bool_lazy_any:n(TF)}
+\item \cs{bool_lazy_or:nn(TF)}
-\subsection{Release 2017-02-17}
-In this release the l3sort module is integrated
-into l3kernel and so available directly on loading
-expl3. As part of this move, the 'result' functions
-have been renamed to
-\item \cs{sort_return_same:}
-\item \cs{sort_return_swapped:}
-with the older names (\cs{sort_ordered:} and
-\cs{sort_reversed:}) retained until the end of 2018.
-This release also extends l3docstrip to aid with
-the LaTeX23 'boundary': the notation \cs{@@@@par} in a
-source will now yield \cs{@@par} in the live code.
-\subsection{Release 2017-04-01}
-\subsubsection{Boolean functions}
-This release marks the functions
-\cs{bool_lazy_any:n(TF)} and
-as stable. This will be followed at a later date by a change in
-\cs{bool_if:n(TF)}, which will move to being greedy: this change is
-necessary as there are circumstances under which \cs{bool_if:n(TF)}
-currently fails with a low-level error due to lazy evaluation.
-Package authors are encouraged to consider employing these new functions
-where appropriate.
-\subsubsection{Version identifiers}
-From this release the SVN \verb=$Id= lines are removed from \LaTeX3 sources. The
-function \cs{GetIdInfo} is deprecated from this release, and the team
-recommend that package authors include version information directly in
-\cs{ProvidesExplPackage} (or similar) lines.
-After some internal discussion, we will be retaining \cs{GetIdInfo} as their
-are several possible use cases: for the team's own use we will not be
-using SVN Id's as release identifiers.
-\subsection{Release 2017-07-15}
-\item New \cs{hbox_set_to_wd:Nnw} and \cs{vbox_set_to_ht:Nnw} functions
-\item Revised l3file module to give better defined
-  path/file/extension split
-\item New experimental functions in l3file: \cs{file_input_stop:},
-  \cs{file_get_mdfive_hash:nN}, \cs{file_get_size:nN} and
-  \cs{file_get_timestamp:nN}; currently \hologo{XeTeX} does not support
-  getting file size/timestamp
-\item New experimental \cs{mode_leave_vertical:} as a code-level
-  equivalent of \cs{leavevmode}
-\item New experimental support for shell escape in l3sys module
-\item New mechanism for checking variable declarations locally:
-  see option "enable-debug" and
-  \cs{debug_check_declarations_(on|off)}:
-\item More invalid regex patterns trapped with warning
-\item More regex documentation examples
-\item Bug fix for \cs{tl_mixed_case:n(n)} with \hologo{pdfTeX} when the first
-  character is outside the ASCII range
-\item Fix nesting of selective setting in l3keys
- \item Fix loading of l3str-format
- \item Fix handling of \cs{iow_newline:} in \cs{iow_wrap:nnnN}
- \item \cs{cs_generate_variant:Nn} now warns on incorrect variant
-   relationships
- \item Better recovery by \cs{dim_set:Nn}, etc., if passed
-   skip expressions
- \item Better handling of global/local consistency in variable
-   setting
- \item String mappings now include space characters
- \item Revise l3doc to no longer require "[aux]" (deprecated) or
-   "[int]" in code mark up: "[int]" is retained for cases where
-   auto-detection of internals is not possible
- \item Deprecate \cs{token_new:Nn}
- \item Documentation improvements
-\subsection{Wrong use of \cs{cs_generate_variant:Nn}}
-\textbf{discuss why we are going to disallow some versions}
-\subsection{Release 2017-12-16}
-\item New \cs{prg_generate_conditional_variant:Nnn} function
-\item Add missing \cs{tl_if_novalue_p:n}
-\item Make \cs{IfBooleanTF} robust against multi\itemtoken arguments
-- Some doc fixes 
+These new, stable functions are now the recommended way of handling boolean
+evaluations. Package authors are encouraged to employ these new functions as
+\subsection{Revision of \pkg{l3file}}
+Large parts of \pkg{l3file} have been revised to give a better separation of
+path/file/extension. This has resulted in addition of a number of new support
+functions and variables.
+At the same time, new experimental functions have been added to utilise a
+number of useful primitives in \hologo{pdfTeX}{}: \cs{file_get_mdfive_hash:nN},
+\cs{file_get_size:nN} and \cs{file_get_timestamp:nN}. Currently, \hologo{XeTeX}
+does not support getting file size/timestamp information: this is available in
+other engines.
+Paralleling these changes, we have added (experimental) support for shell
+escape to the \pkg{l3sys} module, most notably \cs{sys_shell_now:n}. A range of
+test booleans are also available to check whether shell escape is enabled.
+\subsection{Detection of \cs{cs_generate_variant:Nn} errors}
+The ability to generate variants is an important feature of \pkg{expl3}. At
+the same time,  there are crucial aspects of this approach that can be
+misunderstood by users. In particular, the requirement that variants map
+correctly to an underlying \verb|N|- or \verb|n|-type base function is sometimes
+To help detect and correct these cases, \cs{cs_generate_variant:Nn} now
+carries out error checking on it's arguments, and raises a warning where
+it is mis-applied. At present, the team have avoided making this an error
+as it is likely to be seen by end users rather than directly by package
+developers. In time, we are likely to revisit this and tighten up
+further on this key requirement.
+\subsection{Accessing random data}
+To support randomised data selection, we have introduced a family of
+experimental functions which use underlying engine support for random values,
+and provide one entry at random from the data type.
+At the same time, we have addresses some issues with uniformity stemming from
+the random number function used by \hologo{pdfTeX}{} and inherited by other
+engines. This means that \pkg{expl3}'s FPU will generate \emph{pseudo}-random
+values across the range of possible outputs.
+\subsection{More powerful debugging}
+A new set of debugging functions have been added to the kernel. These allow
+debug code to be enabled locally using the new option \verb|enable-debug| along
+with functions \cs{debug_check_declarations_on:} and
+\cs{debug_check_declarations_off:}. A companying this change, we have improved
+the handling of global/local consistency in variable setting.
+\subsection{Mark-up changes in \pkg{l3doc}}
+Since the introduction of the \verb|__| syntax to mark internal function, the
+need for explicit mark-up of internal material in sources has been negated.
+As such, we have now dropped the requirement to mark internal material with
+\verb|[aux]| when using \pkg{l3doc}. Instead, the status of functions and
+variables is auto-detected from the presence of \verb|__|. For cases where
+non-standard names are used for internal code, the mark up \verb|[int]| is
+retained, \emph{e.g.}
+\begin{macro}[int]{\l at expl@enable at debug@bool}
 \section{\pkg{l3build} updates throughout the year}
@@ -240,19 +210,13 @@ Moved \pkg{l3build} to its own repository:
 \section{Looking forward}
+  \bibitem{SubGit}
+    \emph{SubGit}, TMate Software, \url{https://subgit.com}
     Links to various publications by members of the \LaTeX{} Project Team.
     \newblock \url{https://www.latex-project.org/publications}.

More information about the latex3-commits mailing list