The release of pgf 3.1 on Jan the 6th broke a nightly build I'm running. Updating the package locally allowed me to reproduce the error, so I'm certain that's what caused it.
Here is a broken MWE:
\input tikz
Help?
\bye
Here is the log of running tex on it:
This is TeX, Version 3.14159265 (TeX Live 2018) (preloaded format=tex)
(./main.tex
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/basiclayer/pgf.tex
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/utilities/pgfrcs.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
x
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li
sts.tex))
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfutil-plain.def
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/atbegshi.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifpdf.sty)))
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/pgf.revision.tex)))
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/basiclayer/pgfcore.tex
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/systemlayer/pgfsys.tex
(/usr/local/texlive/2018/texmf-dist/tex/plain/pgf/utilities/pgfrcs.tex)
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
ode.tex))
! Undefined control sequence.
\pgfkeyssetevalue ...gfkeys@temptoks =\scantokens
\expandafter {\expandafter...
\pgfkeys@ifcsname ...\fi \ifpgfkeys@csname@test #2
\else #3\fi
\pgfkeys@ifcsname ...gfkeys@csname@test #2\else #3
\fi
\pgfkeys@ifcsname ...gfkeys@csname@test #2\else #3
\fi
\pgfkeys@unpack ...pgfeov \else \pgfkeys@case@one
\fi \fi
\pgfkeys@@normal ...pgfkeysnovalue =\pgfkeys@stop
\pgfkeys@parse
...
l.17 \pgfkeys{/pgf/.is family}
The MWE breaks using tex, ptex and uptex. It works using etex, pdftex, xetex, luatex, eptex and euptex.
It seems to break when using anything that's missing etex extensions. That makes sense since \scantokens is such an extension.
I'm a bit surprised by the breaking change, and I might simply be missing something.
Does this actually mean that pgf lost some compatibility?
If that's the case, does anyone know the rationale behind the decision (and perhaps a link to the commit)?
NOTE: There's no complaint here, I'd just like to learn more. I know infinite retrocompatibility is never to be expected, and I think the maintainers of pgf/TikZ are amazing.
tex; I've used it a few times. It's also documented as working (except for some things explicitly marked as not working) in the TikZ manual, e.g. see page 30 (section 2.2.2) which says "Gerda can typeset this file using eitherpdftexortextogether withdvips." I'd go further than the OP, this is definitely a bug. Or if the breaking change was intentional, there doesn't seem to be any announcement. – ShreevatsaR Feb 4 '19 at 20:30