1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
|
% language=uk
\usemodule[abbreviations-smallcaps]
\usemodule[present-luatex]
\logo [LUAMETATEX] {LuaMeta\TeX}
\setupbodyfont[12pt]
\setupalign[verytolerant]
\setupdocument
[title={The follow up},
subtitle={\LUAMETATEX},
location={Bacho\TeX\ May 2019},
author={Hans & Alan},
mp:title={\LUAMETATEX}]
\startdocument
\page \setupdocument[mp:subtitle={From lead to gold}]
\startitemize
\startitem
This talk is {\bf not} about how we can use \LUATEX\ to control domotica
applications. We already discussed that.
\stopitem
\startitem
This talk is {\bf not} about how we can use \CONTEXT\ in advanced
rendering, for instance as part of web|-|based workflows. That's old
news.
\stopitem
\startitem
This talk is {\bf not} about how much fun it would be to have a
\MICROSOFT\ HoloLens and see what \CONTEXT\ and \LUATEX\ could do with
it. We just can't afford it.
\stopitem
\startitem
This talk is {\bf not} about more complexity, but it is about keeping
things simple. It's about turning a burden into a pleasure.
\stopitem
\startitem
To quote the Riverside \footnote {A Polish progrock band I recently saw
live in the Netherlands. A band related to Lunatic Soul.} frontman: I
hope you all leave here a bit younger than you felt when you came here.
This talk is about turning lead into gold.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={Where do we stand}]
\startitemize
\startitem
We have the weight and experience of about 40 years of \TEX\ and its
usage on our shoulders.
\stopitem
\startitem
Good old \TEX\ got extended: \ETEX, \OMEGA\ (\ALEPH), \PDFTEX, \XETEX,
[e][u][p]\TEX\ and \LUATEX\ (& \LUAJITTEX) showed up.
\stopitem
\startitem
The \DVI\ output got complemented by \PDF.
\stopitem
\startitem
Bitmap fonts were replaced by \TYPEONE\ that itself got replaced by the
container formats \OPENTYPE\ and \TRUETYPE. Variable fonts were
introduced.
\stopitem
\startitem
Math got upgraded to \OPENTYPE\ math, thanks to \MICROSOFT.
\stopitem
\startitem
\UNICODE\ got accepted and \UTF\ is nowadays the preferred input
encoding.
\stopitem
\startitem
The community supported the development of many fonts that found their
place in distributions.
\stopitem
\startitem
Alongside plain \TEX\ the macro packages \LATEX\ and \CONTEXT\ both
evolved into large collections of resources.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={Are we good?}]
\startitemize
\startitem
There is no doubt that \TEX\ is a success. We can find nice examples but
also some horrible looking documents.
\stopitem
\startitem
A large distribution is no guarantee for quality and continuous success,
nor is the number of incidental (forced) users.
\stopitem
\startitem
A \CONTEXT\ user doesn't need that much: just the \LUATEX\ binary will
do, plus a bunch of \MKIV\ macros, completed by a reasonable set of
fonts.
\stopitem
\startitem
Currently all that is embedded in a large ecosystem, although we always
use only a small, reasonable subset.
\stopitem
\startitem
Getting the whole machinery up and running from scratch (source code) is
not trivial.
\stopitem
\startitem
The source code base is rather large and compilation is complex: it builds on
decades of being nice for all platforms and fulfilling all demands.
\stopitem
\startitem
What we consider gold could also be seen as lead in disguise. Some
alchemy might be needed to go back to where we came from.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={The Status Quo}]
\startitemize
\startitem
At some point you need to stabilize and for \LUATEX, version 1.10 is that
moment.
\stopitem
\startitem
But some ideas and experiments have been delayed because the engine was
already in use, also outside of \CONTEXT.
\stopitem
\startitem
Compatibility is a {\bf big} issue in the \TEX\ community (which is good)
so we're in a sort of a deadlock (which is bad).
\stopitem
\startitem
And we wanted to take a next step in \CONTEXT\ development. It's not
strictly necessary to make drastic changes, but we need to adapt.
\stopitem
\startitem
The question is how we can guarantee users a long|-|term stability of
the both macro package as well as the engine it runs on.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={What Is Needed}]
\startitemize
\startitem
For \CONTEXT\ we want just one binary. We don't really need \LUAJITTEX\
for \LUAJIT\ is not following \LUA\ anyway.
\stopitem
\startitem
We don't want (for windows) a special stub binary. After all we already
have the \type {context} job manager and \type {mtxrun} script manager.
All platforms should be treated alike.
\stopitem
\startitem
Performance should be stable and not influenced by code added to the
binary. In fact, performance should constantly improve!
\stopitem
\startitem
The engine should not depend on libraries that are floating, get updated
frequently, and can come from places out of our control (versions).
\stopitem
\startitem
The memory footprint should be acceptable for running in containers (or
small virtual machines). Energy consumption matters too.
\stopitem
\startitem
The binary should be kept small because it also serves as the \LUA\
interpreter.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={How It Went}]
\startitemize
\startitem
Around the \CONTEXT\ meeting I took \LUATEX\ 1.09.0 experimental as
starting point and began stripping.
\stopitem
\startitem
Before that, I already had written some test code to see what could be
replaced.
\stopitem
\startitem
Stepwise redundant components were removed. This took time because each
(small) step was tested on real documents, the test suite, etc.
\stopitem
\blank[2*big]
\startitem
\unknown\ maybe some examples & \type {/install-lmtx/*} \unknown
\stopitem
\blank[2*big]
\startitem
I played with some ideas that were put on hold, some were accepted and
some were rejected and more and more got in the mood.
\stopitem
\startitem
Also \LUAJIT\ was dropped, but its removal was compensated by large
performance boosts in other areas.
\stopitem
\startitem
The build was simplified (it took some time to find what was irrelevant)
and compilation now is about half a minute, or less!
\stopitem
\stopitemize
% we found out the hard way in the past (generalizing, other use, backfire)
\page \setupdocument[mp:subtitle={Where are we}]
\startitemize
\startitem
We have an experimental new installer for \CONTEXT\ \LMTX\ (the new
name). It uses \HTTP: and just the engine for fetching data. Updating
goes fast.
\stopitem
\startitem
The \LMTX\ distribution is \MKIV\ only and much smaller than the full
installation.
\stopitem
\startitem
Eventually (soon) the source code of the used engine will be in the
distribution so that we have a self contained package. Users on
new or unique systems can compile.
\stopitem
\startitem
The development of the engine is under control of the \CONTEXT\
developers: that way there is no danger that things break. We like to
have a playground.
\stopitem
\startitem
Extensions can make it into \LUATEX\ once found useful and stable as
long as they don't break \LUATEX\ upward compatibility (unlikely on the
short term).
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={Some highlights}]
\startitemize
\startitem
There is no backend code. We generate the \PDF\ output in \LUA\ (this was
already the case for much of it.)
\stopitem
\startitem
There is no bitmap image inclusion code present. All is done in \LUA.
\stopitem
\startitem
There is no font loading code present. This already happened mostly in
\LUA\ anyway.
\stopitem
\startitem
Some libraries have been removed and some have been simplified. A few
experimental helper libraries were added (like math). The dependencies
are minimal.
\stopitem
\startitem
The code is undergoing some restructuring but it might take some years
before I've reached the (informal) goals.
\stopitem
\startitem
Alan and I are exploring new possibilities that this setup gives
(especially in combining \TEX, \METAPOST\ and \LUA. Stay tuned.
\stopitem
\stopitemize
\page \setupdocument[mp:subtitle={The agenda}]
\startitemize
\startitem
As of April 1, 2019, users can test the experimental distribution. A few
were already in the loop.
\stopitem
\startitem
It looks like there are no big issues, and speed gains can be impressive.
\stopitem
\startitem
As a consequence we can start dropping in replacement code in regular \MKIV\
some day soon too.
\stopitem
\startitem
Around the next \CONTEXT\ meeting the source code will become part of the
regular distribution (given that I'm satisfied with it).
\stopitem
\startitem
Before that we hope to have the compile farm up and running for \LUAMETATEX.
\stopitem
\startitem
From that moment on, the \CONTEXT\ users will have a self contained, archival,
independent, lean and mean installation available, which will become the
default.
\stopitem
\startitem
Because \LUAMETATEX\ is a subset of \LUATEX, there are no plans right now
for supporting plain \TEX. We'll see. (I might come up with generic
backend code some day.)
\stopitem
\stopitemize
\stopdocument
|