[Dev-luatex] Luatex 0.40-0.60 delta

Taco Hoekwater taco at elvenkind.com
Sun Apr 4 12:20:06 CEST 2010


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 ...

General changes:

* 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.

Font related:

* 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
   enveloping pdf.
* Support for Type3 .pgc files has been removed.
* The variables <metrics>.Mathconstants.FractionDelimiterSize
   and <metrics>.Mathconstants.FractionDelimiterDisplayStyleSize
   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

'TeX'-side extensions:

* 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
   should not.

* 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).

More information about the dev-luatex mailing list