\usemodule[pre-62]

\starttext

\TitlePage{A New\\Kind of \TeX}

\chapter {The evolution of pdf\TeX}

\StartSteps

\startitemize
\item pdftex 1.50: frozen stable version of pdftex \FlushStep
\item luatex: basic cleanup and lua support (developers test version) \FlushStep
\item orientaltex: official deliverable of an funded project \FlushStep
\item metatex: formal experimental version with metapost \FlushStep
\item pdftex 2.00: the first official stable version of metatex \FlushStep
\stopitemize

\StopSteps

\chapter {How we proceed}

\StartSteps

\startitemize
\item start with existing engines (pdftex, partial aleph) \FlushStep
\item move from 8 bit character handling to utf-8 \FlushStep
\item remain (mostly) downward compatible and provide an migration path \FlushStep
\item get rid of some interfering optimizations and clean up code base \FlushStep
\item provide complete control at each stage using Lua (callbacks) \FlushStep
\item manipulate input an multiple places (e.g. ascii and utf regexp) \FlushStep
\item provide (node) list manipulation (e.g. dedicated regexp) \FlushStep
\item in addition to specials, provide attribute states (push/pop) \FlushStep
\stopitemize

\StopSteps

\chapter {Reasons for using Lua}

\StartSteps

\startitemize
\item it's lightweight compared to other scripting languages \FlushStep
\item we want to permit multiple instances during a run \FlushStep
\item the interpreter is efficient and fast enough for our purpose \FlushStep
\item it has proven to be stable and is widely accepted \FlushStep
\item it has reached a mature state (version 5) \FlushStep
\item the language is conceptually clean and concise \FlushStep
\item it has some pleasant natural limitations \FlushStep
\item you don't need huge bulky manuals \FlushStep
\stopitemize

\StopSteps

\chapter {Talking and Tweaking}

\StartSteps

With regards to interfaces, think of: \FlushStep

\startitemize[columns,two]
\item tex.dimen[<number>]\endgraf
      tex.dimen["csname"]\endgraf
      tex.dimen.csname \FlushStep
\item tex.parindent \FlushStep
\item language.number\endgraf
      font.glyph[1234].width\endgraf
      tex.languages[0]\endgraf
      tex.fonts[789] \FlushStep
\item command.hbox\endgraf
      command.vbox\endgraf
      command.insert\endgraf
      command.display\endgraf
      command.alignment \FlushStep
\item kpse.find\_file\endgraf
      kpse.expand\_path\FlushStep
\item texio.input\_line\endgraf
      texio.write\FlushStep
\item pdf.type (ascii output)\endgraf
      pdf.outchar \FlushStep
\item \unknown \FlushStep
\stopitemize

\StopSteps

\chapter{How can we benefit from Lua}

\StartSteps

We can improve existing methods: \FlushStep

\startitemize
\item replace parts of macro packages \FlushStep
\item optimize computational extensive tasks \FlushStep
\item \goto{replace external methods by internal ones}[test-all::] \FlushStep
\stopitemize

But we can also be more drastic: \FlushStep

\startitemize[continue]
\item read from zip files (packaging) \FlushStep
\item use sockets to talk with other processes \FlushStep
\item replace and/or extending kpse (separation, integration) \FlushStep
\item extend the typesetting engine with external methods (using serialization) \FlushStep
\stopitemize

\StopSteps

\stoptext
