How should I have found out that LuaTeX removed \write18?

The manual of luatex mentions the change:

Also, we no longer support write18 because os.execute can do the same.

But I doubt very much that even if you had read this that you would have understand the implications and that it could affect tikzexternalize.

The change happened last year and if you search this site for shellesc you will find a number of questions (also involving texlive, it is not a miktex specific problem, Cannot run tikz externalize with lualatex but it used to work). But again: even if you saw one of this questions during the year I wouldn't expect from you to remember them and realize that they applicate to your current problem.

So what could you do? Some tipps:

  • Changes happen, even more with new software like luatex. Accept this.
  • Not every change is obvious and can be learned by reading the manual.
  • Don't try to solve your problems for hours alone. Search a bit and if you have the impression that you don't make any progress then better spent your time to make a sensible minimal example and then ask.

It's a bit unfortunate that Christian Schenk deploys in MiKTeX new versions of the binaries (luatex in this case) as soon as they are available.

TeX Live only changes (core) binaries with the yearly release and doesn't modify them during the year (except for very serious bugs, but these are usually caught during the pretest phase).

When LuaTeX 0.87 was released, many changes were made, in particular the one about \write18. If you look at LaTeX News 24, released February 2016, you'll see

enter image description here

and also

enter image description here


If using a beta release of software it's best to follow its development channels as breaking changes are expected in beta releases. This was discussed on the luatex list before the change was made. (Not true of all breaking changes in luatex:-). For example this thread from November 2015 http://tug.org/pipermail/luatex/2015-November/005499.html

Without following the mailing list, this change was flagged in ltnews and also in the luatex manual.

That said, in an ideal world an end user would not need to know this at all, we did search ctan for every use of \write18 that we could find and try to reach out to package developers to update packages before the changed luatex was distributed in major distributions. The minted github issue that you referenced being one example of that.

That there are still packages that require the end user to use shellesc (or luatex85) packages is a bit unfortunate but a possibly unavoidable result of the distributed nature of LaTeX package development. Packages are updated as and when the developers have time or inclination to publish an update.