ontarget-introduction.tex /size: 6332 b    last modification: 2024-01-16 09:02
1% language=us runpath=texruns:manuals/ontarget
2
3\startcomponent ontarget-introduction
4
5\environment ontarget-style
6
7\startchapter[title={Introduction}]
8
9This is the seventh wrapup of the \LUATEX\ and \LUAMETATEX\ development cycle. It
10is dedicated to all those users who kept up with developments and are always
11willing to test the new features. Without them a project like this would not be
12possible.
13
14At the time this introduction is written the \LUAMETATEX\ code base is rather
15stable and quite a bit of the \MKIV\ code base has been adapted to new situation.
16But, as usual, there are always new possibilities to explore, so I expect that
17this document will grow over time as did the others. I'm not going to repeat all
18that has been done because that's what the previous episodes are about.
19
20As the title suggest, we're still on target. When the \LUAMETATEX\ project
21started there actually was no deadline formulated so in fact we're always on
22target. The core components \TEX, \METAPOST, and \LUA\ are all long term efforts
23so we're in no hurry at all. However, this is the year that a fast pace will
24become a slow pace with respect to the \LUAMETATEX\ code base. There are still
25some things on the agenda but in principle the goals are reached. One problem in
26today's code development is that useability and quality seems to relate to the
27amount of changes in code. No update can mean old, unusable and uninteresting.
28It's probably why some sources get this silly yearly copyright year update.
29However, the update cycle of good old \TEX\ has an decade interval by now while
30it is still a pretty useable program. It would be nice to end up in such a long
31term cycle with \LUAMETATEX: bug fixes only.
32
33Although \CONTEXT\ has always adapted early to new developments (color, graphics,
34\PDF, \METAPOST, \ETEX, \PDFTEX, \LUATEX, \UTF, fonts) the effects on the
35\CONTEXT\ code base are mostly hidden for users. There have been some changes
36between \MKII\ and \MKIV, simply because there has been a shift from specific
37eight bit encodings to \UTF\ and \TYPEONE\ to \OPENTYPE\ fonts. Both had an
38impact on important subsystems: input encodings, font definitions and features,
39language and script support. On other subsystems the impact was hardly
40noticeable, like for instance backend related features (these have always been
41kind of abstract). That doesn't mean that these haven't changed deep down, they
42definitely have. Some mechanisms became better in \MKIV, simply because less
43hackery was needed. My experience is that when users see that it gets better or
44easier, they are also willing to adapt the few lines in their document source
45that benefit from it. Of course the impact on the \METAPOST\ integration in
46\CONTEXT\ had a real large impact, especially in terms of performance.
47
48The upgrade to \LMTX, the version of \CONTEXT\ for \LUAMETATEX, is even less
49visible although already some new mechanisms showed up. This time a couple of
50engine specific features have been improved and made more flexible. In fact, the
51whole code base of the engine has been overhauled. This happened stepwise because
52we had to make sure all things kept working. As a first step code was made
53independent of the compilation infrastructure and the dependencies, other than a
54very few small ones, have been removed. The result is a rather lean and mean
55setup, even when we consider what has been added at the primitive level and
56traditional subsystems. A benefit is that in the meantime the \LUAMETATEX\ \LMTX\
57combination outperforms \LUATEX\ with \MKIV, something that was not ensured when
58the built|-|in \PDF\ backend was removed and delegated to \LUA. By binding
59development closely to \CONTEXT\ we also hope that the code base stays clean of
60arbitrary extensions.
61
62Because in the end, \TEX\ is also a programming language, there have been
63extensions that make programming easier. There is already a stable middle layer
64of auxiliary macros in \CONTEXT\ that help the user who likes to program but
65doesn't like real low level primitives and dirty tricks, but by extending the
66primitive repertoire a bit users can now stay closer to the original \TEX\
67concepts. Adding more and more layers of indirectness makes no sense if we can
68improve the bottom programming layer. It also makes coding a bit more natural
69(the \TEX\ look), apart from offering performance benefits. This is where you can
70see differences between the \MKIV\ and \LMTX\ code base which for that reason is
71now nearly split completely. The \METAPOST\ subsystem has been extended with
72proper scanners so that we can enhance the interfaces in a natural way and as a
73result we also have an upgraded code base there. We also moved to \LUA 5.4 and
74will keep up as long as compatibility is no issue. Some \LUA\ code is likely to
75remain common between \MKIV\ and \LMTX, for instance font handling and helpers
76but we'll see where that ends.
77
78The \LUAMETATEX\ engine provides control over most internals and there are all
79kind of new interesting features. Decades of \CONTEXT\ development are behind
80that. Also, in the days that there were discussions about extending \TEX,
81\CONTEXT\ was not that much of influence and on the road to and from user group
82meetings, Taco and I often discussed what we'd like to see added (and some was
83actually implemented in \type {eetex} but that only lived on our machines. One
84can consider \LUATEX\ to be a follow up on that, and \LUAMETATEX\ in turn follows
85up on that project, which we both liked doing a lot. In some way \LUATEX\ lowered
86the boundary for implementing some of the more intrusive extensions in
87\LUAMETATEX\ and the follow up on \MPLIB. And once you start along that road
88small steps become large steps and one can as well be try to be as complete as
89possible. We've come a long way but eventually arrived at the destination.
90Personally I think we got there by not being in a hurry. Even targets that are
91(nearly) reached can eventually move,
92
93I want to use this opportunity to thank Karl Berry. When making some of the
94stories presented here ready for \TUGBOAT, he not only turns bad English into
95good, but also checks and feeds back on what we write. We really appreciate that
96and it also motivates us to keep wrapping up.
97
98\blank[2*big]
99
100\startlines
101Hans Hagen
102Hasselt NL
103August 2021\high{++}
104\stoplines
105
106\stopchapter
107
108\stopcomponent
109