texlive[48476] Master/texmf-dist: l3 (24aug18)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 25 00:18:03 CEST 2018


Revision: 48476
          http://tug.org/svn/texlive?view=revision&revision=48476
Author:   karl
Date:     2018-08-25 00:18:02 +0200 (Sat, 25 Aug 2018)
Log Message:
-----------
l3 (24aug18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
    trunk/Master/texmf-dist/doc/latex/l3packages/README.md
    trunk/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
    trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty

Added: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -0,0 +1,49 @@
+# Changelog
+All notable changes to the `l3experimental` bundle since the start of 2018
+will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+this project uses date-based 'snapshot' version identifiers.
+
+## [Unreleased]
+
+## [2018-08-24]
+
+### Fixed
+- Actually distribute `l3sys-shell`
+
+## [2018-08-23]
+
+### Added
+- `CHANGELOG.md` (fixes #460)
+- `l3sys-shell` for experimental shell functions
+
+## [2018-05-12]
+
+### Changed 
+- Track changes in primitive naming in `l3kernel` 
+
+## [2018-04-30]
+
+### Changed
+- Switch to ISO date format 
+- Improve cross-module use of internal functions 
+
+## [2018-03-05]
+
+### Added
+- Several new functions added to `l3draw`
+
+## [2018-02-21]
+
+### Added
+- New `l3color` module using `xcolor`-like expression syntax
+- New `l3draw` module, based on `pgf` layer of the TikZ system
+
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-24...HEAD
+[2018-08-24]: https://github.com/latex3/latex3/compare/2018-08-23...2018-08-24
+[2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23
+[2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12
+[2018-04-30]: https://github.com/latex3/latex3/compare/2018-03-05...2018-04-30
+[2018-03-05]: https://github.com/latex3/latex3/compare/2018-02-21...2018-03-05
+[2018-02-21]: https://github.com/latex3/latex3/compare/2017-12-16...2018-02-21


Property changes on: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2018-05-12
+Release 2018-08-24
 
 Overview
 --------
@@ -24,6 +24,7 @@
 * `l3color`
 * `l3draw`
 * `l3str`
+* `l3sys-shell`
 * `xcoffins`
 * `xgalley`
 
@@ -51,6 +52,12 @@
 first is `l3str` itself. This is a collection of functions to act on strings,
 including for manipulations such as UTF8 mappings in pdfTeX.
 
+`l3sys-shell`
+-------------
+
+This module provides abstractions for common shell functions, e.g. file
+deletion and copying.
+
 `xcoffins`
 ----------
 
@@ -77,7 +84,7 @@
 
 Discussion concerning the approach, suggestions for improvements,
 changes, additions, _etc._ should be addressed to the list
-[LaTeX-L](http://news.gmane.org/group/gmane.comp.tex.latex.latex3).
+[LaTeX-L](https://listserv.uni-heidelberg.de/cgi-bin/wa?A0=LATEX-L).
 
 You can subscribe to this list by sending mail to
 

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf	2018-08-24 22:18:02 UTC (rev 48476)

Property changes on: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -7,6 +7,18 @@
 
 ## [Unreleased]
 
+## [2018-08-23]
+
+### Added
+- `\lua_escape:e`, `\lua_now:e` and `\lua_shipout_e:n`
+- `\str_case_e:nn(TF)` and `\str_if_eq:ee(TF)`
+- `\sys_if_platform_unix:(TF)` and `\sys_if_platform_windows:(TF)`
+- `\tl_(g)set_from_shell:Nnn`
+
+### Deprecated
+- `\lua_escape_x:n`, `\lua_now_x:n` and `\lua_shipout_x:n`
+- `\str_case_x:nn(TF)` and `\str_if_eq_x:nn(TF)`
+
 ## [2018-06-14]
 
 ### Added
@@ -110,8 +122,9 @@
 - Step func­tions have been added for dim vari­ables,
   e.g. `\dim_step_in­line:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2018-06-14...HEAD
-[2018-06-01]: https://github.com/latex3/latex3/compare/2018-06-01...2018-06-14
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-23...HEAD
+[2018-08-23]: https://github.com/latex3/latex3/compare/2018-06-14...2018-08-23
+[2018-06-14]: https://github.com/latex3/latex3/compare/2018-06-01...2018-06-14
 [2018-06-01]: https://github.com/latex3/latex3/compare/2018-05-13...2018-06-01
 [2018-05-13]: https://github.com/latex3/latex3/compare/2018-05-12...2018-05-13
 [2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2018-06-14
+Release 2018-08-23
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -52,7 +52,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2018-06-14}
+\date{Released 2018-08-23}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2018-08-24 22:18:02 UTC (rev 48476)
@@ -53,11 +53,22 @@
 \ior_log_streams:                 2018
 \iow_list_streams:                2018
 \iow_log_streams:                 2018
+\lua_escape_x:n                   2019
+\lua_now_x:n                      2019
+\lua_shipout_x:n                  2019
 \luatex_...:D                     2019
 \pdftex_...:D                     2019
 \ptex_...:D                       2019
 \sort_ordered:                    2018
 \sort_reversed:                   2018
+\str_case_x:nn                    2019
+\str_case_x:nnF                   2019
+\str_case_x:nnT                   2019
+\str_case_x:nnTF                  2019
+\str_if_eq_x:nnF                  2019
+\str_if_eq_x:nnT                  2019
+\str_if_eq_x:nnTF                 2019
+\str_if_eq_x_p:nn                 2019
 \tl_show_analysis:N               2019
 \tl_show_analysis:n               2019
 \token_new:Nn                     2018

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -30,7 +30,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2018-06-14}
+\date{Released 2018-08-23}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -30,7 +30,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2018-06-14}
+\date{Released 2018-08-23}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -51,7 +51,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2018-06-14}
+\date{Released 2018-08-23}
 
 \pagenumbering{roman}
 \maketitle

Added: trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -0,0 +1,31 @@
+# Changelog
+All notable changes to the `l3packages` bundle since the start of 2018
+will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+this project uses date-based 'snapshot' version identifiers.
+
+## [Unreleased]
+
+## [2018-08-23]
+
+### Added
+- `CHANGELOG.md` (fixes #460)
+
+## [2018-05-12]
+
+### Changed
+- Track changes in primitive naming in `l3kernel`
+
+## [2018-04-30]
+
+### Changed
+- `xparse`: allow spaces before trailing optional arguments,
+  with new "!" modifier to control behavior
+- Switch to ISO date format
+- Improve cross-module use of internal functions
+
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-23...HEAD
+[2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23
+[2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12
+[2018-04-30]: https://github.com/latex3/latex3/compare/2017-12-16...2018-04-30


Property changes on: trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2018-08-24 22:18:02 UTC (rev 48476)
@@ -1,7 +1,7 @@
 LaTeX3 High-Level Concepts
 ==========================
 
-Release 2018-05-12
+Release 2018-08-23
 
 Overview
 --------
@@ -71,7 +71,7 @@
 
 Discussion concerning the approach, suggestions for improvements,
 changes, additions, _etc._ should be addressed to the list
-[LaTeX-L](http://news.gmane.org/group/gmane.comp.tex.latex.latex3).
+[LaTeX-L](https://listserv.uni-heidelberg.de/cgi-bin/wa?A0=LATEX-L).
 
 You can subscribe to this list by sending mail to
 

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -263,7 +263,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3color}{2018-05-12}{}
+\ProvidesExplPackage{l3color}{2018-08-24}{}
   {L3 Experimental color support}
 %</package>
 %    \end{macrocode}
@@ -359,7 +359,7 @@
 \cs_generate_variant:Nn \@@_convert:nnN { VV }
 \cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4
   {
-    \str_if_eq_x:nnT {#1} { spot } % TO DO!!!
+    \str_if_eq:nnT {#1} { spot } % TO DO!!!
       { }
     \tl_set:Nx #4
       { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
@@ -551,7 +551,7 @@
         \@@_extract:nNN {#2} \l_@@_next_model_tl \l_@@_next_value_tl
         \tl_if_eq:NNF \l_@@_model_tl \l_@@_next_model_tl
           {
-            \str_if_eq_x:nnT { \l_@@_model_tl } { gray }
+            \str_if_eq:VnT \l_@@_model_tl { gray }
               {
                 \use:x
                   {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -109,7 +109,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -320,7 +320,7 @@
 % Scoping drawing elements is necessary to allowing nesting of subparts.
 % These features have specific use requirements: the preconditions must be
 % met. In particular, each type of drawing scope also constitutes a
-% group (\cs{groupd_being:}/\cs{group_end:} pair): as such, they must be
+% group (\cs{group_begin:}/\cs{group_end:} pair): as such, they must be
 % nested correctly.
 %
 % \begin{function}{\draw_scope_begin:, \draw_scope_end:}
@@ -486,7 +486,7 @@
 %   error will occur.
 % \end{function}
 %
-% \begin{function}[EXP]{\draw_point_intersect_circles:nnnn}
+% \begin{function}[EXP]{\draw_point_intersect_circles:nnnnn}
 %   \begin{syntax}
 %     \cs{draw_point_intersect_circles:nnnnn}
 %       \Arg{center1} \Arg{radius1} \Arg{center2} \Arg{radius2} \Arg{root}
@@ -568,7 +568,7 @@
 %       \draw_path_lineto:n { 0cm , 2cm }
 %       \draw_path_lineto:n { 3cm , 2cm }
 %       \draw_path_curveto:nnn
-%         { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0 cm }
+%         { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0cm }
 %       \draw_path_use_clear:n { stroke }
 %     \draw_end:
 %   \end{demo}
@@ -1106,7 +1106,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3draw}{2018-05-12}{}
+\ProvidesExplPackage{l3draw}{2018-08-24}{}
   {L3 Experimental core drawing support}
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -234,7 +234,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2018-05-12}{}
+\ProvidesExplPackage{l3str-convert}{2018-08-24}{}
   {L3 Experimental string encoding conversions}
 %    \end{macrocode}
 %
@@ -1547,7 +1547,7 @@
                   { \@@_unescape_string_repeat:NNNNNN ?? }
               }
               {
-                \str_case_x:nnF {#2}
+                \str_case_e:nnF {#2}
                   {
                     { \c_backslash_str } { 134 }
                     { ( } { 50 }
@@ -2257,10 +2257,10 @@
     }
   \cs_new_protected:Npn \@@_decode_utf_xvi_bom:NN #1#2
     {
-      \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe }
+      \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe }
         { \@@_decode_utf_xvi:Nw 2 }
         {
-          \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff }
+          \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff }
             { \@@_decode_utf_xvi:Nw 1 }
             { \@@_decode_utf_xvi:Nw 1 #1#2 }
         }
@@ -2548,10 +2548,10 @@
     }
   \cs_new_protected:Npn \@@_decode_utf_xxxii_bom:NNNN #1#2#3#4
     {
-      \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
+      \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
         { \@@_decode_utf_xxxii:Nw 2 }
         {
-          \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
+          \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
             { \@@_decode_utf_xxxii:Nw 1 }
             { \@@_decode_utf_xxxii:Nw 1 #1#2#3#4 }
         }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -162,7 +162,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3str-format}{2018-05-12}{}
+\ProvidesExplPackage{l3str-format}{2018-08-24}{}
   {L3 Experimental string formatting}
 %</package>
 %    \end{macrocode}

Added: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -0,0 +1,367 @@
+% \iffalse meta-comment
+%
+%% File: l3sys-shell.dtx Copyright(C) 2018 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 "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+%    https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+\RequirePackage{expl3}
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+  \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+%   The \pkg{l3sys-shell} package\\ System shell functions^^A
+% }
+%
+% \author{^^A
+%  The \LaTeX3 Project\thanks
+%    {^^A
+%      E-mail:
+%        \href{mailto:latex-team at latex-project.org}
+%          {latex-team at latex-project.org}^^A
+%    }^^A
+% }
+%
+% \date{Released 2018-08-24}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_cp:nn}
+%   \begin{syntax}
+%     \cs{sys_shell_cp:nn} \Arg{source} \Arg{dest}
+%   \end{syntax}
+%   Copies the files specified in the \meta{source} (which may include
+%   wildcards) to the \meta{dest}. The file paths should be specified using
+%   |/| as a path separator. Copying is \emph{not} recursive: only files at
+%   the path level given are copied.  If unrestricted shell escape is not
+%   enabled, no action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_mkdir:n}
+%   \begin{syntax}
+%     \cs{sys_shell_mkdir:n} \Arg{directory}
+%   \end{syntax}
+%   Creates the \meta{directory}, which should should  be specified using |/| as
+%   a path separator.  If unrestricted shell escape is not enabled, no action is
+%   attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_mv:nn}
+%   \begin{syntax}
+%     \cs{sys_shell_mv:nn} \Arg{old} \Arg{new}
+%   \end{syntax}
+%   Moves the files from the \meta{old} to \meta{new} names/locations: the
+%   \meta{old} names may include wildcards. In both arguments, |/| should be
+%   used as the path separator.  If unrestricted shell escape is not enabled, no
+%   action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_rm:n}
+%   \begin{syntax}
+%     \cs{sys_shell_rm:n} \Arg{files}
+%   \end{syntax}
+%   Removes the \meta{files} (which may include wildcards). The file path should
+%   be specified using |/| as a path separator.  If unrestricted shell escape is
+%   not enabled, no action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_rmdir:n}
+%   \begin{syntax}
+%     \cs{sys_shell_rmdir:n} \Arg{directory}
+%   \end{syntax}
+%   Removes the \meta{directory}, which should should  be specified using |/| as
+%   a path separator.  If unrestricted shell escape is not enabled, no action is
+%   attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_get_pwd:N}
+%   \begin{syntax}
+%     \cs{sys_shell_get_pwd:N} \meta{str var}
+%   \end{syntax}
+%   Sets the \meta{str var} to the present working directory (the output of
+%   |pwd| on Unix or |cd| on Windows). Note that on Windows this will contain
+%   string backslash chars (|\|).  If unrestricted shell escape is not
+%   enabled, no action is taken.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_split_ls:nN}
+%   \begin{syntax}
+%     \cs{sys_shell_split_ls:N} \Arg{glob} \meta{seq}
+%   \end{syntax}
+%   Sets the \meta{seq var} to contain one entry per directory listing
+%   (equivalent to |ls -1| or |dir /b|) as specified by the \meta{glob}: the
+%   entries are strings. If unrestricted shell is not enabled, no action is
+%   taken.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3sys-shell} implementation}
+%
+%    \begin{macrocode}
+%<*initex|package>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<@@=sys>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*package>
+\ProvidesExplPackage{l3sys-shell}{2018-08-24}{}
+  {L3 Experimental system shell functions}
+%</package>
+%    \end{macrocode}
+%
+% \begin{macro}[EXP]{\@@_path_to_win:n}
+% \begin{macro}[EXP]{\@@_path_to_win:w}
+% \begin{macro}[EXP]{\@@_path_to_win:N}
+%   A simple expandable search-and-replace for providing Windows-style paths.
+%    \begin{macrocode}
+\cs_new:Npn \@@_path_to_win:n #1
+  {
+    \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \q_stop
+  }
+\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \q_stop
+  {
+    \@@_path_to_win:N #1 \q_nil
+    \tl_if_empty:nF {#2}
+      {
+        \c_space_tl
+        \@@_path_to_win:w #2 \q_stop
+      }
+  }
+\cs_new:Npn \@@_path_to_win:N #1
+  {
+    \quark_if_nil:NF #1
+      {
+        \token_if_eq_meaning:NNTF #1 /
+          { \c_backslash_str }
+          {#1}
+         \@@_path_to_win:N
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_cp:nn}
+%   Simple Unix-like file copying: at some stage we may need a directory-only
+%   version as Windows and Unix have different requirements here.
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { 
+                cp~-f~ \exp_not:N \tl_to_str:n {#1} ~
+                  \exp_not:N \tl_to_str:n {#2}
+              }
+            \sys_if_platform_windows:T
+              {
+                copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
+                  \exp_not:N \@@_path_to_win:n {#2}
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_mkdir:n}
+%   Windows (with the extensions) will automatically make directory trees but
+%   issues a warning if the directory already exists: avoid by including a
+%   test.
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_mkdir:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
+            \sys_if_platform_windows:T
+              {
+                if~not~exist~
+                  \exp_not:N \@@_path_to_win:n { #1 / nul } ~
+                  mkdir~ \exp_not:N \@@_path_to_win:n {#1}
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_mv:nn}
+%   On Windows we do not have a single |mv| operation, so copy-and-delete
+%   instead.
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              {
+                mv~ \exp_not:N \tl_to_str:n {#1} ~
+                  \exp_not:N \tl_to_str:n {#2}
+              }
+            \sys_if_platform_windows:T
+              {
+                copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
+                  \exp_not:N \@@_path_to_win:n {#2}
+                  \token_to_str:N & \token_to_str:N &
+                  del~/f~/q~\exp_not:N \@@_path_to_win:n {#1}
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_rm:n}
+%   Deletion: obviously a big health warning here!
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_rm:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { rm~-f~ \exp_not:N \tl_to_str:n {#1}  }
+            \sys_if_platform_windows:T
+              { del~/f~/q~ \exp_not:N \@@_path_to_win:n {#1} }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_rmdir:n}
+%   When removing a directory, we create it first as that avoids errors in
+%   the Windows case.
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_rmdir:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_mkdir:n {#1}
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
+            \sys_if_platform_windows:T
+              { rmdir~/s~/q~ \exp_not:N \@@_path_to_win:n {#1} }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_tmp_tl}
+%   Scratch space.
+%    \begin{macrocode}
+\tl_new:N \l_@@_tmp_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\sys_shell_get_pwd:N}
+%   Getting the path is easy: the main work is avoiding loosing any
+%   information. (This information can be obtained using the recorder file:
+%   that does not require shell escape. However, it's hard to see how it might
+%   be useful without the other file functions.)
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_get_pwd:N #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl
+          {
+            \char_set_catcode_other:N \exp_not:N \\
+            \char_set_catcode_other:N \exp_not:N \#
+            \char_set_catcode_other:N \exp_not:N \~
+            \char_set_catcode_other:N \exp_not:N \%
+            \char_set_catcode_space:N \exp_not:N \ %
+          }
+          {
+            \sys_if_platform_unix:T { pwd }
+            \sys_if_platform_windows:T { cd }
+          }
+        \str_set:NV #1 \exp_not:N \l_@@_tmp_tl
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_split_ls:nN}
+%   Getting a one-per-line listing is easy enough. We need to set
+%   \cs{ExplSyntaxOff} as that deals with the end-of-line character. After that,
+%   just a case of tidying up. The listing always ends in |^^M| so there is an
+%   extra entry to trim.
+%    \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl
+          {
+            \ExplSyntaxOff
+            \char_set_catcode_other:N \exp_not:N \\
+            \char_set_catcode_other:N \exp_not:N \#
+            \char_set_catcode_other:N \exp_not:N \~
+            \char_set_catcode_other:N \exp_not:N \%
+            \char_set_catcode_other:n { 13 }
+          }
+          {
+            \sys_if_platform_unix:T { ls~-1~ #1 }
+            \sys_if_platform_windows:T { dir~/b~ #1 }
+          }
+        \str_set:NV \exp_not:N \l_@@_tmp_tl \exp_not:N \l_@@_tmp_tl
+        \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } }
+          \exp_not:N \l_@@_tmp_tl
+        \seq_pop_right:NN #2 \exp_not:N \l_@@_tmp_tl
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+%</initex|package>
+%    \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex


Property changes on: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins	2018-08-24 22:18:02 UTC (rev 48476)
@@ -0,0 +1,60 @@
+\iffalse meta-comment
+
+File l3sys-shell.ins Copyright (C) 2018 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 "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+   https://github.com/latex3/latex3
+
+for those people who are interested.
+
+-----------------------------------------------------------------------
+
+Any modification of this file should ensure that the copyright and
+license information is placed in the derived files.
+
+\fi
+
+\input l3docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2018 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 "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate{\file{l3sys-shell.sty}
+  {
+    \from{l3sys-shell.dtx}{package}
+  }
+}
+
+\endbatchfile

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -54,7 +54,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -673,7 +673,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2018-05-12}{}
+\ProvidesExplPackage{xcoffins}{2018-08-24}{}
   {L3 Experimental design level coffins}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -59,7 +59,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -685,7 +685,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3galley}{2018-05-12}{}
+\ProvidesExplPackage{l3galley}{2018-08-24}{}
   {L3 Experimental galley code}
 %</package>
 %    \end{macrocode}
@@ -1173,7 +1173,7 @@
   }
 \cs_new_protected:Npn \@@_par_aux:N #1
   {
-    \str_if_eq_x:nnF {#1} { \s_@@_par_omit }
+    \str_if_eq:nnF {#1} { \s_@@_par_omit }
       {
         \@@_par_auxii:
         #1

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -45,7 +45,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
 %
 % \maketitle
 %
@@ -732,7 +732,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2018-05-12}{}
+\ProvidesExplPackage{xgalley}{2018-08-24}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -21,7 +21,7 @@
 % for those people who are interested.
 %
 %<*driver|generic|package>
-\def\ExplFileDate{2018-06-14}%
+\def\ExplFileDate{2018-08-23}%
 %</driver|generic|package>
 %<*driver>
 \documentclass[full]{l3doc}
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -939,6 +939,20 @@
 %   (\emph{i.e.}~an \texttt{N} argument).
 % \end{function}
 %
+% \begin{function}[EXP, added = 2018-06-18]{\use:e}
+%   \begin{syntax}
+%     \cs{use:e} \Arg{expandable tokens}
+%   \end{syntax}
+%   Fully expands the \meta{token list} in an \texttt{x}-type manner,
+%   \emph{but} the function remains fully expandable, and parameter
+%   character (usually~|#|) need not be doubled.
+%   \begin{texnote}
+%     \cs{use:e} the a wrapper around the primitive \tn{expanded}
+%     where it is available:
+%     it requires two expansions to complete its action.
+%   \end{texnote}
+% \end{function}
+%
 % \begin{function}[updated = 2011-12-31]{\use:x}
 %   \begin{syntax}
 %     \cs{use:x} \Arg{expandable tokens}
@@ -1454,11 +1468,13 @@
 %<@@=use>
 %    \end{macrocode}
 %
-% \begin{macro}[EXP]{\use_x:n}
-%   A candidate, but needed early as it links to string comparisons.
-%   Currently \LuaTeX-only.
+% \begin{macro}[EXP]{\use:e}
+%   Currently \LuaTeX-only: emulated for older engines.
 %    \begin{macrocode}
-\cs_set:Npn \use_x:n #1 { \tex_expanded:D {#1} }
+\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
+\tex_ifdefined:D \tex_expanded:D \tex_else:D
+  \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
+\tex_fi:D
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3240,7 +3256,7 @@
   {
     \bool_if:NTF #3
       {
-        \str_if_eq_x:nnF { }
+        \str_if_eq:eeF { }
           { \tl_map_function:nN {#2} \@@_generate_from_signature:n }
           {
             \__kernel_msg_error:nnx { kernel } { non-base-function }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -138,7 +138,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -340,7 +340,7 @@
       }>0 %
       \everyjob\expandafter{%
         \the\expandafter\everyjob
-        \csname\detokenize{lua_now_x:n}\endcsname{require("expl3")}%
+        \csname\detokenize{lua_now:n}\endcsname{require("expl3")}%
       }%
     \fi
   \fi

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1606,7 +1606,7 @@
 %
 % \begin{macro}{\box_rotate:Nn}
 % \begin{macro}{\@@_rotate:N}
-% \begin{macro}{\@@_rotate_x:nnN, \@@_rotate_y:nnN}
+% \begin{macro}{\@@_rotate_xdir:nnN, \@@_rotate_ydir:nnN}
 % \begin{macro}
 %   {
 %     \@@_rotate_quadrant_one:,   \@@_rotate_quadrant_two:,
@@ -1729,7 +1729,7 @@
 %   the equivalent function in the \pkg{l3coffins} module, where both parts
 %   are needed.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_rotate_x:nnN #1#2#3
+\cs_new_protected:Npn \@@_rotate_xdir:nnN #1#2#3
   {
     \dim_set:Nn #3
       {
@@ -1740,7 +1740,7 @@
           }
       }
   }
-\cs_new_protected:Npn \@@_rotate_y:nnN #1#2#3
+\cs_new_protected:Npn \@@_rotate_ydir:nnN #1#2#3
   {
     \dim_set:Nn #3
       {
@@ -1762,46 +1762,46 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_rotate_quadrant_one:
   {
-    \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim
+    \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim
       \l_@@_top_new_dim
-    \@@_rotate_y:nnN \l_@@_left_dim  \l_@@_bottom_dim
+    \@@_rotate_ydir:nnN \l_@@_left_dim  \l_@@_bottom_dim
       \l_@@_bottom_new_dim
-    \@@_rotate_x:nnN \l_@@_left_dim  \l_@@_top_dim
+    \@@_rotate_xdir:nnN \l_@@_left_dim  \l_@@_top_dim
       \l_@@_left_new_dim
-    \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim
+    \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim
       \l_@@_right_new_dim
   }
 \cs_new_protected:Npn \@@_rotate_quadrant_two:
   {
-    \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim
+    \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim
       \l_@@_top_new_dim
-    \@@_rotate_y:nnN \l_@@_left_dim  \l_@@_top_dim
+    \@@_rotate_ydir:nnN \l_@@_left_dim  \l_@@_top_dim
       \l_@@_bottom_new_dim
-    \@@_rotate_x:nnN \l_@@_right_dim  \l_@@_top_dim
+    \@@_rotate_xdir:nnN \l_@@_right_dim  \l_@@_top_dim
       \l_@@_left_new_dim
-    \@@_rotate_x:nnN \l_@@_left_dim   \l_@@_bottom_dim
+    \@@_rotate_xdir:nnN \l_@@_left_dim   \l_@@_bottom_dim
       \l_@@_right_new_dim
   }
 \cs_new_protected:Npn \@@_rotate_quadrant_three:
   {
-    \@@_rotate_y:nnN \l_@@_left_dim  \l_@@_bottom_dim
+    \@@_rotate_ydir:nnN \l_@@_left_dim  \l_@@_bottom_dim
       \l_@@_top_new_dim
-    \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim
+    \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim
       \l_@@_bottom_new_dim
-    \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim
+    \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim
       \l_@@_left_new_dim
-    \@@_rotate_x:nnN \l_@@_left_dim   \l_@@_top_dim
+    \@@_rotate_xdir:nnN \l_@@_left_dim   \l_@@_top_dim
       \l_@@_right_new_dim
   }
 \cs_new_protected:Npn \@@_rotate_quadrant_four:
   {
-    \@@_rotate_y:nnN \l_@@_left_dim  \l_@@_top_dim
+    \@@_rotate_ydir:nnN \l_@@_left_dim  \l_@@_top_dim
       \l_@@_top_new_dim
-    \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim
+    \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim
       \l_@@_bottom_new_dim
-    \@@_rotate_x:nnN \l_@@_left_dim  \l_@@_bottom_dim
+    \@@_rotate_xdir:nnN \l_@@_left_dim  \l_@@_bottom_dim
       \l_@@_left_new_dim
-    \@@_rotate_x:nnN \l_@@_right_dim \l_@@_top_dim
+    \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_top_dim
       \l_@@_right_new_dim
   }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -137,19 +137,6 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[EXP, added = 2018-04-17]{\use_x:n}
-%   \begin{syntax}
-%     \cs{use_x:n} \Arg{token list}
-%   \end{syntax}
-%   Fully expands the \meta{token list} in an \texttt{x}-type manner,
-%   \emph{but} the function remains fully expandable, and parameter
-%   character (usually~|#|) need not be doubled.
-%   \begin{texnote}
-%     \cs{use_x:n} the a wrapper around the primitive \tn{expanded}:
-%     it requires two expansions to complete its action.
-%   \end{texnote}
-% \end{function}
-%
 % \section{Additions to \pkg{l3box}}
 %
 % \subsection{Viewing part of a box}
@@ -359,7 +346,7 @@
 %   If found, sets the \meta{str var} to the size of the file in bytes.
 %   Where the file is not found, the \meta{str var} will be empty.
 %   \begin{texnote}
-%     The \XeTeX{} engine provides no way to implement this function.
+%     Currently this is not available with \XeTeX{}.
 %   \end{texnote}
 % \end{function}
 %
@@ -375,7 +362,7 @@
 %   (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|.
 %   Where the file is not found, the \meta{str var} will be empty.
 %   \begin{texnote}
-%     The \XeTeX{} engine provides no way to implement this function.
+%     Currently this is not available with \XeTeX{}.
 %   \end{texnote}
 % \end{function}
 %
@@ -905,6 +892,24 @@
 %   \end{texnote}
 % \end{function}
 %
+% \begin{function}[added = 2018-07-27, EXP, pTF]
+%   {
+%     \sys_if_platform_unix:,
+%     \sys_if_platform_windows:
+%   }
+%   \begin{syntax}
+%     \cs{sys_if_platform_unix:TF} \Arg{true code} \Arg{false code}
+%   \end{syntax}
+%   Conditionals which allow platform-specific code to be used. The names
+%   follow the \Lua{} |os.type()| function, \emph{i.e.}~all Unix-like systems
+%   are |unix| (including Linux and MacOS).
+% \end{function}
+%
+% \begin{variable}[added = 2018-07-27]{\c_sys_platform_str}
+%   The current platform given as a lower case string: one of
+%   |unix|, |windows| or |unknown|.
+% \end{variable}
+%
 % \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
 %   This variable exposes the internal triple of the shell escape
 %   status.  The possible values are
@@ -1225,6 +1230,21 @@
 %   argument.
 % \end{function}
 %
+% \begin{function}[added = 2018-07-23]
+%   {
+%     \tl_set_from_shell:Nnn,  \tl_set_from_shell:cnn,
+%     \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn
+%   }
+%   \begin{syntax}
+%     \cs{tl_set_from_shell:Nnn} \meta{tl~var} \Arg{setup} \Arg{shell~command}
+%   \end{syntax}
+%   Defines \meta{tl} to the text returned by the \meta{shell command}.
+%   Category codes may need to be set appropriately via the \meta{setup}
+%   argument. If shell escape is disabled, the \meta{tl~var} will be empty.
+%   Note that quote characters (|"|) \emph{cannot} be used inside the
+%   \meta{shell command}.
+% \end{function}
+%
 % \begin{function}[EXP, added = 2016-12-06]
 %   {\tl_rand_item:N, \tl_rand_item:c, \tl_rand_item:n}
 %   \begin{syntax}
@@ -2164,10 +2184,10 @@
         \file_get_full_name:nN {#1} \l_@@_full_name_str
         \str_set:Nx #3
           {
-            \lua_now_x:n
+            \lua_now:e
               {
                 l3kernel.file#2
-                  ( " \lua_escape_x:n { \l_@@_full_name_str } " )
+                  ( " \lua_escape:e { \l_@@_full_name_str } " )
               }
           }
        }
@@ -2878,6 +2898,45 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\c_sys_platform_str}
+%   Detecting the platform on \LuaTeX{} is easy: for other engines, we use
+%   the fact that the two common cases have special null files. It is possible
+%   to probe further (see package \pkg{platform}), but that requires shell
+%   escape and seems unlikely to be useful.
+%    \begin{macrocode}
+\sys_if_engine_luatex:TF
+  {
+    \str_const:Nx \c_sys_platform_str
+      { \lua_now:n { tex.print(os.type) } }
+  }
+  {
+    \file_if_exist:nTF { nul: }
+      {
+        \file_if_exist:nF { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { windows } }
+      }
+      {
+        \file_if_exist:nT { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { unix } }
+      }
+  }
+\cs_if_exist:NF \c_sys_platform_str
+  { \str_const:Nn \c_sys_platform_str { unknown }  }
+%    \end{macrocode}
+% \end{variable}
+% \begin{macro}[pTF]{\sys_if_platform_unix:}
+% \begin{macro}[pTF]{\sys_if_platform_windows:}
+%   We can now set up the tests.
+%    \begin{macrocode}
+\clist_map_inline:nn { unix , windows }
+  {
+    \@@_const:nn { sys_if_platform_ #1 }
+      { \str_if_eq_p:Vn \c_sys_platform_str { #1 } }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
 %   Performs a check for whether shell escape is enabled.  The first set
 %   of functions returns true if either of restricted or unrestricted
@@ -2895,7 +2954,7 @@
 %
 % \begin{variable}{\c_@@_shell_stream_int}
 %   This is not needed for \LuaTeX{}: shell escape there isn't done using
-%   a \TeX{} interface
+%   a \TeX{} interface.
 %    \begin{macrocode}
 \sys_if_engine_luatex:F
   { \int_const:Nn \c_@@_shell_stream_int { 18 } }
@@ -2909,8 +2968,8 @@
   {
     \cs_new_protected:Npn \sys_shell_now:n #1
       {
-        \lua_now_x:n
-          { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+        \lua_now:e
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
       }
   }
   {
@@ -2928,8 +2987,8 @@
   {
     \cs_new_protected:Npn \sys_shell_shipout:n #1
       {
-        \lua_shipout_x:n
-          { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+        \lua_shipout_e:n
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
       }
   }
   {
@@ -3048,6 +3107,7 @@
 %   }
 % \begin{macro}{\@@_set_from_file:NNnn}
 % \begin{macro}{\@@_from_file_do:w}
+% \begin{macro}{\@@_set_from:nNNn}
 %   The approach here is similar to that for doing a rescan, and so the same
 %   internals can be reused. Thus the plan is to insert a pair of tokens of
 %   the same charcode but different catcodes after the file has been read.
@@ -3066,15 +3126,9 @@
     \str_if_empty:NTF \l_@@_file_name_str
       { \__kernel_file_missing:n {#4} }
       {
-        \group_begin:
-          \exp_args:No \tex_everyeof:D
-            { \c_@@_rescan_marker_tl \exp_not:N }
-          #3 \scan_stop:
-          \exp_after:wN \@@_from_file_do:w
-          \exp_after:wN \prg_do_nothing:
-            \tex_input:D \l_@@_file_name_str \scan_stop:
-        \exp_args:NNNo \group_end:
-        #1 #2 \l_@@_internal_a_tl
+        \exp_args:NV \@@_set_from:nNNn
+          \l_@@_file_name_str
+          #1 #2 {#3}
       }
   }
 \exp_args:Nno \use:nn
@@ -3081,10 +3135,23 @@
   { \cs_new_protected:Npn \@@_from_file_do:w #1 }
   { \c_@@_rescan_marker_tl }
   { \tl_set:No \l_@@_internal_a_tl {#1} }
+\cs_new_protected:Npn \@@_set_from:nNNn #1#2#3#4
+  {
+    \group_begin:
+      \exp_args:No \tex_everyeof:D
+        { \c_@@_rescan_marker_tl \exp_not:N }
+      #4 \scan_stop:
+      \exp_after:wN \@@_from_file_do:w
+      \exp_after:wN \prg_do_nothing:
+        \tex_input:D #1 \scan_stop:
+    \exp_args:NNNo \group_end:
+    #2 #3 \l_@@_internal_a_tl
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}
 %   {
@@ -3128,6 +3195,42 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{macro}
+%   {
+%     \tl_set_from_shell:Nnn, \tl_set_from_shell:cnn,
+%     \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn
+%   }
+% \begin{macro}{\@@_set_from_shell:NNnn}
+%   Setting using a shell is at this level just a slightly specialised file
+%   operation.
+%    \begin{macrocode}
+\cs_new_protected:Npn \tl_set_from_shell:Nnn
+  { \@@_set_from_shell:NNnn \tl_set:Nn }
+\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c }
+\cs_new_protected:Npn \tl_gset_from_shell:Nnn
+  { \@@_set_from_shell:NNnn \tl_gset:Nn }
+\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c }
+\cs_new_protected:Npn \@@_set_from_shell:NNnn #1#2#3#4
+  {
+    \sys_if_shell:TF
+      {
+        \tl_set:Nn \l_@@_internal_a_tl {#4}
+        \tl_if_in:NnTF \l_@@_internal_a_tl { " }
+          {
+            \__kernel_msg_error:nnx
+              { kernel } { quote-in-shell } {#4}
+          }
+          { \@@_set_from:nNNn { | " #4 " } #1 #2 {#3} }
+      }
+      { #1 #2 { } }
+  }
+\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
+  { Quotes~in~shell~command~'#1'. }
+  { Shell~commands~cannot~contain~quotes~("). }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \subsubsection{Unicode case changing}
 %
 % The mechanisms needed for case changing are somewhat involved, particularly

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -138,7 +138,7 @@
 \__kernel_deprecation_error:Nnn \str_case:onn
   { \str_case:onF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \str_case_x:nnn
-  { \str_case_x:nnF } { 2015-07-14 }
+  { \str_case_e:nnF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \tl_case:cnn
   { \tl_case:cnF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \tl_case:Nnn

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -77,7 +77,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 % \maketitle
 % \tableofcontents
 %
@@ -2191,7 +2191,7 @@
     \tl_greplace_all:Nno \g_@@_base_name_tl
       { ~ } { \c_catcode_other_space_tl }
     \seq_get:NN #1 \l_@@_tmpa_tl
-    \str_if_eq_x:nnTF { \l_@@_tmpa_tl } { \scan_stop: }
+    \str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: }
       {
         \seq_gclear:N \g_@@_variants_seq
         \@@_names_typeset_auxii:x { \g_@@_base_name_tl }
@@ -2296,7 +2296,7 @@
         #1
           {
             \l_@@_tmpa_tl
-            \str_if_eq_x:nnF { \l_@@_tmpb_tl } { \scan_stop: }
+            \str_if_eq:VnF \l_@@_tmpb_tl { \scan_stop: }
               { : \l_@@_tmpb_tl }
             \bool_if:NT \l_@@_macro_TF_bool { TF }
           }
@@ -3983,7 +3983,7 @@
           \tl_if_empty:nTF {#3}
             { { } { } { } }
             {
-              \str_if_eq_x:nnTF {#3} { TeX }
+              \str_if_eq:nnTF {#3} { TeX }
                 {
                   { TeX~and~LaTeX2e }
                   { \string\TeX{}~and~\string\LaTeXe{} }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -481,23 +481,23 @@
 %<*package>
 \ProvidesExplFile
 %<*dvipdfmx>
-  {l3dvidpfmx.def}{2018-06-14}{}
+  {l3dvidpfmx.def}{2018-08-23}{}
   {L3 Experimental driver: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3dvips.def}{2018-06-14}{}
+  {l3dvips.def}{2018-08-23}{}
   {L3 Experimental driver: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3dvisvgm.def}{2018-06-14}{}
+  {l3dvisvgm.def}{2018-08-23}{}
   {L3 Experimental driver: dvisvgm}
 %</dvisvgm>
 %<*pdfmode>
-  {l3pdfmode.def}{2018-06-14}{}
+  {l3pdfmode.def}{2018-08-23}{}
   {L3 Experimental driver: PDF mode}
 %</pdfmode>
 %<*xdvipdfmx>
-  {l3xdvidpfmx.def}{2018-06-14}{}
+  {l3xdvidpfmx.def}{2018-08-23}{}
   {L3 Experimental driver: xdvipdfmx}
 %</xdvipdfmx>
 %</package>
@@ -514,14 +514,14 @@
 %     takes most of the same code.
 % \end{itemize}
 %
-% \begin{macro}{\@@_literal_x:n, \@@_literal:n, \@@_literal:x}
+% \begin{macro}{\@@_literal:e, \@@_literal:n, \@@_literal:x}
 %  The one shared function for all drivers is access to the basic
 %  \tn{special} primitive: it has slightly odd expansion behaviour
 %  so a wrapper is provided.
 %    \begin{macrocode}
-\cs_new_eq:NN \@@_literal_x:n \tex_special:D
+\cs_new_eq:NN \@@_literal:e \tex_special:D
 \cs_new_protected:Npn \@@_literal:n #1
-  { \@@_literal_x:n { \exp_not:n {#1} } }
+  { \@@_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \@@_literal:n { x }
 %    \end{macrocode}
 % \end{macro}
@@ -695,7 +695,7 @@
 % \end{variable}
 %
 % \begin{macro}{\driver_color_cmyk:nnnn, \@@_color_cmyk:nnnn}
-% \begin{macro}{\driver_color_gray:n, @@_color_gray:n}
+% \begin{macro}{\driver_color_gray:n, \@@_color_gray:n}
 % \begin{macro}{\driver_color_rgb:nnn, \@@_color_rgb:nnn}
 % \begin{macro}{\driver_color_spot:nn}
 % \begin{macro}{\@@_color_select:n, \@@_color_select:x}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -255,7 +255,7 @@
     \tex_everyjob:D \exp_after:wN
       {
         \tex_the:D \tex_everyjob:D
-        \lua_now_x:n { require("l3format.lua") }
+        \lua_now:n { require("l3format.lua") }
       }
   }
 \use:x

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1238,7 +1238,7 @@
 %
 % \subsection{Fast string comparison}
 %
-% \begin{macro}{\@@_str_if_eq_x:nn}
+% \begin{macro}{\@@_str_if_eq:nn}
 %   A private version of the low-level string comparison function. As
 %   the nature of the arguments is restricted and as speed is of the essence,
 %   this version does not seek to deal with |#| tokens.
@@ -1245,10 +1245,10 @@
 %   No \pkg{l3sys} or \pkg{l3luatex} just yet so we have to define in terms of
 %   primitives.
 %    \begin{macrocode}
-\cs_new:Npn \@@_str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \@@_str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
 \sys_if_engine_luatex:T
   {
-    \cs_set:Npn \@@_str_if_eq_x:nn #1#2
+    \cs_set:Npn \@@_str_if_eq:nn #1#2
       {
         \tex_directlua:D
           {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -995,7 +995,7 @@
 \cs_new:Npn \@@_pow_normal_o:ww
     \s_@@ \@@_chk:w 1 #1#2#3; \s_@@ \@@_chk:w #4#5
   {
-    \if_int_compare:w \@@_str_if_eq_x:nn { #2 #3 }
+    \if_int_compare:w \@@_str_if_eq:nn { #2 #3 }
               { 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f:
       \if_int_compare:w #4 #1 = 32 \exp_stop_f:
         \exp_after:wN \@@_case_return_ii_o:ww

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1752,7 +1752,7 @@
     \if_catcode:w \scan_stop: \exp_not:N #1
       \if_meaning:w \scan_stop: #1
         \if_int_compare:w
-            \@@_str_if_eq_x:nn { \s_@@ } { \exp_not:N #1 }
+            \@@_str_if_eq:nn { \s_@@ } { \exp_not:N #1 }
             = 0 \exp_stop_f:
           0
           \__kernel_msg_expandable_error:nnn
@@ -1766,7 +1766,7 @@
         \fi:
       \else:
         \if_int_compare:w
-            \@@_str_if_eq_x:nn { \int_value:w #1 } { \tex_the:D #1 }
+            \@@_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 }
             = 0 \exp_stop_f:
           \int_value:w #1
         \else:
@@ -2260,7 +2260,7 @@
   {
     \if_catcode:w \scan_stop: \exp_not:N #2
       \if_int_compare:w
-          \@@_str_if_eq_x:nn { \s_@@_mark } { \exp_not:N #2 }
+          \@@_str_if_eq:nn { \s_@@_mark } { \exp_not:N #2 }
           = 0 \exp_stop_f:
         \exp_after:wN \exp_after:wN
         \exp_after:wN \@@_parse_infix_mark:NNN

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -47,7 +47,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -136,6 +136,14 @@
 %   the \meta{follow-on}.
 % \end{function}
 %
+% \begin{function}{\__kernel_deprecation_code:nn}
+%   \begin{syntax}
+%     \cs{__kernel_deprecation_code:nn} \Arg{error code} \Arg{working code}
+%   \end{syntax}
+%   Stores both an \meta{error} and \meta{working} definition for given material
+%   such that they can be exchanged by \cs{debug_on:} and \cs{debug_off:}.
+% \end{function}
+%
 % \begin{function}{\__kernel_if_debug:TF}
 %   \begin{syntax}
 %     \cs{__kernel_if_debug:TF} \Arg{true code} \Arg{false code}
@@ -394,6 +402,14 @@
 %   because that would interfere with the action of the conditional.
 % \end{function}
 %
+% \begin{function}{\__kernel_patch_deprecation:nnNNpn}
+%   \begin{syntax}
+%     \cs{__kernel_patch_deprecation:nnNNpn} \Arg{before} \Arg{after}
+%     \meta{definition} \meta{function}\meta{parameters} \Arg{type} \Arg{code}
+%   \end{syntax}
+%   Similar to \cs{__kernel_patch:nnNNpn} for deprecated functions.
+% \end{function}
+%
 % \begin{function}
 %   {\__kernel_patch_args:nNNpn, \__kernel_patch_conditional_args:nNNpnn}
 %   \begin{syntax}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1459,11 +1459,8 @@
     \cs_if_exist:cTF
       { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
       {
-        \str_if_eq_x:nnTF
-          {
-            \exp_not:v
-              { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
-          }
+        \str_if_eq:vnTF
+          { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
           { choice }
           {
             \__kernel_msg_error:nnxx { kernel } { nested-choice-key }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -56,7 +56,7 @@
 %
 % \section{Breaking out to \Lua{}}
 %
-% \begin{function}[EXP, added = 2015-06-29]{\lua_now_x:n, \lua_now:n}
+% \begin{function}[EXP, added = 2018-06-18]{\lua_now:n, \lua_now:e}
 %   \begin{syntax}
 %     \cs{lua_now:n} \Arg{token list}
 %   \end{syntax}
@@ -67,18 +67,14 @@
 %   Each \cs{lua_now:n} block is treated by \Lua{} as a separate chunk.
 %   The \Lua{} interpreter executes the \meta{\Lua{} input} immediately,
 %   and in an expandable manner.
-%
-%   In the case of the \cs{lua_now_x:n} version the input is fully expanded
-%   by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains
-%   fully expandable.
 %   \begin{texnote}
-%     \cs{lua_now_x:n} is a macro wrapper around \tn{directlua}: when
+%     \cs{lua_now:e} is a macro wrapper around \tn{directlua}: when
 %     \LuaTeX{} is in use two expansions are required to yield the
 %     result of the \Lua{} code.
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[added = 2015-06-30]{\lua_shipout_x:n, \lua_shipout:n}
+% \begin{function}[added = 2018-06-18]{\lua_shipout_e:n, \lua_shipout:n}
 %   \begin{syntax}
 %     \cs{lua_shipout:n} \Arg{token list}
 %   \end{syntax}
@@ -92,8 +88,8 @@
 %   page-building routine: no \TeX{} expansion of the \meta{\Lua{} input}
 %   will occur at this stage.
 %
-%   In the case of the \cs{lua_shipout_x:n} version the input is fully
-%   expanded by \TeX{} in an \texttt{x}-type manner during the shipout
+%   In the case of the \cs{lua_shipout_e:n} version the input is fully
+%   expanded by \TeX{} in an \texttt{e}-type manner during the shipout
 %   operation.
 %   \begin{texnote}
 %     At a \TeX{} level, the \meta{\Lua{} input} is stored as a
@@ -101,7 +97,7 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[EXP, added = 2015-06-29]{\lua_escape_x:n, \lua_escape:n}
+% \begin{function}[EXP, added = 2015-06-29]{\lua_escape:n, \lua_escape:e}
 %   \begin{syntax}
 %     \cs{lua_escape:n} \Arg{token list}
 %   \end{syntax}
@@ -110,12 +106,8 @@
 %   and carriage returns are escaped. This is done by prepending an extra
 %   token consisting of a backslash with category code~$12$, and for the line
 %   endings, converting them to |\n| and |\r|, respectively.
-%
-%   In the case of the \cs{lua_escape_x:n} version the input is fully expanded
-%   by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains
-%   fully expandable.
 %   \begin{texnote}
-%     \cs{lua_escape_x:n} is a macro wrapper around \tn{luaescapestring}:
+%     \cs{lua_escape:e} is a macro wrapper around \tn{luaescapestring}:
 %     when \LuaTeX{} is in use two expansions are required to yield the
 %     result of the \Lua{} code.
 %   \end{texnote}
@@ -197,15 +189,15 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-%<@@=luatex>
+%<@@=lua>
 %    \end{macrocode}
 %
-% \begin{macro}[EXP]{\@@_escape_x:n, \@@_now_x:n, \@@_shipout_x:n}
+% \begin{macro}[EXP]{\@@_escape:n, \@@_now:n, \@@_shipout:n}
 %   Copies of primitives.
 %    \begin{macrocode}
-\cs_new_eq:NN \@@_escape_x:n  \tex_luaescapestring:D
-\cs_new_eq:NN \@@_now_x:n     \tex_directlua:D
-\cs_new_eq:NN \@@_shipout_x:n \tex_latelua:D
+\cs_new_eq:NN \@@_escape:n  \tex_luaescapestring:D
+\cs_new_eq:NN \@@_now:n     \tex_directlua:D
+\cs_new_eq:NN \@@_shipout:n \tex_latelua:D
 %    \end{macrocode}
 % \end{macro}
 %
@@ -212,31 +204,30 @@
 % These functions are set up in \pkg{l3str} for bootstrapping: we want to
 % replace them with a \enquote{proper} version at this stage, so clean up.
 %    \begin{macrocode}
-\cs_undefine:N \lua_escape_x:n
-\cs_undefine:N \lua_now_x:n
+\cs_undefine:N \lua_escape:e
+\cs_undefine:N \lua_now:e
 %    \end{macrocode}
 %
-% \begin{macro}[EXP]{\lua_now_x:n, \lua_now:n}
-% \begin{macro}{\lua_shipout_x:n, \lua_shipout:n}
-% \begin{macro}[EXP]{\lua_escape_x:n, \lua_escape:n}
+% \begin{macro}[EXP]{\lua_now:n, \lua_now:e}
+% \begin{macro}{\lua_shipout_e:n, \lua_shipout:n}
+% \begin{macro}[EXP]{\lua_escape:n, \lua_escape:e}
 %   Wrappers around the primitives. As with engines other than \LuaTeX{}
 %   these have to be macros, we give them the same status in all cases.
 %   When \LuaTeX{} is not in use, simply give an error message/
 %    \begin{macrocode}
-\cs_new:Npn \lua_now_x:n #1 { \@@_now_x:n {#1} }
-\cs_new:Npn \lua_now:n #1   { \lua_now_x:n { \exp_not:n {#1} } }
-\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shiphout_x:n {#1} }
+\cs_new:Npn \lua_now:e #1 { \@@_now:n {#1} }
+\cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } }
+\cs_new_protected:Npn \lua_shipout_e:n #1 { \@@_shiphout:n {#1} }
 \cs_new_protected:Npn \lua_shipout:n #1
-  { \lua_shipout_x:n { \exp_not:n {#1} } }
-\cs_new:Npn \lua_escape_x:n #1 { \@@_escape_x:n {#1} }
-\cs_new:Npn \lua_escape:n #1 { \lua_escape_x:n { \exp_not:n {#1} } }
+  { \lua_shipout_e:n { \exp_not:n {#1} } }
+\cs_new:Npn \lua_escape:e #1 { \@@_escape:n {#1} }
+\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } }
 \sys_if_engine_luatex:F
   {
     \clist_map_inline:nn
       {
-        \use_x:n ,
-        \lua_escape_x:n , \lua_escape:n ,
-        \lua_now_x:n , \lua_now:n
+        \lua_escape:n , \lua_escape:e ,
+        \lua_now:n , \lua_now:e
       }
       {
         \cs_set:Npn #1 ##1
@@ -246,7 +237,7 @@
           }
       }
     \clist_map_inline:nn
-      { \lua_shipout_x:n , \lua_shipout:n }
+      { \lua_shipout_e:n , \lua_shipout:n }
       {
         \cs_set_protected:Npn #1 ##1
           {
@@ -271,7 +262,23 @@
   }
 %    \end{macrocode}
 %
+% \subsection{Deprecated functions}
+%
+% \begin{macro}[EXP, deprecated = 2019-12-31]{\lua_now_x:n, \lua_escape_x:n}
+% \begin{macro}[deprecated = 2019-12-31]{\lua_shipout_x:n}
+%   For removal after 2019-12-31.
 %    \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_now:e }
+\cs_new:Npn \lua_now_x:n #1 { \@@_now:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_escape:e }
+\cs_new:Npn \lua_escape_x:n #1 { \@@_escape:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n }
+\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shipout:n {#1} }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%    \begin{macrocode}
 %</tex>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1429,7 +1429,7 @@
     \seq_put_right:Nn \l_@@_class_loop_seq {#1}
     \prop_get:cnNT { l_@@_redirect_ #1 _prop } {#3} \l_@@_class_tl
       {
-        \str_if_eq_x:nnF { \l_@@_class_tl } {#1}
+        \str_if_eq:VnF \l_@@_class_tl {#1}
           {
             \tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl
               {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 % }
 %
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -861,7 +861,7 @@
   }
 \cs_new:Npn \@@_item_Nn:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4
   {
-    \str_if_eq_x:nnTF {#1} {#3}
+    \str_if_eq:eeTF {#1} {#3}
       { \prg_break:n { \exp_not:n {#4} } }
       { \@@_item_Nn:nwwn {#1} }
   }
@@ -1034,10 +1034,10 @@
 %   but \cs{@@_split:NnTF} is non-expandable.
 %
 %   Instead, the key is compared to each key in turn using
-%   \cs{str_if_eq_x:nn}, which is expandable.  To terminate the mapping,
+%   \cs{str_if_eq:ee}, which is expandable.  To terminate the mapping,
 %   we append to the property list the key that is searched for.  This
 %   second \cs{tl_to_str:n} is not expanded at the start, but only when
-%   included in the \cs{str_if_eq_x:nn}.  It cannot make the breaking
+%   included in the \cs{str_if_eq:ee}.  It cannot make the breaking
 %   mechanism choke, because the arbitrary token list material is
 %   enclosed in braces.  The second argument of \cs{@@_if_in:nwwn} is
 %   most often empty.  When the \meta{key} is found in the list,
@@ -1058,7 +1058,7 @@
   }
 \cs_new:Npn \@@_if_in:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4
   {
-    \str_if_eq_x:nnTF {#1} {#3}
+    \str_if_eq:eeTF {#1} {#3}
       { \@@_if_in:N }
       { \@@_if_in:nwwn {#1} }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1612,7 +1612,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_escape_x_test:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break } { ; }
+    \str_if_eq:nnTF {#1} { break } { ; }
       {
         \if_charcode:w \c_space_token #1
           \exp_after:wN \@@_escape_x_test:N
@@ -1640,7 +1640,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_escape_x:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break } { ; }
+    \str_if_eq:nnTF {#1} { break } { ; }
       {
         \@@_hexadecimal_use:NTF #1
           { ; \@@_escape_loop:N }
@@ -1657,7 +1657,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_escape_x_loop:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break }
+    \str_if_eq:nnTF {#1} { break }
       { ; \@@_escape_x_loop_error:n { } {#1} }
       {
         \@@_hexadecimal_use:NTF #1
@@ -2421,7 +2421,7 @@
   }
 \cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2
   {
-    \str_case_x:nnF { #1 #2 }
+    \str_case_e:nnF { #1 #2 }
       {
         { \@@_compile_special:N \c_right_brace_str }
           {
@@ -6468,7 +6468,7 @@
   { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
   {
     LaTeX~
-    \str_if_eq_x:nnTF { } {#2}
+    \str_if_eq:eeTF { } {#2}
       { reached~the~end~of~the~string~ }
       { encountered~an~escaped~alphanumeric~character '\iow_char:N\\#2'~ }
     when~parsing~the~argument~of~an~
@@ -6628,7 +6628,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_msg_repeated:nnN #1#2#3
   {
-    \str_if_eq_x:nnF { #1 #2 } { 1 0 }
+    \str_if_eq:eeF { #1 #2 } { 1 0 }
       {
         , ~ repeated ~
         \int_case:nnF {#2}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1942,7 +1942,7 @@
 %    \begin{macrocode}
 \prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF }
   {
-    \str_if_eq_x:nnTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
+    \str_if_eq:eeTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
        { \prg_return_true: }
        { \prg_return_false: }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -104,8 +104,11 @@
 %   initially empty.
 % \end{function}
 %
-% \begin{function}[added = 2015-09-18]
-%   {\str_const:Nn, \str_const:Nx, \str_const:cn, \str_const:cx}
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
+%   {
+%     \str_const:Nn, \str_const:NV, \str_const:Nx,
+%     \str_const:cn, \str_const:cV, \str_const:cx
+%   }
 %   \begin{syntax}
 %     \cs{str_const:Nn} \meta{str~var} \Arg{token list}
 %   \end{syntax}
@@ -161,10 +164,12 @@
 %
 % \section{Adding data to string variables}
 %
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_set:Nn,  \str_set:Nx,  \str_set:cn,  \str_set:cx,
-%     \str_gset:Nn, \str_gset:Nx, \str_gset:cn, \str_gset:cx
+%     \str_set:Nn,  \str_set:NV, \str_set:Nx,
+%     \str_set:cn,  \str_set:cV, \str_set:cx,
+%     \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
+%     \str_gset:cn, \str_gset:cV, \str_gset:cx
 %   }
 %   \begin{syntax}
 %     \cs{str_set:Nn} \meta{str var} \Arg{token list}
@@ -173,12 +178,12 @@
 %   result in \meta{str var}.
 % \end{function}
 %
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_put_left:Nn,  \str_put_left:Nx,
-%     \str_put_left:cn,  \str_put_left:cx,
-%     \str_gput_left:Nn, \str_gput_left:Nx,
-%     \str_gput_left:cn, \str_gput_left:cx
+%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
+%     \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
+%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
+%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx
 %   }
 %   \begin{syntax}
 %     \cs{str_put_left:Nn} \meta{str var} \Arg{token list}
@@ -188,12 +193,12 @@
 %     var} are not automatically converted to a string.
 % \end{function}
 %
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_put_right:Nn,  \str_put_right:Nx,
-%     \str_put_right:cn,  \str_put_right:cx,
-%     \str_gput_right:Nn, \str_gput_right:Nx,
-%     \str_gput_right:cn, \str_gput_right:cx
+%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
+%     \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
+%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
+%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
 %   }
 %   \begin{syntax}
 %     \cs{str_put_right:Nn} \meta{str var} \Arg{token list}
@@ -302,10 +307,11 @@
 %   in the same order.
 % \end{function}
 %
-% \begin{function}[EXP,pTF]
+% \begin{function}[EXP,pTF, updated  = 2018-06-18]
 %   {
 %     \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:no,
-%     \str_if_eq:nV, \str_if_eq:VV
+%     \str_if_eq:nV, \str_if_eq:VV, \str_if_eq:vn, \str_if_eq:nv,
+%     \str_if_eq:ee
 %   }
 %   \begin{syntax}
 %     \cs{str_if_eq_p:nn} \Arg{tl_1} \Arg{tl_2}
@@ -321,21 +327,6 @@
 %   is logically \texttt{true}.
 % \end{function}
 %
-% \begin{function}[EXP,pTF, added = 2012-06-05]{\str_if_eq_x:nn}
-%   \begin{syntax}
-%     \cs{str_if_eq_x_p:nn} \Arg{tl_1} \Arg{tl_2}
-%     \cs{str_if_eq_x:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
-%   \end{syntax}
-%   Fully expands the two \meta{token lists} and converts them to \meta{strings}, then
-%   compares these on a character by character basis:
-%   it is \texttt{true} if the two \meta{strings} contain the same
-%   characters in the same order. Thus for example
-%   \begin{verbatim}
-%     \str_if_eq_x_p:nn { abc } { \tl_to_str:n { abc } }
-%   \end{verbatim}
-%   is logically \texttt{true}.
-% \end{function}
-%
 % \begin{function}[TF, added = 2017-10-08]{\str_if_in:Nn, \str_if_in:cn}
 %   \begin{syntax}
 %     \cs{str_if_in:NnTF} \meta{str~var} \Arg{token list} \Arg{true code} \Arg{false code}
@@ -378,9 +369,9 @@
 %   available.
 % \end{function}
 %
-% \begin{function}[added = 2013-07-24, EXP, noTF]{\str_case_x:nn}
+% \begin{function}[added = 2018-06-19, EXP, noTF]{\str_case_e:nn}
 %   \begin{syntax}
-%     \cs{str_case_x:nnTF} \Arg{test string} \\
+%     \cs{str_case_e:nnTF} \Arg{test string} \\
 %     ~~|{| \\
 %     ~~~~\Arg{string case_1} \Arg{code case_1} \\
 %     ~~~~\Arg{string case_2} \Arg{code case_2} \\
@@ -399,7 +390,7 @@
 %   cases are matched, the \meta{true code} is also inserted into the
 %   input stream (after the code for the appropriate case), while if none
 %   match then the \meta{false code} is inserted. The function
-%   \cs{str_case_x:nn}, which does nothing if there is no match, is also
+%   \cs{str_case_e:nn}, which does nothing if there is no match, is also
 %   available.
 %   The \meta{test string} is expanded in each comparison, and must
 %   always yield the same result: for example, random numbers must
@@ -868,20 +859,20 @@
 %
 % \begin{macro}
 %   {
-%     \str_set:Nn, \str_set:Nx,
-%     \str_set:cn, \str_set:cx,
-%     \str_gset:Nn, \str_gset:Nx,
-%     \str_gset:cn, \str_gset:cx,
-%     \str_const:Nn, \str_const:Nx,
-%     \str_const:cn, \str_const:cx,
-%     \str_put_left:Nn, \str_put_left:Nx,
-%     \str_put_left:cn, \str_put_left:cx,
-%     \str_gput_left:Nn, \str_gput_left:Nx,
-%     \str_gput_left:cn, \str_gput_left:cx,
-%     \str_put_right:Nn, \str_put_right:Nx,
-%     \str_put_right:cn, \str_put_right:cx,
-%     \str_gput_right:Nn, \str_gput_right:Nx,
-%     \str_gput_right:cn, \str_gput_right:cx,
+%     \str_set:Nn, \str_set:NV, \str_set:Nx,
+%     \str_set:cn, \str_set:cV, \str_set:cx,
+%     \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
+%     \str_gset:cn, \str_gset:cV, \str_gset:cx,
+%     \str_const:Nn, \str_const:NV, \str_const:Nx,
+%     \str_const:cn, \str_const:cV, \str_const:cx,
+%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
+%     \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
+%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
+%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx,
+%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
+%     \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
+%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
+%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
 %   }
 %   Simply convert the token list inputs to \meta{strings}.
 %    \begin{macrocode}
@@ -895,7 +886,7 @@
               \exp_not:c { tl_ #1 :Nx } ##1
                 { \exp_not:N \tl_to_str:n {##2} }
             }
-          \cs_generate_variant:cn { str_ #1 :Nn } { Nx , cn , cx }
+          \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
           \@@_tmp:n
         }
     }
@@ -1029,8 +1020,8 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\@@_if_eq_x:nn}
-% \begin{macro}[EXP]{\@@_escape_x:n}
+% \begin{macro}[EXP]{\@@_if_eq:nn}
+% \begin{macro}[EXP]{\@@_escape:n}
 %   String comparisons rely on the primitive \cs[index=pdfstrcmp]{(pdf)strcmp} if available:
 %   \LuaTeX{} does not have it, so emulation is required. As the net result
 %   is that we do not \emph{always} use the primitive, the correct approach
@@ -1039,30 +1030,30 @@
 %   the necessary Lua code is loaded in \pkg{l3boostrap}.
 %   The need to detokenize and force
 %   expansion of input arises from the case where a |#| token is used in the
-%   input, \emph{e.g.}~|\__str_if_eq_x:nn {#} { \tl_to_str:n {#} }|, which
+%   input, \emph{e.g.}~|\__str_if_eq:nn {#} { \tl_to_str:n {#} }|, which
 %   otherwise would fail as \cs{tex_luaescapestring:D} does not double
 %   such tokens.
 %    \begin{macrocode}
-\cs_new:Npn \@@_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \@@_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
 \cs_if_exist:NT \tex_luatexversion:D
    {
-     \cs_set_eq:NN \lua_escape_x:n \tex_luaescapestring:D
-     \cs_set_eq:NN \lua_now_x:n    \tex_directlua:D
-     \cs_set:Npn \@@_if_eq_x:nn #1#2
+     \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D
+     \cs_set_eq:NN \lua_now:e    \tex_directlua:D
+     \cs_set:Npn \@@_if_eq:nn #1#2
        {
-          \lua_now_x:n
+          \lua_now:e
             {
               l3kernel.strcmp
                 (
-                  " \@@_escape_x:n {#1} " ,
-                  " \@@_escape_x:n {#2} "
+                  " \@@_escape:n {#1} " ,
+                  " \@@_escape:n {#2} "
                 )
             }
        }
-     \cs_new:Npn \@@_escape_x:n #1
+     \cs_new:Npn \@@_escape:n #1
        {
-         \lua_escape_x:n
-           { \__kernel_tl_to_str:w \use_x:n { {#1} } }
+         \lua_escape:e
+           { \__kernel_tl_to_str:w \use:e { {#1} } }
        }
    }
 %    \end{macrocode}
@@ -1073,7 +1064,7 @@
 %   {
 %     \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:nV,
 %     \str_if_eq:no, \str_if_eq:VV,
-%     \str_if_eq_x:nn
+%     \str_if_eq:ee
 %   }
 %   Modern engines provide a direct way of comparing two token lists,
 %   but returning a number. This set of conditionals therefore make life
@@ -1083,15 +1074,15 @@
 \prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF }
   {
     \if_int_compare:w
-      \@@_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
+      \@@_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
       = 0 \exp_stop_f:
       \prg_return_true: \else: \prg_return_false: \fi:
   }
 \prg_generate_conditional_variant:Nnn \str_if_eq:nn
-  { V , o , nV , no , VV } { p , T , F , TF }
-\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF }
+  { V , v , o , nV , no , VV , nv } { p , T , F , TF }
+\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF }
   {
-    \if_int_compare:w \@@_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f:
+    \if_int_compare:w \@@_if_eq:nn {#1} {#2} = 0 \exp_stop_f:
       \prg_return_true: \else: \prg_return_false: \fi:
   }
 %    \end{macrocode}
@@ -1105,7 +1096,7 @@
 \prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F }
   {
     \if_int_compare:w
-      \@@_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
+      \@@_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
       = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi:
   }
 \prg_generate_conditional_variant:Nnn \str_if_eq:NN
@@ -1137,10 +1128,10 @@
 % \end{macro}
 %
 % \begin{macro}[EXP, noTF]
-%   {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_x:nn}
-% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_x:nnTF}
+%   {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_e:nn}
+% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF}
 % \begin{macro}[EXP]
-%   {\@@_case:nw, \@@_case_x:nw, \@@_case_end:nw}
+%   {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw}
 %   Much the same as \cs[index=tl_case:nn]{tl_case:nn(TF)} here:
 %   just a change in the internal comparison.
 %    \begin{macrocode}
@@ -1175,33 +1166,33 @@
       { \@@_case_end:nw {#3} }
       { \@@_case:nw {#1} }
   }
-\cs_new:Npn \str_case_x:nn #1#2
+\cs_new:Npn \str_case_e:nn #1#2
   {
     \exp:w
-    \@@_case_x:nnTF {#1} {#2} { } { }
+    \@@_case_e:nnTF {#1} {#2} { } { }
   }
-\cs_new:Npn \str_case_x:nnT #1#2#3
+\cs_new:Npn \str_case_e:nnT #1#2#3
   {
     \exp:w
-    \@@_case_x:nnTF {#1} {#2} {#3} { }
+    \@@_case_e:nnTF {#1} {#2} {#3} { }
   }
-\cs_new:Npn \str_case_x:nnF #1#2
+\cs_new:Npn \str_case_e:nnF #1#2
   {
     \exp:w
-    \@@_case_x:nnTF {#1} {#2} { }
+    \@@_case_e:nnTF {#1} {#2} { }
   }
-\cs_new:Npn \str_case_x:nnTF #1#2
+\cs_new:Npn \str_case_e:nnTF #1#2
   {
     \exp:w
-    \@@_case_x:nnTF {#1} {#2}
+    \@@_case_e:nnTF {#1} {#2}
   }
-\cs_new:Npn \@@_case_x:nnTF #1#2#3#4
-  { \@@_case_x:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
-\cs_new:Npn \@@_case_x:nw #1#2#3
+\cs_new:Npn \@@_case_e:nnTF #1#2#3#4
+  { \@@_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
+\cs_new:Npn \@@_case_e:nw #1#2#3
   {
-    \str_if_eq_x:nnTF {#1} {#2}
+    \str_if_eq:eeTF {#1} {#2}
       { \@@_case_end:nw {#3} }
-      { \@@_case_x:nw {#1} }
+      { \@@_case_e:nw {#1} }
   }
 \cs_new:Npn \@@_case_end:nw #1#2#3 \q_mark #4#5 \q_stop
   { \exp_end: #1 #4 }
@@ -1921,7 +1912,33 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Deprecated functions}
+%
+% \begin{macro}[EXP, deprecated = 2019-12-31, noTF]{\str_case_x:nn}
+% \begin{macro}[EXP, deprecated = 2019-12-31, pTF]{\str_if_eq_x:nn}
+%   For removal after 2019-12-31.
 %    \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nn }
+\cs_new:Npn \str_case_x:nn { \str_case_e:nn }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnT }
+\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnF }
+\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnTF }
+\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq_p:ee }
+\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeT }
+\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeF }
+\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF }
+\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%    \begin{macrocode}
 %</initex|package>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -237,7 +237,7 @@
 \tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } }
   {
     \@@_const:nn { sys_if_engine_ #1 }
-      { \str_if_eq_x_p:nn \c_sys_engine_str {#1} }
+      { \str_if_eq_p:Vn \c_sys_engine_str {#1} }
   }
 %    \end{macrocode}
 % \end{variable}
@@ -261,9 +261,9 @@
       { dvi }
   }
 \@@_const:nn { sys_if_output_dvi }
-  { \str_if_eq_x_p:nn \c_sys_output_str { dvi } }
+  { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
 \@@_const:nn { sys_if_output_pdf }
-  { \str_if_eq_x_p:nn \c_sys_output_str { pdf } }
+  { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
 %    \end{macrocode}
 % \end{variable}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -1436,7 +1436,7 @@
           {
             #3
             \exp_after:wN \exp_after:wN \exp_after:wN \exp_end:
-            \lua_now_x:n { l3kernel.charcat(#1, #2) }
+            \lua_now:e { l3kernel.charcat(#1, #2) }
           }
       }
       {
@@ -1855,7 +1855,7 @@
       ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop
   }
       {
-        \str_if_eq_x:nnTF { #2 } { cro }
+        \str_if_eq:nnTF { #2 } { cro }
           { \prg_return_true: }
           { \prg_return_false: }
       }
@@ -1957,7 +1957,7 @@
 %   function cannot be defined on the fly because tests must remain
 %   expandable): instead the first argument of the auxiliary (plus the
 %   delimiter to avoid complications with trailing spaces) is compared
-%   using \cs{str_if_eq_x:nnTF} to the result of applying
+%   using \cs{str_if_eq:eeTF} to the result of applying
 %   \cs{token_to_str:N} to a control sequence.  Second, the
 %   \tn{meaning} of primitives such as \tn{dimen} or \tn{dimendef}
 %   starts in the same way as registers such as
@@ -2005,7 +2005,7 @@
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
               }
-            \exp_not:N \str_if_eq_x:nnTF
+            \exp_not:N \str_if_eq:eeTF
               {
                 \exp_not:N \exp_after:wN
                 \exp_not:c { @@_delimit_by_ #2 :w }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -163,7 +163,7 @@
         {
           \tl_if_blank:nF {#1}
             {
-              \str_if_eq_x:nnF { \tl_head:n {#1} } { \c_hash_str }
+              \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str }
                 { \@@_data_auxi:w #1 \q_stop }
             }
         }
@@ -205,9 +205,9 @@
         {
           \tl_if_blank:nF {#1}
             {
-              \str_if_eq_x:nnTF { \tl_head:n {#1} } { \c_hash_str }
+              \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str }
                 {
-                  \str_if_eq_x:nnT
+                  \str_if_eq:eeT
                     {#1}
                     { \c_hash_str \c_space_tl Conditional~Mappings }
                     { \ior_map_break: }

Modified: trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -60,7 +60,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -131,7 +131,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2018-05-12}{}
+\ProvidesExplPackage{l3keys2e}{2018-08-23}{}
   {LaTeX2e option processing using LaTeX3 keys}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -62,7 +62,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -161,7 +161,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfp}{2018-05-12}{}
+\ProvidesExplPackage{xfp}{2018-08-23}{}
   {L3 Floating point unit}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -533,7 +533,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2018-05-12}{}
+\ProvidesExplPackage{xfrac}{2018-08-23}{}
   {L3 Experimental split-level fractions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -67,7 +67,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -818,7 +818,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xparse}{2018-05-12}{}
+\ProvidesExplPackage{xparse}{2018-08-23}{}
   {L3 Experimental document command parser}
 %    \end{macrocode}
 %
@@ -2630,7 +2630,7 @@
             \tl_if_blank:oTF { \use_none:n ##1 }
               { \@@_add_arg:o { \use_none:n ##1 } }
               {
-                \str_if_eq_x:nnTF
+                \str_if_eq:eeTF
                   { \exp_not:o { \use_none:n ##1 } }
                   { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } }
                   { \@@_add_arg:o { \use_ii:nn ##1 } }
@@ -3326,7 +3326,7 @@
 %   hence are not considered as characters.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_grab_v_token_if_char:NTF #1
-  { \str_if_eq_x:nnTF { } { \str_tail:n {#1} } }
+  { \str_if_eq:eeTF { } { \str_tail:n {#1} } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3456,7 +3456,7 @@
         \tl_if_blank:oTF { \use_none:nn #1#2 }
           { \@@_put_arg_expandable:ow { \use_none:nn #1#2 } }
           {
-            \str_if_eq_x:nnTF
+            \str_if_eq:eeTF
               { \exp_not:o { \use_none:nn #1#2 } }
               { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } }
               { \@@_put_arg_expandable:ow { \use_iii:nnn #1#2 } }
@@ -3511,7 +3511,7 @@
     \tl_if_blank:oTF { \use_none:n #4 }
       { \@@_put_arg_expandable:ow { \use_none:n #4 } }
       {
-        \str_if_eq_x:nnTF
+        \str_if_eq:eeTF
           { \exp_not:o { \use_none:n #4 } }
           { { \exp_not:o { \use_ii:nnn #4 \q_nil } } }
           { \@@_put_arg_expandable:ow { \use_ii:nn #4 } }
@@ -4048,7 +4048,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_cmd_if_xparse:NTF #1
   {
-    \exp_args:Nf \str_case_x:nnTF
+    \exp_args:Nf \str_case_e:nnTF
       {
         \exp_args:Nf \tl_if_empty:nT { \token_get_arg_spec:N #1 }
           {

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2018-08-24 22:18:02 UTC (rev 48476)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-23}
 %
 % \maketitle
 %
@@ -682,7 +682,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2018-05-12}{}
+\ProvidesExplPackage{xtemplate}{2018-08-23}{}
   {L3 Experimental prototype document functions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3color.dtx Copyright(C) 2017-2018 The LaTeX3 Project
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2018-05-12}{}
+\ProvidesExplPackage{l3color}{2018-08-24}{}
   {L3 Experimental color support}
 \tl_new:N \l__color_tmp_tl
 \prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
@@ -48,7 +48,7 @@
 \cs_generate_variant:Nn \__color_convert:nnN { VV }
 \cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4
   {
-    \str_if_eq_x:nnT {#1} { spot } % TO DO!!!
+    \str_if_eq:nnT {#1} { spot } % TO DO!!!
       { }
     \tl_set:Nx #4
       { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
@@ -160,7 +160,7 @@
         \__color_extract:nNN {#2} \l__color_next_model_tl \l__color_next_value_tl
         \tl_if_eq:NNF \l__color_model_tl \l__color_next_model_tl
           {
-            \str_if_eq_x:nnT { \l__color_model_tl } { gray }
+            \str_if_eq:VnT \l__color_model_tl { gray }
               {
                 \use:x
                   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -27,7 +27,7 @@
 %% 
 %% File: l3draw.dtx Copyright(C) 2018 The LaTeX3 Project
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2018-05-12}{}
+\ProvidesExplPackage{l3draw}{2018-08-24}{}
   {L3 Experimental core drawing support}
 \RequirePackage { l3color }
 %% File: l3draw-boxes.dtx Copyright(C) 2018 The LaTeX3 Project

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-convert.dtx Copyright (C) 2013-2018 The LaTeX3 Project
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2018-05-12}{}
+\ProvidesExplPackage{l3str-convert}{2018-08-24}{}
   {L3 Experimental string encoding conversions}
 \cs_if_exist:NF \use_ii_i:nn
   { \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -118,10 +118,10 @@
     }
   \cs_new_protected:Npn \__str_decode_utf_xvi_bom:NN #1#2
     {
-      \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe }
+      \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe }
         { \__str_decode_utf_xvi:Nw 2 }
         {
-          \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff }
+          \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff }
             { \__str_decode_utf_xvi:Nw 1 }
             { \__str_decode_utf_xvi:Nw 1 #1#2 }
         }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -94,10 +94,10 @@
     }
   \cs_new_protected:Npn \__str_decode_utf_xxxii_bom:NNNN #1#2#3#4
     {
-      \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
+      \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
         { \__str_decode_utf_xxxii:Nw 2 }
         {
-          \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
+          \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
             { \__str_decode_utf_xxxii:Nw 1 }
             { \__str_decode_utf_xxxii:Nw 1 #1#2#3#4 }
         }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -70,7 +70,7 @@
                   { \__str_unescape_string_repeat:NNNNNN ?? }
               }
               {
-                \str_case_x:nnF {#2}
+                \str_case_e:nnF {#2}
                   {
                     { \c_backslash_str } { 134 }
                     { ( } { 50 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx Copyright (C) 2012-2018 The LaTeX3 Project
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2018-05-12}{}
+\ProvidesExplPackage{l3str-format}{2018-08-24}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }

Added: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -0,0 +1,177 @@
+%%
+%% This is file `l3sys-shell.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3sys-shell.dtx  (with options: `package')
+%% 
+%% Copyright (C) 2018 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 "l3experimental bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%% 
+%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project
+\RequirePackage{expl3}
+\ProvidesExplPackage{l3sys-shell}{2018-08-24}{}
+  {L3 Experimental system shell functions}
+\cs_new:Npn \__sys_path_to_win:n #1
+  {
+    \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \q_stop
+  }
+\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \q_stop
+  {
+    \__sys_path_to_win:N #1 \q_nil
+    \tl_if_empty:nF {#2}
+      {
+        \c_space_tl
+        \__sys_path_to_win:w #2 \q_stop
+      }
+  }
+\cs_new:Npn \__sys_path_to_win:N #1
+  {
+    \quark_if_nil:NF #1
+      {
+        \token_if_eq_meaning:NNTF #1 /
+          { \c_backslash_str }
+          {#1}
+         \__sys_path_to_win:N
+      }
+  }
+\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              {
+                cp~-f~ \exp_not:N \tl_to_str:n {#1} ~
+                  \exp_not:N \tl_to_str:n {#2}
+              }
+            \sys_if_platform_windows:T
+              {
+                copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~
+                  \exp_not:N \__sys_path_to_win:n {#2}
+              }
+          }
+      }
+  }
+\cs_new_protected:Npx \sys_shell_mkdir:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
+            \sys_if_platform_windows:T
+              {
+                if~not~exist~
+                  \exp_not:N \__sys_path_to_win:n { #1 / nul } ~
+                  mkdir~ \exp_not:N \__sys_path_to_win:n {#1}
+              }
+          }
+      }
+  }
+\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              {
+                mv~ \exp_not:N \tl_to_str:n {#1} ~
+                  \exp_not:N \tl_to_str:n {#2}
+              }
+            \sys_if_platform_windows:T
+              {
+                copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~
+                  \exp_not:N \__sys_path_to_win:n {#2}
+                  \token_to_str:N & \token_to_str:N &
+                  del~/f~/q~\exp_not:N \__sys_path_to_win:n {#1}
+              }
+          }
+      }
+  }
+\cs_new_protected:Npx \sys_shell_rm:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { rm~-f~ \exp_not:N \tl_to_str:n {#1}  }
+            \sys_if_platform_windows:T
+              { del~/f~/q~ \exp_not:N \__sys_path_to_win:n {#1} }
+          }
+      }
+  }
+\cs_new_protected:Npx \sys_shell_rmdir:n #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \sys_shell_mkdir:n {#1}
+        \sys_shell_now:x
+          {
+            \sys_if_platform_unix:T
+              { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
+            \sys_if_platform_windows:T
+              { rmdir~/s~/q~ \exp_not:N \__sys_path_to_win:n {#1} }
+          }
+      }
+  }
+\tl_new:N \l__sys_tmp_tl
+\cs_new_protected:Npx \sys_shell_get_pwd:N #1
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl
+          {
+            \char_set_catcode_other:N \exp_not:N \\
+            \char_set_catcode_other:N \exp_not:N \#
+            \char_set_catcode_other:N \exp_not:N \~
+            \char_set_catcode_other:N \exp_not:N \%
+            \char_set_catcode_space:N \exp_not:N \ %
+          }
+          {
+            \sys_if_platform_unix:T { pwd }
+            \sys_if_platform_windows:T { cd }
+          }
+        \str_set:NV #1 \exp_not:N \l__sys_tmp_tl
+      }
+  }
+\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+  {
+    \sys_if_shell_unrestricted:T
+      {
+        \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl
+          {
+            \ExplSyntaxOff
+            \char_set_catcode_other:N \exp_not:N \\
+            \char_set_catcode_other:N \exp_not:N \#
+            \char_set_catcode_other:N \exp_not:N \~
+            \char_set_catcode_other:N \exp_not:N \%
+            \char_set_catcode_other:n { 13 }
+          }
+          {
+            \sys_if_platform_unix:T { ls~-1~ #1 }
+            \sys_if_platform_windows:T { dir~/b~ #1 }
+          }
+        \str_set:NV \exp_not:N \l__sys_tmp_tl \exp_not:N \l__sys_tmp_tl
+        \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } }
+          \exp_not:N \l__sys_tmp_tl
+        \seq_pop_right:NN #2 \exp_not:N \l__sys_tmp_tl
+      }
+  }
+%% 
+%%
+%% End of file `l3sys-shell.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,7 +20,7 @@
 %% 
 %% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016-2018 The LaTeX3 Project
 \RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2018-05-12}{}
+\ProvidesExplPackage{xcoffins}{2018-08-24}{}
   {L3 Experimental design level coffins}
 \keys_define:nn { coffin }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -33,7 +33,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2018-05-12}{}
+\ProvidesExplPackage{l3galley}{2018-08-24}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq
@@ -213,7 +213,7 @@
   }
 \cs_new_protected:Npn \__galley_par_aux:N #1
   {
-    \str_if_eq_x:nnF {#1} { \s__galley_par_omit }
+    \str_if_eq:nnF {#1} { \s__galley_par_omit }
       {
         \__galley_par_auxii:
         #1

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -21,7 +21,7 @@
 %% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach
 %%                             (C) 2010-2012,2014,2016-2018 The LaTeX3 Project
 \RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2018-05-12}{}
+\ProvidesExplPackage{xgalley}{2018-08-24}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -63,7 +63,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-06-14}%
+\def\ExplFileDate{2018-08-23}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -225,7 +225,7 @@
       }>0 %
       \everyjob\expandafter{%
         \the\expandafter\everyjob
-        \csname\detokenize{lua_now_x:n}\endcsname{require("expl3")}%
+        \csname\detokenize{lua_now:n}\endcsname{require("expl3")}%
       }%
     \fi
   \fi
@@ -2172,7 +2172,10 @@
     \cs_set_nopar:Npx \l__exp_internal_tl {#1}
     \l__exp_internal_tl
   }
-\cs_set:Npn \use_x:n #1 { \tex_expanded:D {#1} }
+\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
+\tex_ifdefined:D \tex_expanded:D \tex_else:D
+  \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
+\tex_fi:D
 \cs_set:Npn \use:n    #1       {#1}
 \cs_set:Npn \use:nn   #1#2     {#1#2}
 \cs_set:Npn \use:nnn  #1#2#3   {#1#2#3}
@@ -3018,7 +3021,7 @@
   {
     \bool_if:NTF #3
       {
-        \str_if_eq_x:nnF { }
+        \str_if_eq:eeF { }
           { \tl_map_function:nN {#2} \__cs_generate_from_signature:n }
           {
             \__kernel_msg_error:nnx { kernel } { non-base-function }
@@ -5018,7 +5021,7 @@
               \exp_not:c { tl_ #1 :Nx } ##1
                 { \exp_not:N \tl_to_str:n {##2} }
             }
-          \cs_generate_variant:cn { str_ #1 :Nn } { Nx , cn , cx }
+          \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
           \__str_tmp:n
         }
     }
@@ -5092,46 +5095,46 @@
   { p , T , F , TF }
 \prg_new_eq_conditional:NNn \str_if_empty:c \tl_if_empty:c
   { p , T , F , TF }
-\cs_new:Npn \__str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \__str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
 \cs_if_exist:NT \tex_luatexversion:D
    {
-     \cs_set_eq:NN \lua_escape_x:n \tex_luaescapestring:D
-     \cs_set_eq:NN \lua_now_x:n    \tex_directlua:D
-     \cs_set:Npn \__str_if_eq_x:nn #1#2
+     \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D
+     \cs_set_eq:NN \lua_now:e    \tex_directlua:D
+     \cs_set:Npn \__str_if_eq:nn #1#2
        {
-          \lua_now_x:n
+          \lua_now:e
             {
               l3kernel.strcmp
                 (
-                  " \__str_escape_x:n {#1} " ,
-                  " \__str_escape_x:n {#2} "
+                  " \__str_escape:n {#1} " ,
+                  " \__str_escape:n {#2} "
                 )
             }
        }
-     \cs_new:Npn \__str_escape_x:n #1
+     \cs_new:Npn \__str_escape:n #1
        {
-         \lua_escape_x:n
-           { \__kernel_tl_to_str:w \use_x:n { {#1} } }
+         \lua_escape:e
+           { \__kernel_tl_to_str:w \use:e { {#1} } }
        }
    }
 \prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF }
   {
     \if_int_compare:w
-      \__str_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
+      \__str_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
       = 0 \exp_stop_f:
       \prg_return_true: \else: \prg_return_false: \fi:
   }
 \prg_generate_conditional_variant:Nnn \str_if_eq:nn
-  { V , o , nV , no , VV } { p , T , F , TF }
-\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF }
+  { V , v , o , nV , no , VV , nv } { p , T , F , TF }
+\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF }
   {
-    \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f:
+    \if_int_compare:w \__str_if_eq:nn {#1} {#2} = 0 \exp_stop_f:
       \prg_return_true: \else: \prg_return_false: \fi:
   }
 \prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F }
   {
     \if_int_compare:w
-      \__str_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
+      \__str_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
       = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi:
   }
 \prg_generate_conditional_variant:Nnn \str_if_eq:NN
@@ -5181,33 +5184,33 @@
       { \__str_case_end:nw {#3} }
       { \__str_case:nw {#1} }
   }
-\cs_new:Npn \str_case_x:nn #1#2
+\cs_new:Npn \str_case_e:nn #1#2
   {
     \exp:w
-    \__str_case_x:nnTF {#1} {#2} { } { }
+    \__str_case_e:nnTF {#1} {#2} { } { }
   }
-\cs_new:Npn \str_case_x:nnT #1#2#3
+\cs_new:Npn \str_case_e:nnT #1#2#3
   {
     \exp:w
-    \__str_case_x:nnTF {#1} {#2} {#3} { }
+    \__str_case_e:nnTF {#1} {#2} {#3} { }
   }
-\cs_new:Npn \str_case_x:nnF #1#2
+\cs_new:Npn \str_case_e:nnF #1#2
   {
     \exp:w
-    \__str_case_x:nnTF {#1} {#2} { }
+    \__str_case_e:nnTF {#1} {#2} { }
   }
-\cs_new:Npn \str_case_x:nnTF #1#2
+\cs_new:Npn \str_case_e:nnTF #1#2
   {
     \exp:w
-    \__str_case_x:nnTF {#1} {#2}
+    \__str_case_e:nnTF {#1} {#2}
   }
-\cs_new:Npn \__str_case_x:nnTF #1#2#3#4
-  { \__str_case_x:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
-\cs_new:Npn \__str_case_x:nw #1#2#3
+\cs_new:Npn \__str_case_e:nnTF #1#2#3#4
+  { \__str_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
+\cs_new:Npn \__str_case_e:nw #1#2#3
   {
-    \str_if_eq_x:nnTF {#1} {#2}
+    \str_if_eq:eeTF {#1} {#2}
       { \__str_case_end:nw {#3} }
-      { \__str_case_x:nw {#1} }
+      { \__str_case_e:nw {#1} }
   }
 \cs_new:Npn \__str_case_end:nw #1#2#3 \q_mark #4#5 \q_stop
   { \exp_end: #1 #4 }
@@ -5611,6 +5614,22 @@
 \cs_new_eq:NN \str_show:n \tl_show:n
 \cs_new_eq:NN \str_show:N \tl_show:N
 \cs_generate_variant:Nn \str_show:N { c }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nn }
+\cs_new:Npn \str_case_x:nn { \str_case_e:nn }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnT }
+\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnF }
+\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnTF }
+\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq_p:ee }
+\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeT }
+\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeF }
+\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF }
+\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
 %% File: l3quark.dtx Copyright (C) 1990-2018 The LaTeX3 Project
 \__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN q #1 } { }
 \cs_new_protected:Npn \quark_new:N #1
@@ -7610,7 +7629,7 @@
 \tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } }
   {
     \__sys_const:nn { sys_if_engine_ #1 }
-      { \str_if_eq_x_p:nn \c_sys_engine_str {#1} }
+      { \str_if_eq_p:Vn \c_sys_engine_str {#1} }
   }
 \str_const:Nx \c_sys_output_str
   {
@@ -7620,9 +7639,9 @@
       { dvi }
   }
 \__sys_const:nn { sys_if_output_dvi }
-  { \str_if_eq_x_p:nn \c_sys_output_str { dvi } }
+  { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
 \__sys_const:nn { sys_if_output_pdf }
-  { \str_if_eq_x_p:nn \c_sys_output_str { pdf } }
+  { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
 \__sys_const:nn { sys_if_rand_exist }
   { \cs_if_exist_p:N \tex_uniformdeviate:D }
 %% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach,
@@ -8373,7 +8392,7 @@
           {
             #3
             \exp_after:wN \exp_after:wN \exp_after:wN \exp_end:
-            \lua_now_x:n { l3kernel.charcat(#1, #2) }
+            \lua_now:e { l3kernel.charcat(#1, #2) }
           }
       }
       {
@@ -8567,7 +8586,7 @@
       ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop
   }
       {
-        \str_if_eq_x:nnTF { #2 } { cro }
+        \str_if_eq:nnTF { #2 } { cro }
           { \prg_return_true: }
           { \prg_return_false: }
       }
@@ -8623,7 +8642,7 @@
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
               }
-            \exp_not:N \str_if_eq_x:nnTF
+            \exp_not:N \str_if_eq:eeTF
               {
                 \exp_not:N \exp_after:wN
                 \exp_not:c { __token_delimit_by_ #2 :w }
@@ -9065,7 +9084,7 @@
   }
 \cs_new:Npn \__prop_item_Nn:nwwn #1#2 \__prop_pair:wn #3 \s__prop #4
   {
-    \str_if_eq_x:nnTF {#1} {#3}
+    \str_if_eq:eeTF {#1} {#3}
       { \prg_break:n { \exp_not:n {#4} } }
       { \__prop_item_Nn:nwwn {#1} }
   }
@@ -9150,7 +9169,7 @@
   }
 \cs_new:Npn \__prop_if_in:nwwn #1#2 \__prop_pair:wn #3 \s__prop #4
   {
-    \str_if_eq_x:nnTF {#1} {#3}
+    \str_if_eq:eeTF {#1} {#3}
       { \__prop_if_in:N }
       { \__prop_if_in:nwwn {#1} }
   }
@@ -9671,7 +9690,7 @@
     \seq_put_right:Nn \l__msg_class_loop_seq {#1}
     \prop_get:cnNT { l__msg_redirect_ #1 _prop } {#3} \l__msg_class_tl
       {
-        \str_if_eq_x:nnF { \l__msg_class_tl } {#1}
+        \str_if_eq:VnF \l__msg_class_tl {#1}
           {
             \tl_if_eq:NNTF \l__msg_class_tl \l__msg_current_class_tl
               {
@@ -11407,7 +11426,7 @@
 \cs_generate_variant:Nn \skip_gsub:Nn { c }
 \prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF }
   {
-    \str_if_eq_x:nnTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
+    \str_if_eq:eeTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
        { \prg_return_true: }
        { \prg_return_false: }
   }
@@ -11868,11 +11887,8 @@
     \cs_if_exist:cTF
       { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl }
       {
-        \str_if_eq_x:nnTF
-          {
-            \exp_not:v
-              { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl }
-          }
+        \str_if_eq:vnTF
+          { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl }
           { choice }
           {
             \__kernel_msg_error:nnxx { kernel } { nested-choice-key }
@@ -13117,10 +13133,10 @@
     #2
     \s__fp_mark { #3 #1 } #4
   }
-\cs_new:Npn \__fp_str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \__fp_str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
 \sys_if_engine_luatex:T
   {
-    \cs_set:Npn \__fp_str_if_eq_x:nn #1#2
+    \cs_set:Npn \__fp_str_if_eq:nn #1#2
       {
         \tex_directlua:D
           {
@@ -14210,7 +14226,7 @@
     \if_catcode:w \scan_stop: \exp_not:N #1
       \if_meaning:w \scan_stop: #1
         \if_int_compare:w
-            \__fp_str_if_eq_x:nn { \s__fp } { \exp_not:N #1 }
+            \__fp_str_if_eq:nn { \s__fp } { \exp_not:N #1 }
             = 0 \exp_stop_f:
           0
           \__kernel_msg_expandable_error:nnn
@@ -14224,7 +14240,7 @@
         \fi:
       \else:
         \if_int_compare:w
-            \__fp_str_if_eq_x:nn { \int_value:w #1 } { \tex_the:D #1 }
+            \__fp_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 }
             = 0 \exp_stop_f:
           \int_value:w #1
         \else:
@@ -14512,7 +14528,7 @@
   {
     \if_catcode:w \scan_stop: \exp_not:N #2
       \if_int_compare:w
-          \__fp_str_if_eq_x:nn { \s__fp_mark } { \exp_not:N #2 }
+          \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 }
           = 0 \exp_stop_f:
         \exp_after:wN \exp_after:wN
         \exp_after:wN \__fp_parse_infix_mark:NNN
@@ -17125,7 +17141,7 @@
 \cs_new:Npn \__fp_pow_normal_o:ww
     \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5
   {
-    \if_int_compare:w \__fp_str_if_eq_x:nn { #2 #3 }
+    \if_int_compare:w \__fp_str_if_eq:nn { #2 #3 }
               { 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f:
       \if_int_compare:w #4 #1 = 32 \exp_stop_f:
         \exp_after:wN \__fp_case_return_ii_o:ww
@@ -20145,7 +20161,7 @@
   }
 \cs_new:Npn \__regex_escape_x_test:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break } { ; }
+    \str_if_eq:nnTF {#1} { break } { ; }
       {
         \if_charcode:w \c_space_token #1
           \exp_after:wN \__regex_escape_x_test:N
@@ -20167,7 +20183,7 @@
   }
 \cs_new:Npn \__regex_escape_x:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break } { ; }
+    \str_if_eq:nnTF {#1} { break } { ; }
       {
         \__regex_hexadecimal_use:NTF #1
           { ; \__regex_escape_loop:N }
@@ -20176,7 +20192,7 @@
   }
 \cs_new:Npn \__regex_escape_x_loop:N #1
   {
-    \str_if_eq_x:nnTF {#1} { break }
+    \str_if_eq:nnTF {#1} { break }
       { ; \__regex_escape_x_loop_error:n { } {#1} }
       {
         \__regex_hexadecimal_use:NTF #1
@@ -20550,7 +20566,7 @@
   }
 \cs_new_protected:Npn \__regex_compile_quantifier_braced_auxi:w #1#2
   {
-    \str_case_x:nnF { #1 #2 }
+    \str_case_e:nnF { #1 #2 }
       {
         { \__regex_compile_special:N \c_right_brace_str }
           {
@@ -22865,7 +22881,7 @@
   { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
   {
     LaTeX~
-    \str_if_eq_x:nnTF { } {#2}
+    \str_if_eq:eeTF { } {#2}
       { reached~the~end~of~the~string~ }
       { encountered~an~escaped~alphanumeric~character '\iow_char:N\\#2'~ }
     when~parsing~the~argument~of~an~
@@ -22995,7 +23011,7 @@
   }
 \cs_new:Npn \__regex_msg_repeated:nnN #1#2#3
   {
-    \str_if_eq_x:nnF { #1 #2 } { 1 0 }
+    \str_if_eq:eeF { #1 #2 } { 1 0 }
       {
         , ~ repeated ~
         \int_case:nnF {#2}
@@ -23421,7 +23437,7 @@
       { \l__box_right_new_dim - \l__box_left_new_dim }
     \box_use_drop:N \l__box_internal_box
   }
-\cs_new_protected:Npn \__box_rotate_x:nnN #1#2#3
+\cs_new_protected:Npn \__box_rotate_xdir:nnN #1#2#3
   {
     \dim_set:Nn #3
       {
@@ -23432,7 +23448,7 @@
           }
       }
   }
-\cs_new_protected:Npn \__box_rotate_y:nnN #1#2#3
+\cs_new_protected:Npn \__box_rotate_ydir:nnN #1#2#3
   {
     \dim_set:Nn #3
       {
@@ -23445,46 +23461,46 @@
   }
 \cs_new_protected:Npn \__box_rotate_quadrant_one:
   {
-    \__box_rotate_y:nnN \l__box_right_dim \l__box_top_dim
+    \__box_rotate_ydir:nnN \l__box_right_dim \l__box_top_dim
       \l__box_top_new_dim
-    \__box_rotate_y:nnN \l__box_left_dim  \l__box_bottom_dim
+    \__box_rotate_ydir:nnN \l__box_left_dim  \l__box_bottom_dim
       \l__box_bottom_new_dim
-    \__box_rotate_x:nnN \l__box_left_dim  \l__box_top_dim
+    \__box_rotate_xdir:nnN \l__box_left_dim  \l__box_top_dim
       \l__box_left_new_dim
-    \__box_rotate_x:nnN \l__box_right_dim \l__box_bottom_dim
+    \__box_rotate_xdir:nnN \l__box_right_dim \l__box_bottom_dim
       \l__box_right_new_dim
   }
 \cs_new_protected:Npn \__box_rotate_quadrant_two:
   {
-    \__box_rotate_y:nnN \l__box_right_dim \l__box_bottom_dim
+    \__box_rotate_ydir:nnN \l__box_right_dim \l__box_bottom_dim
       \l__box_top_new_dim
-    \__box_rotate_y:nnN \l__box_left_dim  \l__box_top_dim
+    \__box_rotate_ydir:nnN \l__box_left_dim  \l__box_top_dim
       \l__box_bottom_new_dim
-    \__box_rotate_x:nnN \l__box_right_dim  \l__box_top_dim
+    \__box_rotate_xdir:nnN \l__box_right_dim  \l__box_top_dim
       \l__box_left_new_dim
-    \__box_rotate_x:nnN \l__box_left_dim   \l__box_bottom_dim
+    \__box_rotate_xdir:nnN \l__box_left_dim   \l__box_bottom_dim
       \l__box_right_new_dim
   }
 \cs_new_protected:Npn \__box_rotate_quadrant_three:
   {
-    \__box_rotate_y:nnN \l__box_left_dim  \l__box_bottom_dim
+    \__box_rotate_ydir:nnN \l__box_left_dim  \l__box_bottom_dim
       \l__box_top_new_dim
-    \__box_rotate_y:nnN \l__box_right_dim \l__box_top_dim
+    \__box_rotate_ydir:nnN \l__box_right_dim \l__box_top_dim
       \l__box_bottom_new_dim
-    \__box_rotate_x:nnN \l__box_right_dim \l__box_bottom_dim
+    \__box_rotate_xdir:nnN \l__box_right_dim \l__box_bottom_dim
       \l__box_left_new_dim
-    \__box_rotate_x:nnN \l__box_left_dim   \l__box_top_dim
+    \__box_rotate_xdir:nnN \l__box_left_dim   \l__box_top_dim
       \l__box_right_new_dim
   }
 \cs_new_protected:Npn \__box_rotate_quadrant_four:
   {
-    \__box_rotate_y:nnN \l__box_left_dim  \l__box_top_dim
+    \__box_rotate_ydir:nnN \l__box_left_dim  \l__box_top_dim
       \l__box_top_new_dim
-    \__box_rotate_y:nnN \l__box_right_dim \l__box_bottom_dim
+    \__box_rotate_ydir:nnN \l__box_right_dim \l__box_bottom_dim
       \l__box_bottom_new_dim
-    \__box_rotate_x:nnN \l__box_left_dim  \l__box_bottom_dim
+    \__box_rotate_xdir:nnN \l__box_left_dim  \l__box_bottom_dim
       \l__box_left_new_dim
-    \__box_rotate_x:nnN \l__box_right_dim \l__box_top_dim
+    \__box_rotate_xdir:nnN \l__box_right_dim \l__box_top_dim
       \l__box_right_new_dim
   }
 \fp_new:N \l__box_scale_x_fp
@@ -24533,25 +24549,24 @@
     Poles~of~coffin~#1 : #3 .
   }
 %% File: l3luatex.dtx Copyright (C) 2010-2018 The LaTeX3 Project
-\cs_new_eq:NN \__luatex_escape_x:n  \tex_luaescapestring:D
-\cs_new_eq:NN \__luatex_now_x:n     \tex_directlua:D
-\cs_new_eq:NN \__luatex_shipout_x:n \tex_latelua:D
-\cs_undefine:N \lua_escape_x:n
-\cs_undefine:N \lua_now_x:n
-\cs_new:Npn \lua_now_x:n #1 { \__luatex_now_x:n {#1} }
-\cs_new:Npn \lua_now:n #1   { \lua_now_x:n { \exp_not:n {#1} } }
-\cs_new_protected:Npn \lua_shipout_x:n #1 { \__luatex_shiphout_x:n {#1} }
+\cs_new_eq:NN \__lua_escape:n  \tex_luaescapestring:D
+\cs_new_eq:NN \__lua_now:n     \tex_directlua:D
+\cs_new_eq:NN \__lua_shipout:n \tex_latelua:D
+\cs_undefine:N \lua_escape:e
+\cs_undefine:N \lua_now:e
+\cs_new:Npn \lua_now:e #1 { \__lua_now:n {#1} }
+\cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } }
+\cs_new_protected:Npn \lua_shipout_e:n #1 { \__lua_shiphout:n {#1} }
 \cs_new_protected:Npn \lua_shipout:n #1
-  { \lua_shipout_x:n { \exp_not:n {#1} } }
-\cs_new:Npn \lua_escape_x:n #1 { \__luatex_escape_x:n {#1} }
-\cs_new:Npn \lua_escape:n #1 { \lua_escape_x:n { \exp_not:n {#1} } }
+  { \lua_shipout_e:n { \exp_not:n {#1} } }
+\cs_new:Npn \lua_escape:e #1 { \__lua_escape:n {#1} }
+\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } }
 \sys_if_engine_luatex:F
   {
     \clist_map_inline:nn
       {
-        \use_x:n ,
-        \lua_escape_x:n , \lua_escape:n ,
-        \lua_now_x:n , \lua_now:n
+        \lua_escape:n , \lua_escape:e ,
+        \lua_now:n , \lua_now:e
       }
       {
         \cs_set:Npn #1 ##1
@@ -24561,7 +24576,7 @@
           }
       }
     \clist_map_inline:nn
-      { \lua_shipout_x:n , \lua_shipout:n }
+      { \lua_shipout_e:n , \lua_shipout:n }
       {
         \cs_set_protected:Npn #1 ##1
           {
@@ -24576,6 +24591,12 @@
     The~feature~you~are~using~is~only~available~
     with~the~LuaTeX~engine.~LaTeX3~ignored~'#1'.
   }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_now:e }
+\cs_new:Npn \lua_now_x:n #1 { \__lua_now:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_escape:e }
+\cs_new:Npn \lua_escape_x:n #1 { \__lua_escape:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n }
+\cs_new_protected:Npn \lua_shipout_x:n #1 { \__lua_shipout:n {#1} }
 %% File: l3unicode.dtx Copyright (C) 2018 The LaTeX3 Project
 \ior_new:N \g__char_data_ior
 \bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
@@ -24648,7 +24669,7 @@
         {
           \tl_if_blank:nF {#1}
             {
-              \str_if_eq_x:nnF { \tl_head:n {#1} } { \c_hash_str }
+              \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str }
                 { \__char_data_auxi:w #1 \q_stop }
             }
         }
@@ -24685,9 +24706,9 @@
         {
           \tl_if_blank:nF {#1}
             {
-              \str_if_eq_x:nnTF { \tl_head:n {#1} } { \c_hash_str }
+              \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str }
                 {
-                  \str_if_eq_x:nnT
+                  \str_if_eq:eeT
                     {#1}
                     { \c_hash_str \c_space_tl Conditional~Mappings }
                     { \ior_map_break: }
@@ -25097,10 +25118,10 @@
         \file_get_full_name:nN {#1} \l__file_full_name_str
         \str_set:Nx #3
           {
-            \lua_now_x:n
+            \lua_now:e
               {
                 l3kernel.file#2
-                  ( " \lua_escape_x:n { \l__file_full_name_str } " )
+                  ( " \lua_escape:e { \l__file_full_name_str } " )
               }
           }
        }
@@ -25510,6 +25531,29 @@
         \tex_shellescape:D
       }
   }
+\sys_if_engine_luatex:TF
+  {
+    \str_const:Nx \c_sys_platform_str
+      { \lua_now:n { tex.print(os.type) } }
+  }
+  {
+    \file_if_exist:nTF { nul: }
+      {
+        \file_if_exist:nF { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { windows } }
+      }
+      {
+        \file_if_exist:nT { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { unix } }
+      }
+  }
+\cs_if_exist:NF \c_sys_platform_str
+  { \str_const:Nn \c_sys_platform_str { unknown }  }
+\clist_map_inline:nn { unix , windows }
+  {
+    \__sys_const:nn { sys_if_platform_ #1 }
+      { \str_if_eq_p:Vn \c_sys_platform_str { #1 } }
+  }
 \__sys_const:nn { sys_if_shell }
   { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
 \__sys_const:nn { sys_if_shell_unrestricted }
@@ -25522,8 +25566,8 @@
   {
     \cs_new_protected:Npn \sys_shell_now:n #1
       {
-        \lua_now_x:n
-          { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+        \lua_now:e
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
       }
   }
   {
@@ -25535,8 +25579,8 @@
   {
     \cs_new_protected:Npn \sys_shell_shipout:n #1
       {
-        \lua_shipout_x:n
-          { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+        \lua_shipout_e:n
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
       }
   }
   {
@@ -25610,15 +25654,9 @@
     \str_if_empty:NTF \l__tl_file_name_str
       { \__kernel_file_missing:n {#4} }
       {
-        \group_begin:
-          \exp_args:No \tex_everyeof:D
-            { \c__tl_rescan_marker_tl \exp_not:N }
-          #3 \scan_stop:
-          \exp_after:wN \__tl_from_file_do:w
-          \exp_after:wN \prg_do_nothing:
-            \tex_input:D \l__tl_file_name_str \scan_stop:
-        \exp_args:NNNo \group_end:
-        #1 #2 \l__tl_internal_a_tl
+        \exp_args:NV \__tl_set_from:nNNn
+          \l__tl_file_name_str
+          #1 #2 {#3}
       }
   }
 \exp_args:Nno \use:nn
@@ -25625,6 +25663,18 @@
   { \cs_new_protected:Npn \__tl_from_file_do:w #1 }
   { \c__tl_rescan_marker_tl }
   { \tl_set:No \l__tl_internal_a_tl {#1} }
+\cs_new_protected:Npn \__tl_set_from:nNNn #1#2#3#4
+  {
+    \group_begin:
+      \exp_args:No \tex_everyeof:D
+        { \c__tl_rescan_marker_tl \exp_not:N }
+      #4 \scan_stop:
+      \exp_after:wN \__tl_from_file_do:w
+      \exp_after:wN \prg_do_nothing:
+        \tex_input:D #1 \scan_stop:
+    \exp_args:NNNo \group_end:
+    #2 #3 \l__tl_internal_a_tl
+  }
 \cs_new_protected:Npn \tl_set_from_file_x:Nnn
   { \__tl_set_from_file_x:NNnn \tl_set:Nn }
 \cs_new_protected:Npn \tl_gset_from_file_x:Nnn
@@ -25647,6 +25697,29 @@
       }
   }
 \str_new:N \l__tl_file_name_str
+\cs_new_protected:Npn \tl_set_from_shell:Nnn
+  { \__tl_set_from_shell:NNnn \tl_set:Nn }
+\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c }
+\cs_new_protected:Npn \tl_gset_from_shell:Nnn
+  { \__tl_set_from_shell:NNnn \tl_gset:Nn }
+\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c }
+\cs_new_protected:Npn \__tl_set_from_shell:NNnn #1#2#3#4
+  {
+    \sys_if_shell:TF
+      {
+        \tl_set:Nn \l__tl_internal_a_tl {#4}
+        \tl_if_in:NnTF \l__tl_internal_a_tl { " }
+          {
+            \__kernel_msg_error:nnx
+              { kernel } { quote-in-shell } {#4}
+          }
+          { \__tl_set_from:nNNn { | " #4 " } #1 #2 {#3} }
+      }
+      { #1 #2 { } }
+  }
+\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
+  { Quotes~in~shell~command~'#1'. }
+  { Shell~commands~cannot~contain~quotes~("). }
 \cs_new:Npn \char_lower_case:N #1
   { \__char_change_case:nNN { lower } \char_value_lccode:n #1 }
 \cs_new:Npn \char_upper_case:N #1
@@ -27009,7 +27082,7 @@
 \__kernel_deprecation_error:Nnn \str_case:onn
   { \str_case:onF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \str_case_x:nnn
-  { \str_case_x:nnF } { 2015-07-14 }
+  { \str_case_e:nnF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \tl_case:cnn
   { \tl_case:cnF } { 2015-07-14 }
 \__kernel_deprecation_error:Nnn \tl_case:Nnn

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2018-08-24 22:18:02 UTC (rev 48476)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-06-14}%
+\def\ExplFileDate{2018-08-23}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \def\tempa{LaTeX2e}%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-06-14}%
+\def\ExplFileDate{2018-08-23}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2018-08-24 22:18:02 UTC (rev 48476)
@@ -855,7 +855,7 @@
     \tl_greplace_all:Nno \g__codedoc_base_name_tl
       { ~ } { \c_catcode_other_space_tl }
     \seq_get:NN #1 \l__codedoc_tmpa_tl
-    \str_if_eq_x:nnTF { \l__codedoc_tmpa_tl } { \scan_stop: }
+    \str_if_eq:VnTF \l__codedoc_tmpa_tl { \scan_stop: }
       {
         \seq_gclear:N \g__codedoc_variants_seq
         \__codedoc_names_typeset_auxii:x { \g__codedoc_base_name_tl }
@@ -918,7 +918,7 @@
         #1
           {
             \l__codedoc_tmpa_tl
-            \str_if_eq_x:nnF { \l__codedoc_tmpb_tl } { \scan_stop: }
+            \str_if_eq:VnF \l__codedoc_tmpb_tl { \scan_stop: }
               { : \l__codedoc_tmpb_tl }
             \bool_if:NT \l__codedoc_macro_TF_bool { TF }
           }
@@ -2065,7 +2065,7 @@
           \tl_if_empty:nTF {#3}
             { { } { } { } }
             {
-              \str_if_eq_x:nnTF {#3} { TeX }
+              \str_if_eq:nnTF {#3} { TeX }
                 {
                   { TeX~and~LaTeX2e }
                   { \string\TeX{}~and~\string\LaTeXe{} }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,11 +20,11 @@
 %% 
 %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
 \ProvidesExplFile
-  {l3dvidpfmx.def}{2018-06-14}{}
+  {l3dvidpfmx.def}{2018-08-23}{}
   {L3 Experimental driver: dvipdfmx}
-\cs_new_eq:NN \__driver_literal_x:n \tex_special:D
+\cs_new_eq:NN \__driver_literal:e \tex_special:D
 \cs_new_protected:Npn \__driver_literal:n #1
-  { \__driver_literal_x:n { \exp_not:n {#1} } }
+  { \__driver_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \__driver_literal:n { x }
 \cs_new_protected:Npn \driver_color_pickup:N #1 { }
 \AtBeginDocument

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,11 +20,11 @@
 %% 
 %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
 \ProvidesExplFile
-  {l3dvips.def}{2018-06-14}{}
+  {l3dvips.def}{2018-08-23}{}
   {L3 Experimental driver: dvips}
-\cs_new_eq:NN \__driver_literal_x:n \tex_special:D
+\cs_new_eq:NN \__driver_literal:e \tex_special:D
 \cs_new_protected:Npn \__driver_literal:n #1
-  { \__driver_literal_x:n { \exp_not:n {#1} } }
+  { \__driver_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \__driver_literal:n { x }
 \cs_new_protected:Npn \driver_color_pickup:N #1 { }
 \AtBeginDocument

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,11 +20,11 @@
 %% 
 %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
 \ProvidesExplFile
-  {l3dvisvgm.def}{2018-06-14}{}
+  {l3dvisvgm.def}{2018-08-23}{}
   {L3 Experimental driver: dvisvgm}
-\cs_new_eq:NN \__driver_literal_x:n \tex_special:D
+\cs_new_eq:NN \__driver_literal:e \tex_special:D
 \cs_new_protected:Npn \__driver_literal:n #1
-  { \__driver_literal_x:n { \exp_not:n {#1} } }
+  { \__driver_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \__driver_literal:n { x }
 \cs_new_protected:Npn \driver_color_pickup:N #1 { }
 \AtBeginDocument

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,11 +20,11 @@
 %% 
 %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
 \ProvidesExplFile
-  {l3pdfmode.def}{2018-06-14}{}
+  {l3pdfmode.def}{2018-08-23}{}
   {L3 Experimental driver: PDF mode}
-\cs_new_eq:NN \__driver_literal_x:n \tex_special:D
+\cs_new_eq:NN \__driver_literal:e \tex_special:D
 \cs_new_protected:Npn \__driver_literal:n #1
-  { \__driver_literal_x:n { \exp_not:n {#1} } }
+  { \__driver_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \__driver_literal:n { x }
 \cs_new_protected:Npn \driver_color_pickup:N #1 { }
 \AtBeginDocument

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2018-08-24 22:18:02 UTC (rev 48476)
@@ -20,11 +20,11 @@
 %% 
 %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
 \ProvidesExplFile
-  {l3xdvidpfmx.def}{2018-06-14}{}
+  {l3xdvidpfmx.def}{2018-08-23}{}
   {L3 Experimental driver: xdvipdfmx}
-\cs_new_eq:NN \__driver_literal_x:n \tex_special:D
+\cs_new_eq:NN \__driver_literal:e \tex_special:D
 \cs_new_protected:Npn \__driver_literal:n #1
-  { \__driver_literal_x:n { \exp_not:n {#1} } }
+  { \__driver_literal:e { \exp_not:n {#1} } }
 \cs_generate_variant:Nn \__driver_literal:n { x }
 \cs_new_protected:Npn \driver_color_pickup:N #1 { }
 \AtBeginDocument

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3keys2e}{2018-05-12}{}
+\ProvidesExplPackage{l3keys2e}{2018-08-23}{}
   {LaTeX2e option processing using LaTeX3 keys}
 \cs_generate_variant:Nn \clist_put_right:Nn { Nv }
 \cs_generate_variant:Nn \keys_if_exist:nnT  { nx }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -33,7 +33,7 @@
     \endinput
   }
 \RequirePackage{xparse}
-\ProvidesExplPackage{xfp}{2018-05-12}{}
+\ProvidesExplPackage{xfp}{2018-08-23}{}
   {L3 Floating point unit}
 \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
 \NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -34,7 +34,7 @@
     \endinput
   }
 \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate}
-\ProvidesExplPackage{xfrac}{2018-05-12}{}
+\ProvidesExplPackage{xfrac}{2018-08-23}{}
   {L3 Experimental split-level fractions}
 \keys_define:nn { xfrac }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -36,7 +36,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xparse}{2018-05-12}{}
+\ProvidesExplPackage{xparse}{2018-08-23}{}
   {L3 Experimental document command parser}
 \tl_new:N \l__xparse_arg_spec_tl
 \tl_new:N \l__xparse_args_tl
@@ -983,7 +983,7 @@
             \tl_if_blank:oTF { \use_none:n ##1 }
               { \__xparse_add_arg:o { \use_none:n ##1 } }
               {
-                \str_if_eq_x:nnTF
+                \str_if_eq:eeTF
                   { \exp_not:o { \use_none:n ##1 } }
                   { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } }
                   { \__xparse_add_arg:o { \use_ii:nn ##1 } }
@@ -1393,7 +1393,7 @@
       }
   }
 \cs_new_protected:Npn \__xparse_grab_v_token_if_char:NTF #1
-  { \str_if_eq_x:nnTF { } { \str_tail:n {#1} } }
+  { \str_if_eq:eeTF { } { \str_tail:n {#1} } }
 \cs_new_protected:Npn \__xparse_add_arg:n #1
   {
     \tl_put_right:Nn \l__xparse_args_tl { {#1} }
@@ -1438,7 +1438,7 @@
         \tl_if_blank:oTF { \use_none:nn #1#2 }
           { \__xparse_put_arg_expandable:ow { \use_none:nn #1#2 } }
           {
-            \str_if_eq_x:nnTF
+            \str_if_eq:eeTF
               { \exp_not:o { \use_none:nn #1#2 } }
               { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } }
               { \__xparse_put_arg_expandable:ow { \use_iii:nnn #1#2 } }
@@ -1479,7 +1479,7 @@
     \tl_if_blank:oTF { \use_none:n #4 }
       { \__xparse_put_arg_expandable:ow { \use_none:n #4 } }
       {
-        \str_if_eq_x:nnTF
+        \str_if_eq:eeTF
           { \exp_not:o { \use_none:n #4 } }
           { { \exp_not:o { \use_ii:nnn #4 \q_nil } } }
           { \__xparse_put_arg_expandable:ow { \use_ii:nn #4 } }
@@ -1796,7 +1796,7 @@
   }
 \cs_new_protected:Npn \__xparse_cmd_if_xparse:NTF #1
   {
-    \exp_args:Nf \str_case_x:nnTF
+    \exp_args:Nf \str_case_e:nnTF
       {
         \exp_args:Nf \tl_if_empty:nT { \token_get_arg_spec:N #1 }
           {

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2018-08-24 22:16:17 UTC (rev 48475)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2018-08-24 22:18:02 UTC (rev 48476)
@@ -36,7 +36,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xtemplate}{2018-05-12}{}
+\ProvidesExplPackage{xtemplate}{2018-08-23}{}
   {L3 Experimental prototype document functions}
 \tl_const:Nn \c__xtemplate_code_root_tl      { template~code~>~ }
 \tl_const:Nn \c__xtemplate_defaults_root_tl  { template~defaults~>~ }



More information about the tex-live-commits mailing list