Hi,
I noticed that whatsit subtype "write" has changed "data" field type.
Documentation says "data -> table representing the token list to be written"
but when I print it I see it as a string with LuaTeX, Version 1.10.0 (TeX Live 2019):
HERE nil : whatsit 1> \foo\fee
With LuaTeX, Version 1.07.0 (TeX Live 2018/W32TeX) is ok:
HERE nil : whatsit 1> table: 02D87EC8
Minimal example:
\write1{\string\foo \unexpanded{\fee}}%
\directlua{
local head = tex.nest[tex.nest.ptr].head
local tl = node.tail(head)
print ("HERE", tl, tl.data)
}
\bye
The real world example will be:
\documentclass{article}
\usepackage[color=no]{nodetree}
\nodetreeoption[channel]{log}
\nodetreeregister{preout} % pre_output will rise an error trying to print whatsits data field
\begin{document}
\makeatletter
\protected@write \@auxout {}{\string\@gobble\string\fee} %% this is ok
\protected@write \@auxout {}{\string\@gobble\protect\foo} %% but this will rise \foo undefined error
\makeatother
\end{document}
And this is very strange that accessing whatsits (subtype "write") "data" field executes it.
Linas