% language=us runpath=texruns:manuals/followingup \startcomponent followingup-logging \environment followingup-style \startchapter[title={Logging}] \startsection[title={Introduction}] In \CONTEXT\ we have quite some logging enabled by default and even more when you enable trackers. Most logging is done with \LUA, which is quite efficient. Information from the \TEX\ machinery follows a different path and one reason for that is that it often happens on a character (or small strings) basis. The runtime of a job is, in spite of what one may expect, also dependent on the speed of the console: what fonts are used (there can be font features being applied), is the output buffered, and with what delays, how large is the history, etc. When more complex fonts arrived I found out that on \OSX\ generating a format was impacted by seconds. When on \MSWINDOWS\ the normal console was used its character|-|by|-|character flushing made it sluggish, and on \LINUX\ it depended on the font, kind of console, delays, etc. Lucky me, the \SCITE\ editors log pane beats them all. \footnote {I use the \LINUX\ subsystem on \MSWINDOWS\ for cross compiling \LUATEX, and with the advent of that subsystem the regular console was also rewritten so most of the delays are gone now.} At the \TEX\ end a few decades of coding has made the system also complex. \footnote {Interfaces like that are only partly defined by \TEX\ and left to the implementation.} Each string goes through a mechanism that checks with line ending to apply and where to cut off lines exceeding a preset maximum length, where \LUATEX\ also needs to take \UTF\ into account. Some characters can (optionally) be escaped with \type {^^} and occasionally the line length gets reset by explicit newline commands. In \CONTEXT\ already for a long time we always used an (at least) 10K line length and disabled output escaping. We have consoles that can handle long lines and live in an \UTF\ world so escaping makes no sense. And, when \OPENTYPE\ features get applied random line breaks can interfere badly. Just in case one wonders what happens with so called \type{null} characters: as all goes through \CCODE\ anyway, such a character just terminates a string. Therefore the line length limitations have been removed and the line|-|ending substitution be optimized. In principle this gives simpler codes and less overhead. The log is not always compatible with \LUATEX. For instance we output more details about node lists. This is natural because we have more subtypes and these can provide additional information (clues) when debugging \TEX\ code. In \LUATEX\ the error handling is already such that some can be delegated to \LUA, and later I will look into more isolation. But, error handling is quite interwoven in the code and I don't want to mess up the original concept too much. \footnote {Indeed the error handling was redone in such a way that we now have an even better isolation.} \stopsection \stopchapter \stopcomponent