summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3news11.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3news11.tex')
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.tex206
1 files changed, 206 insertions, 0 deletions
diff --git a/macros/latex/contrib/l3kernel/l3news11.tex b/macros/latex/contrib/l3kernel/l3news11.tex
new file mode 100644
index 0000000000..b88e7d2420
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news11.tex
@@ -0,0 +1,206 @@
+% Copyright 2017 The LaTeX3 Project
+\documentclass{ltnews}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{csquotes}
+\usepackage{hologo}
+\usepackage{ragged2e}
+\usepackage{underscore}
+
+
+%%% wrong in ltnews.cls ... so some tmp fix here at the moment:
+\makeatletter
+\renewcommand{\subsubsection}{%
+ \@startsection
+ {subsubsection}{2}{\leftmargini}{-1.5ex \@plus -1ex \@minus -.2ex}%
+ {1sp}{\@subheadingfont}%
+}
+\makeatother
+
+
+\AtBeginDocument{%
+ \renewcommand*{\LaTeXNews}{\LaTeX3~News}%
+ \RaggedRight
+ \setlength\parindent{1em}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\publicationmonth{February}
+\publicationyear{2018}
+\publicationissue{11}
+
+% Avoid hyphenation of csnames
+\makeatletter
+\protected\edef\cs#1{%
+ \noexpand\path{\@backslashchar#1}%
+}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+
+\section{Move of sources from Subversion 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 (\textsc{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.
+
+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.
+
+\subsection{Version identifiers}
+
+Following this change, we have removed Subversion \verb=$Id= lines from the
+\LaTeX3 sources. 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. However, the team recommend that package authors
+include version information directly in \cs{ProvidesExplPackage} (or similar)
+lines.
+
+\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.
+
+\subsection{Boolean functions}
+
+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}
+terms:
+\begin{itemize}
+\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)}
+\end{itemize}
+These new, stable functions are now the recommended way of handling boolean
+evaluations. Package authors are encouraged to employ these new functions as
+appropriate.
+
+\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
+misunderstood.
+
+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 \textsc{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_on:n} and \cs{debug_off:n}. 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{verbatim}
+\begin{macro}[int]{\l@expl@enable@debug@bool}
+\end{verbatim}
+
+\section{\pkg{l3build} updates}
+
+Work on \pkg{l3build} has continued in parallel with \pkg{expl3} work, in
+particular continuing to develop features to allow wider use of the tool.
+
+Paralleling the move of the \LaTeX3 codebase to Git, \pkg{l3build} now has it's
+own separate Git repository: \url{https://github.com/latex3/l3build}. This will
+enable us to involve other developers in the Lua code required for the build
+system. At the same time, we have split the code into a number of small source
+files, again to ease development both for the team ourselves and for potential
+collaborators.
+
+Another major change is that \pkg{l3build} can now retain the structure of
+source repositories when creating a CTAN archive. Whilst the team favor `flat'
+source set ups, other users prefer structures approaches. Most notably, this
+new \pkg{l3build} functionality means that it is now used to carry out
+\pkg{beamer} releases.
+
+The other major new feature is a new approach to multiple test set ups, which
+replaces the older \verb|--testfiledir| option. In the new approach, separate
+configuration files are listed in the main \verb|build.lua| script, and can be
+selected manually using a new \verb|--config| switch. This new approach allows
+complex test set ups to be run in a totally automated fashion, which is
+important for kernel testing.
+
+Some changes to the normalisation routines have been carried out, some to deal
+with upcoming \hologo{LuaTeX} changes, others to address aspects which show up
+only in some tests. This has required \verb|.tlg| updates in some cases: as far
+as possible, we strive to avoid requiring changes to the reference files.
+
+\begin{thebibliography}{10}
+ \raggedright
+ \bibitem{SubGit}
+ \emph{SubGit}, TMate Software, \url{https://subgit.com}
+ \bibitem{project-publications}
+ Links to various publications by members of the \LaTeX{} Project Team.
+ \newblock \url{https://www.latex-project.org/publications}.
+\end{thebibliography}
+
+\end{document}