\iffalse meta-comment

File l3syntax-changes.tex Copyright (C) 2011-2012,2017 The LaTeX3 Project

It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
license or (at your option) any later version.  The latest version
of this license is in the file

   http://www.latex-project.org/lppl.txt

This file is part of the "l3kernel bundle" (The Work in LPPL)
and all files in that bundle must be distributed together.

The released version of this bundle is available from CTAN.

\fi

\documentclass{l3doc}


\title{%
  Syntax changes in \LaTeX3 functions%
}
\author{%
  The \LaTeX3 Project\thanks
    {%
      E-mail:
      \href{mailto:latex-team@latex-project.org}%
        {latex-team@latex-project.org}%
    }%
}
\date{Released 2017/09/18}

\newcommand{\TF}{\textit{(TF)}}

\begin{document}

\maketitle

This file lists functions whose syntax has changed after August 2011,
with an approximate date.

\section{August 2011}

\begin{itemize}
  \item \cs{tl_if_single:n\TF} recognized any non-zero number of
    explicit spaces as \meta{true}, and did not ignore trailing spaces.
    Now it is \meta{true} for
    \[
      \meta{optional spaces}
      \meta{normal token or brace group}
      \meta{optional spaces}.
    \]
  \item \cs{tl_reverse:n} stripped outer braces and lost unprotected spaces.
    Now it keeps spaces, leaves unbraced single tokens unbraced, and
    braced groups braced.
  \item \cs{tl_trim_spaces:n} only removed one leading and trailing space.
    Now removes recursively. Also, on the left it used to strip implicit
    and explicit spaces with any character code. Now it strips only explicit
    space characters $(32,10)$.
\end{itemize}

\section{September 2011}

\begin{itemize}
\item clist functions which receive an \texttt{n}-type comma list argument
  now trim spaces from each item in the argument.
\end{itemize}

\section{June 2012}

\begin{itemize}
  \item Access to list functions now indexes from~$1$, not from~$0$.
  This applies to multiple choices in the \pkg{l3keys} module and
  the \cs{clist_item:Nn}, \cs{seq_item:Nn} and \cs{tl_item:Nn}
  functions.
  \item \cs{tl_trim_spaces:n} now requires a variable number of
  expansions to fully expand, rather than exactly two.  Of course,
  \texttt{x}-type expansion still correctly evaluates this function.
\end{itemize}

\section{July 2012}

\begin{itemize}
  \item The \cs{tl_if_head_eq_meaning:nN}, \cs{tl_if_head_eq_catcode:nN}
    and \cs{tl_if_head_eq_charcode:nN} conditionals now never match when
    their first argument is empty.
\end{itemize}

\section{August 2012}

\begin{itemize}
  \item \cs{lua_now:x} is now a standard \texttt{x}-type expansion of
    \cs{lua_now:n}, which does no expansion. Engine-level expansion is moved
    to \cs{lua_now_x:n}, reflecting the fact that this is non-standard in the
    same way as for example \cs{str_if_eq_x:nn(TF)}.
\end{itemize}


\end{document}
