% engine=luatex language=uk

\startcomponent hybrid-languages

\environment hybrid-environment

\startchapter[title={Introduction}]

We're halfway the development of \LUATEX\ (mid 2009) and
substantial parts of \CONTEXT\ have been rewritten using a mixture
of \LUA\ and \TEX. In another document, \quotation {\CONTEXT\
\MKII--\MKIV, the history of \LUATEX\ 2006--2009}, we have kept
track of how both systems evolved so far\footnote {Parts of this
have been published in usergroup magazines like the \MAPS,
\TUGBOAT, and conference proceedings of \EUROTEX\ and \TUG.}. Here
we continue that story which eventually will end with both systems
being stable and more of less complete in their basic features.

The title of this document needs some explanation, although the
symbols on the cover might give a clue already. In \CONTEXT\
\MKIV, as it is now, we mix several languages:

\startitemize[packed]
\item good old \TEX: here you will see \type {{}} all over the place
\item fancy \METAPOST: there we use quite some \type {()}
\item lean and mean \LUA: both \type{{}} and \type {()} show up
      a lot there
\item unreadable but handy \XML: immediately recognizable by the
      use of \type {<>}
\stopitemize

As we use all of them mixed, you can consider \MKIV\ to be a
hybrid system and just as with hybrid cars, efficiency is part
of the concept.

\startlinecorrection[big]
\FLOWchart[conversion 10]
\stoplinecorrection

In this graphic we've given \LUA\ a somewhat different place than
the other three languages. First of all we have \LUA\ inside \TEX,
which is kind of hidden, but at the same time we can use \LUA\ to
provide whatever extra features we need, especially when we've
reached the state where we can load libraries. In a similar fashion
we have utilities (now all written in \LUA) that can manage your
workflow or aspects of a run (the \type {mtxrun} script plays a
central role in this).

The mentioned history document was (and still is) a rather good
testcase for \LUATEX\ and \MKIV. We explore some new features and
load a lot of fonts, some really large. This document will also
serve that purpose. This is one of the reasons why we have turned
on grid snapping (and occasionally some tracing).

Keeping track of the history of \LUATEX\ and \MKIV\ in a document
serves several purposes. Of course it shows what has been done. It
also serves as a reminder of why it was done that way. As
mentioned it serves as test, both in functionality and
performance, and as such it's always one of the first documents we
run after a change in the code. Most of all this document serves
as an extension to my limited memory. When I look at my source
code I often can remember when and why it was done that way at
that time. However, writing it down more explicitly helps me to
remember more and might help users to get some insight in the
developments and decisions made. \footnote {I read a lot and
regret that I forget most of wat I read so fast. I might as well
forget what I wrote so have some patience with me as I repeat
myself occasionally.}

Of course, although I wrote most of the text, this document is as
much a reflection of what Taco Hoekwater and Hartmut Henkel come
up with, but all errors you find here are definitely mine.

\stopsection

\blank

Hans Hagen, Hasselt NL,\crlf September 2009 and beyond

\blank

\type {http://www.luatex.org}

\stopchapter

\stopcomponent
