As some people may be interested in the differences between
the luatex in TL 2009 and the one in the upcoming TL 2010,
so I compiled a list of all non-bugfix changes between
0.40.7 and 0.60.0. Please let me know if I missed something ...
* Many of the source files have been converted to CWEB.
* There is now support for revision numbers in the banner again.
* The horizontal mode nodes that are added to lines during line
breaking now inherit the attributes from the first and last node
inside the created line.
* All lua errors now report file and line numbers to aid in debugging.
* Luatex can now optionally use kpathsea to find lua require() files.
* The print precision for small numbers in lua code (tostring)
has been improved.
Embedded libraries and other third-party inclusions:
* Metapost is now at version 1.211.
* New synctex code imported from TeXLive.
* Libpng is now at version 1.2.40.
* The lua file from the luamd5 library (which provides the
md5.hexsuma() function) is now embedded in the executable.
* The Lua coroutine patch (coco) is now disabled on linux
powerpc architectures (because it caused crashes)
* Luatex now has support for dynamic loading of
external compiled lua libraries.
* The backend message "cannot open Type 1 font file for reading"
now reports which Type1 font file it was looking for.
* It is no longer possible for fonts from embedded pdf files
to be replaced by / merged with the document fonts of the
* Support for Type3 .pgc files has been removed.
* The variables <metrics>.Mathconstants.FractionDelimiterSize
are added to the font table. This allows proper setting of the
size parameters for TeX's ...withdelims math primitives.
* Artificially slanted or extended fonts now work via the pdf text matrix
so that it now also works for non-Type1 fonts. The lua <metrics>.slant
and .extend font keys are now obeyed in all cases.
* A change to the relative ordering inside font name discovery for use
by the backend: now it tries <f>.psname first, as that is much less
likely to contain spaces.
* For ttc fonts, now the used subfont name and its index id are printed
to the terminal, and if the backend cannot find a ttc subfont, the
run is aborted.
* It is now possible to use Apple dfont font files.
* There is a new allowed key in the table that is returned
by lua-loaded fonts: <f>.psname. This value should be set
to the original PostScript font name of the font. Fonts inside
dfont and ttc collections are fetched using this field
* lua-loaded fonts now support a 'nomath' key to speed up
loading the lua table.
* The loading speed of large fonts via the fontloader library, and
the inclusion speed for subsetting in the backend have both been
* Two new token lists are provided: \pdfxformresources and
\pdfxformattr, as an alternative to \pdfxform keywords.
* \input and \openin now accept braced filenames.
* The \endlinechar can now be set to any value between 0 and 127.
* The new primitives \aligntab and \alignmark are aliases for
the use of & and # in alignments.
* \pdfrefxform [width <dimen>] [height <dimen>] [depth <dimen>] <formref>
scales a form object; similar principle as with \pdfximage: depth alone
doesn't scale, it shifts vertically.
* \pdfrefximage [width <dimen>] [height <dimen>] [depth <dimen>] <imageref>
overrules settings from \pdfximage for this \pdfrefximage call only
* \pdfobj now has an extra optional keyword: 'uncompressed',
which forces the object to be written to the PDF in plain
text (see the manual for the exact details).
* \latelua is now allowed inside leaders.
* The new primitive \gleaders provides 'globally aligned' leaders.
* The \pdfcompresslevel is now effectively fixed as soon as
output to the pdf file has occurred.
* Removed obsolete pdftex primitives:
* (un-feature): from now on luatex now only handles 4 direction
specifiers: TLT (latin), TRT (arabic), RTT (cjk), and LTL
(mongolian). The other directions now generate an error.
Lua table extensions:
* callback table:
** There is a new callback: process_output_buffer
** The callbacks hpack_filter, vpack_filter and pre_output_filter
pass on an extra string argument for the direction, when known.
* fontloader table:
** fontloader.open() previously cleared some font names that it
* font table:
** new function font.id()
* kpse table:
** new functions kpse.lookup() and kpse.version()
* lfs table:
** new functions lfs.readlink() and lfs.shortname()
* node table:
** new function node.vpack()
** new function node.protrusion_skipable()
** new function node.dimensions().
** new function node.tail()
** Each glyph node now has three new virtual read-only fields:
width, height, and depth (values in scaled points)
** node.copy_list() now allows the second (optional) argument to be nil.
** node.hpack() now accepts "cal_expand_ratio" and "subst_ex_font"
** node.hpack() and node.vpack() also give back the badness of the box.
** node.copy_list() now allows a second (stop) argument.
** The lua functions node.hpack(), node.vpack() and node.dimensions()
now accept an optional direction argument.
** hlist nodes now have a subtype to distinguish hlists generated
by the paragraph breaking, explicit \hbox commands, and other sources.
** glue_spec nodes now have an extra field: writable.
* os table:
** os.name now knows about CYGWIN and kfreebsd.
* pdf table:
** new functions: pdf.mapfile(), pdf.mapline()
** new function pdf.registerannot()
** new functions pdf.obj(), pdf.immediateobj(), pdf.reserveobj()
** new read-write string keys: pdf.catalog, pdf.info,
pdf.names, pdf.trailer, pdf.pageattributes, pdf.pageresources,
* tex table:
** new function tex.badness()
** new function tex.linebreak()
** new function tex.sp()
** new function tex.tprint()
** new function tex.shipout()
** new sub-table: tex.nest (rw access to the semantic nest state).