Hi, 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 improved. '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: \pdfoptionalwaysusepdfpagebox \pdfoptionpdfinclusionerrorlevel \pdfforcepagebox \pdfmovechars * (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" modifiers. ** 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, pdf.pagesresources * 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).