The team have made some adjustments to engine support in expl3 which
are closely aligned to engine detection. I'm therefore summarising the
Using expl3 with e-(u)pTeX has been possible for some time, but to date
has not been part of the formal support matrix for expl3 (meaning that
we have on occasion broken this). From the latest release, e-(u)pTeX is
added to the list of officially-supported engines. This should be
transparent to users. Full Unicode support is only available in LuaTeX
and XeTeX: e-upTeX is treated by expl3 as an 8-bit engine (i.e. no
manipulation is attempted for chars outside of the 0-255 range).
We have also introduced a new 'sys' module in expl3 as a single location
to define functions which depend on the system on which expl3 is
running. Tests for engines have been moved to this module as
with new tests for e-(u)pTeX. This means that the existing
\<name>_if_engine:(TF) functions are deprecated for removal after the
end of 2016.
There are some points to note with the new sys-module tests for engines.
As there are now more engines to test for, we have tightened up the
meaning of the 'pdftex' test in the new module: it is now *only* true
for pdfTeX and not for e-(u)pTeX. (The deprecated \pdftex_if_engine:(TF)
tests retain the older behaviour: true if XeTeX or LuaTeX are not in
use.) Each test is true for exactly one engine. This means that
\sys_if_engine_ptex:(TF) is *not* true for e-upTeX, only for e-pTeX. As
expl3 requires e-TeX we have called engines in the e-(u)pTeX tests
"ptex" and "uptex".
We expect to expand the sys module to include a range of useful tests
for the current environment: these will be added shortly.