better condition for *bsd* for ffi (trunk & tags)
[luatex.git] / manual / luatex-introduction.tex
blobe6025cb36ba6e92e01671eb8d76fe0924f32cfbf
1 % language=uk
3 \environment luatex-style
4 \environment luatex-logos
6 \startcomponent luatex-introduction
8 \startchapter[title=Introduction]
10 This is the reference manual of \LUATEX. We don't claim it is complete and we
11 assume that the reader knows about \TEX\ as described in \quotation {The \TEX\
12 Book}, the \quotation {\ETEX\ manual}, the \quotation {\PDFTEX\ manual}, etc.
13 Additional reference material is published in journals of user groups and
14 \CONTEXT\ related documentation.
16 It took about a decade to reach stable version 1.0, but for good reason.
17 Successive versions brought new functionality, more control, some cleanup of
18 internals and experimental features evolved into stable ones or were dropped.
19 Already quite early \LUATEX\ could be used for production and it was used on a
20 daily basis by the authors. Successive versions sometimes demanded a adaption to
21 the \LUA\ interfacing, but the concepts were unchanged. The current version can
22 be considered stable in functionality and there will be no fundamental changes.
23 Of course we then can decide to move towards version 2.00 with different
24 properties.
26 Don't expect \LUATEX\ to behave the same as \PDFTEX ! Although the core
27 functionality of that 8 bit engine was starting point, it has been combined with
28 the directional support of \OMEGA\ (\ALEPH). But, \LUATEX\ can behave different
29 due to its wide (32 bit) characters, many registers and large memory support.
30 There is native \UTF\ input, support for large (more that 8 bit) fonts, and the
31 math machinery is tuned for \OPENTYPE\ math. There is support for directional
32 typesetting too. The log output can differ from other engines and will likely
33 differ more as we move forward. When you run plain \TEX\ for sure \LUATEX\ runs
34 slower than \PDFTEX\ but when you run for instance \CONTEXT\ \MKIV\ in many cases
35 it runs faster, especially when you have a bit more complex documents or input.
36 Anyway, 32 bit all||over combined with more features has a price, but on a modern
37 machine this is no real problem.
39 Testing is done with \CONTEXT, but \LUATEX\ should work fine with other macro
40 packages too. For that purpose we provide generic font handlers that are mostly
41 the same as used in \CONTEXT. Discussing specific implementations is beyond this
42 manual. Even when we keep \LUATEX\ lean and mean, we already have enough to
43 discuss here.
45 \LUATEX\ consists of a number of interrelated but (still) distinguishable parts.
46 The organization of the source code is adapted so that it can glue all these
47 components together. We continue cleaning up side effects of the accumulated
48 code in \TEX\ engines (especially code that is not needed any longer).
50 \startitemize[packed]
51 \startitem
52 Most of \PDFTEX\ version 1.40.9, converted to \CCODE. Some experimental
53 features have been removed and some utility macros are not inherited as
54 their functionality can be done in \LUA. The number of backend interface
55 commands has been reduced to a few. The extensions are separated from the
56 core (which we keep close to the original \TEX\ core). Some mechanisms
57 like expansion and protrusion can behave different from the original due
58 to some cleanup and optimization. Some whatsit based functionality (image
59 support and reusable content) is now core functionality.
60 \stopitem
61 \startitem
62 The direction model and some other bits from \ALEPH\ RC4 (derived from
63 \OMEGA) is included. The related primitives are part of core \LUATEX\ but
64 at the node level directional support is no longer based on so called
65 whatsits but on real nodes. In fact, whatsits are now only used for
66 backend specific extensions.
67 \stopitem
68 \startitem
69 Neither \ALEPH's I/O translation processes, nor tcx files, nor \ENCTEX\
70 can be used, these encoding|-|related functions are superseded by a
71 \LUA|-|based solution (reader callbacks). In a similar fashion all file
72 \IO\ can be intercepted.
73 \stopitem
74 \startitem
75 We currently use \LUA\ 5.2.*. At some point we might decide to move to
76 5.3.* but that is yet to be decided. There are few \LUA\ libraries that
77 we consider part of the core \LUA\ machinery, for instance \type {lpeg}.
78 There are additional \LUA\ libraries that interface to the internals of
79 \TEX.
80 \stopitem
81 \startitem
82 There are various \TEX\ extensions but only those that cannot be done
83 using the \LUA\ interfaces. The math machinery often has two code paths:
84 one traditional and the other more suitable for wide \OPENTYPE\ fonts.
85 \stopitem
86 \startitem
87 The fontloader uses parts of \FONTFORGE\ 2008.11.17 combined with
88 additional code specific for usage in a \TEX\ engine. We try to minimize
89 specific font support to what \TEX\ needs: character references and
90 dimensions and delegate everything else to \LUA. That way we keep \TEX\
91 open for extensions without touching the core.
92 \stopitem
93 \startitem
94 The \METAPOST\ library is integral part of \LUATEX. This gives \TEX\ some
95 graphical capabilities using a relative high speed graphical subsystem.
96 Again \LUA\ is used as glue between the frontend and backend. Further
97 development of \METAPOST\ is closely related to \LUATEX.
98 \stopitem
99 \stopitemize
101 We try to keep upcoming versions compatible but intermediate releases can contain
102 experimental features. A general rule is that versions that end up on \TEX live
103 and|/|or are released around \CONTEXT\ meetings are stable. Future versions will
104 probably become a bit leaner and meaner. Some libraries might become external as
105 we don't want to bloat the binary and also don't want to add more hard coded
106 solutions. After all, with \LUA\ you can extend the core functionality. The less
107 dependencies, the better.
109 The \TEXLIVE\ version is to be considered the current stable version. Any version
110 between the yearly \TEXLIVE\ releases are to be considered beta. The beta
111 releases are normally available via the \CONTEXT\ distribution channels (the
112 garden and so called minimals).
114 \blank[1*big]
116 Hans Hagen, Harmut Henkel, \crlf
117 Taco Hoekwater \& Luigi Scarso
119 \blank[3*big]
121 \starttabulate
122 \NC Version \EQ \currentdate \NC \NR
123 \NC \LUATEX \EQ Snapshot \number\luatexversion.\luatexrevision \NC \NR
124 \NC \CONTEXT \EQ \contextversion \NC \NR
125 \stoptabulate
127 \stopchapter
129 \stopcomponent