\usemodule[present-luatex] \startdocument [title={\luaTeX}, subtitle={Version 1.00}, location={ConTeXt meeting \emdash\ September 2016}, mp:title={luatex}, mp:subtitle={1.00\space\endash\space2016}] \startstandardmakeup After ten years of stepwise development and experimenting we release version 1.00 of \LuaTeX\ during the 10\high{th} \ConTeXt\ meeting in the Netherlands, September 2016. The interface is now rather stable and will not change significantly which means that one can write stable packages. So, it's time for a bit reflection as well as time to tell what we will be doing next. \stopstandardmakeup \startstandardmakeup Around 2005, after we talked a bit about it, Hartmut added the \Lua\ scripting language to \pdfTeX\ as an experiment. This add|-|on was inspired by the \Lua\ extension to the Scite editor that I (still) use. \stopstandardmakeup \startstandardmakeup One could query counter registers and box dimensions and print strings to the \TeX\ input buffer. The Oriental \TeX\ project then made it possible to go forward and come up with a complete interface. For this, Taco converted the code base from Pascal to C, an impressive effort. \stopstandardmakeup \startstandardmakeup We spent more than a year intensively discussing, testing and implementing the interface between \TeX\ and \Lua. In successive years we polished things and extended bits and pieces. The last few years we cleaned up, filled in gaps and reached the point where we were more of less satisfied. \stopstandardmakeup \startstandardmakeup The core is still traditional \TeX, but extended with \pdfTeX\ protrusion and expansion (reworked) and directional features from Aleph (cleaned up). \stopstandardmakeup \startstandardmakeup The font subsystem accept now wide fonts. The hyphenation machinery can use runtime loaded (and extended) patterns. Hyphenation, ligaturing, kerning are separated. Most steps in processing node lists can be intercepted using callbacks. The math machinery has opentype math code paths. \stopstandardmakeup \startstandardmakeup All in- and output can be controlled and intercepted. The backend code has been separated better. You can write (simple) parsers. Nodes can be accessed and manipulated. Images and reuseable boxes are now native. \stopstandardmakeup \startstandardmakeup The project is driven by \ConTeXt\ users and \ConTeXt\ development. Right from the start \ConTeXt\ supported \LuaTeX. This means that most mechanisms have been tested in production. Raw performance is less than 8 bit \pdfTeX\ but in practice and on modern machines \LuaTeX\ behaves well. \stopstandardmakeup \startstandardmakeup We will continue development, but functionality will stay stable within versions. Of course bugs will be fixed. The code will be further streamlined and documented. We deliberately postponed some cleanup till after version 1.00. Of course the manual will be improved over time. \stopstandardmakeup \startstandardmakeup[bottom=,top=] \vfil \ssbf Hans Hagen \par Hartmut Henkel \par Taco Hoekwater \par Luigi Scarso \par \vfil \vfil \vfil \txx many thanks to all the\break early adopters \vfil \stopstandardmakeup % ideas \startstandardmakeup \midaligned{Some ideas (1)} So far we managed to avoid extensions beyond those needed as part of the opening up. We stick close to Don Knuths concepts so that existing documentation still conceptualy applies. We keep our promise of not adding to the core. We might open up (make configureable) some of the still hard coded properties. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (2)} Some node lists can use a bit of (non critical) cleanup, for instance passive nodes, local par nodes, and other left|-|overs. Maybe we should add missing left|/|right skips. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (3)} We can optimize some callback resolution (more direct) so that we can gain a little performance. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (4)} Inheritance of attributes needs checking and maybe we need to permits some more explicit settings. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (5)} Bring some more code to the api file. Use the global PDF and \Lua\ states consistently. Some macros can probably go away. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (6)} Minimize return values of \Lua\ functions; only return nil when we expect multiple calls in in one line. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (7)} Figure out a way to deal with literals in virtual characters (relates to font switching in the result). \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (8)} Maybe reorganize some code so that documentation is easier. See if we can stick close to what Don Knuth documents. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (9)} Cleanup and isolate the backend a bit more. Maybe add a bit more options to delegate to \Lua. Get rid of some historic PDF artifacts. \stopstandardmakeup \startstandardmakeup \midaligned{Some ideas (10)} It is tempting to think of a (lean and mean) \LuaTeX\ variant for \ConTeXt. We will not touch stable unless it concerns bug fixes, but we will expose \ConTeXt\ users to the experimental branch (as we do now). So \unknown\ be prepared. \stopstandardmakeup \stopdocument