This file is in the public domain. ============================================================== Luatex Release 0.89.4 was released 2016031100 ============================================================== Intermediary release. Several bugs fixed. ============================================================== Luatex Release 0.89.2 was released 2016022700 ============================================================== Intermediary release. Several bugs fixed. ============================================================== Luatex Release 0.89.0 was released 2016020500 ============================================================== No fundamental changes, just some fixes / improvements (and of course new bugglets). - New backend things: \pdfvariable pkfixeddpi = integer % > 0 : use only default dpi (so one can do with one high res instance) \pdfvariable ignoreunknownimages = integer % > 0 : ignore missing and inject something empty (to be used with care) and one can do this: \edef\foo{\pdfvariable foo} \def \oof{foo} \ifx\foo\oof don't fool me\fi (side effect of no longer aborting on missing, so one implement a catch) ============================================================== Luatex Release 0.88.0 was released 2016011500 ============================================================== This is a next step upto 0.90 and it has the following changes: - mostly small bug fixes - a few setters/getters added to the pdf namespace (were in the tex one before) - The current libraries under libs are now: * poppler-0.40.0 * mpfr-3.1.3 * luajit-2.1.0-beta1 * gmp-6.1.0 * zziplib-0.13.62 * zlib-1.2.8 * lua52-5.2.4 * pixman-0.32.8 * libpng-1.6.21 * cairo-1.14.6 ============================================================== Luatex beta-0.87.0 was released 2015121700 ============================================================== This is a next step upto 0.90 and it has the following changes: - image data is no longer stored in the format (it was fragile anyway) - pdf backend data generated when in ini mode is no longer stored in the format - (incomplete) \mag support removed from pdf backend (this functionality is kept in dvi mode) - there are a couple of improvements that should make luatex run a little bit faster (but of course that depends on the job at hand) - some further pending issues / cleanup has been done (but this is not reflected in the interface) - there is a new primitive \nospace: \nospace=1 do now not inject glue for spaces (not even zero glue) \nospace=2 inject zero glue for spaces - there are new primitives \hpack, \vpack and \tpack that are like \hbox, \vbox and \vtop but they don't trigger callbacks - we no longer keep track of older math character and delimiter definition states, but this should normally go unnoticed - from now on only ^^XX, ^^C, ^^^^XXXX and ^^^^^^XXXXXX are supported so no funny odd values (three and five) - texio.setescape(0) disables escaping to terminal (a matter of taste) - the (current) lc codes are now saved with the (current) language when patterns are loaded unless one hs used \hjcode instead of \lccode; overloading of \hjcodes is possible (but of course goes ahead of hyphenation which is delayed till parbuilding or packaging - active characters can now be set with: \letcharcode123=\foo (experimental) - there are some experimental new primitives but these will be described when they are stable (currently being tested) - there is more backend error reporting and all error messages adn warnings (the non-tex ones) have been normalized - of course there are the usual small fixes and additional setters and getters in libraries (see manual) ============================================================== Luatex beta-0.85.0 was released 2015111400 (5550) ============================================================== -- roadmap The 0.85 release is has a lot of changes. It is the prelude to 0.90 which itself is a prelude to the 0.95 that will go on texlive 2016. The 1.00 release will happen around the 2016 context meeting. After that 2.* will become the next experimental branch (leading to 3.*). The most important changes between 0.80 and 0.85 are mentioned below. For more information consult the manual. -- the backend commands There is a better separation between front- and backend code. Some of the generic \pdf* commands have been promoted to core primitives (with different names), some have been removes like ximagecolordepth and ximagebbox have been removed and all that are left have been organized differently. The backend is now more abstract and provides three primitives only \pdfextension \pdfvariable \pdffeedback The first replaces \pdfannot and alike, the second replaces the variables that can be sused to control behaviour, and the third accesses the read only variables. See luatex-pdf.tex in the context distribution for a plain definition file. The big advantage of the separation (basically core (lua)tex + extensions) is that changes in the backend don't have consequences for the frontend and it's easier to locate possible issues in the code. We might split a bit more at the lua end too. -- nodes The boundary, dir and localpar whatsits are now normal nodes. The xforms and ximage whatsits are now a special kind of rule nodes (subtypes 1 and 2) and known as box- and image resources (see manual). Also, empty rules are now a valid subtype (subtype 3) with related commands \nohrule and \novrule. At the lua end one can now access the fields of a spec subnode directly in the parent, which has the benefit of more control and robust assignments (no need to check for writeability) while we keep the concept of shared glue specs (tex internals). By staying close to traditional TeX the Knuthian documentation still applies in most cases. The pdf action nodes are now pdf_action whatsit nodes (so no longer a pseudo core node). You can get the node subtypes with the node.subtypes function which adds a layer of abstraction (foo.subtype = "string" might be added in the future). -- expansion The hz optimization already only supported level 2 optimization, but now has a variant 3 that does only stretch glyphs and not kerns. Pending is a change where we go back to percentages instead of fractions of em. -- math The old/new codepath has been checked and italic correction which is fundamental different between the engines has been (partially) redone. We now have \mathsurroundskip that replaces mathsurround when it's non zero. The \mathtoptions (old 1) directive can be used for testing. This primitive is mostly for ourselves and used for development. The \Umathcharclass, \Umathcharfam and \Umathcharslot primitives can be used to fetch properties of a math character. The new \Uleft, \Uright and \Umiddle fence operators accept "height ", "depth " and the "noaxis" keyword as well the "exact" keyword for non-fitting ones. There is also \Uvextension. Optionally one can specify a 'class'. The \Udelimiter[under|over] and \U[under|over]delimiter primitives accept a width as well as left, middle and right keywords (for non fitting ones). There is also \Uhextension. The \abovewithdelimiter command accepts 'exact' as keyword (before the dimension) which nils the excessive spacing. The normal vgaps still apply. We have a new fraction primitive \Uskewed with a companion \Uskewedwithdelims. Optional keywords are 'noaxis' and 'exact'. There is a new directive \mathdisplayskipmode (esp for controlling the > 0 below skip check). With \mathscriptsmode you can fix anchoring of scripts (as needed for chemistry). The \Umathaccent commands accept a width and fraction argument. -- hyhenation The discretionary command now accept an optional "penalty " specification where the penalty will be stored with the node. Default is hyphenpenalty. -- file io texio.write/write_nl now writes to file if the first argument is a (valid) number reference to a file opened at the tex end; you can now open 128 files from the tex end (0..127) and the system command is no longer executed with 18 -- lua interface The tex. is hopefully better now. The tex.get* also can handle the built in registers. Especially prevdepth access should work out ok now. -- and ... As usual there are lots of small fixes, improvements, overhauls, small additions, hopefully all mentioned in the manual. -- warning This version is probably not compatible with the macro package that you use as some engine specific initializations need to take place (\pdf commands) and some node types have been changed. We now have separated pdf backend commands and the only left primitive categories are: core, (tex), etex and luatex, so no more pdftex, omega and umath (where the distinction became to fuzzy). Of course you can still prefix. ============================================================== Luatex beta-0.81.0 was released 2015100722 (5350) ============================================================== * A couple of primitives are removed, renamed and/or promoted to core (luatex) primitives. Here's a summary. It might demand some adaption in the way macro packages initialize so we will mention them here explicitly in advance. As shown below, a simple way to get backward compatibility is to \let old ones to new ones. So, Updating to this version also might demand an update in the macro package that you use! Here we go: % removed, can be done with callbacks if needed, one can define dimen dummies, like \newdimen\pdfeachlineheight \newdimen\pdfeachlinedepth \newdimen\pdflastlinedepth \newdimen\pdffirstlineheight \newdimen\pdfignoreddimen % removed, were already obsolete, one can \let them \let\pdftexversion \luatexversion \let\pdftexrevision\luatexrevision \let\pdftexbanner \luatexbanner % promoted (from pdftex), so pdf prefix gone, one can \let them \let\pdfnormaldeviate \normaldeviate \let\pdfuniformdeviate\uniformdeviate \let\pdfsetrandomseed \setrandomseed \let\pdfrandomseed \randomseed % promoted (from omega), so pdf prefix gone, one can \let them \let\pdfpagewidth \pagewidth \let\pdfpageheight\pageheight % redundant (etex wins over omega), so \font-less ones gone, one can \let them \let\chardp\fontchardp \let\charht\fontcharht \let\charit\fontcharit \let\charwd\fontcharwd % promoted (from aleph) \pagerightoffset \pagebottomoffset % promoted (from pdftex) \ifincsname \expanded \quitvmode % removed (from pdftex), so *pdf* ones gone, one can \let them \let\ifpdfabsnum \ifabsnum \let\ifpdfabsdim \ifabsdim \let\ifpdfprimitive\ifprimitive \let\pdfprimitive \primitive % promoted (from omega) \pagedir \bodydir \pardir \textdir \mathdir % promoted (from aleph) \boxdir % promoted (from pdftex) \lpcode \rpcode \efcode \leftmarginkern \rightmarginkern \tagcode \letterspacefont % promoted (from pdftex), so *pdf* ones gone, one can \let them \let\pdfprotrudechars\protrudechars \let\pdfadjustspacing\adjustspacing \let\pdfnoligatures \ignoreligaturesinfont \let\pdffontexpand \expandglyphsinfont % promoted (from pdftex), so *pdf* ones gone, one can \let them \let\pdfsavepos \savepos \let\pdflastxpos\lastxpos \let\pdflastypos\lastypos % on the todo list are: \pdfoutput : \outputmode \pdfmatrix : will get a normal syntax, no weird { } parsing \pdfcolorstackinit : might become obsolete \pdfcolorstack : might become obsolete So, apart from a few, the \pdf* primitives now relate to the backend only. % There is also a new primitive: \hyphenationmin This one determines the minimum word length (per language). At the same time we moved the (ex)hyphenpenalties in the disc nodes so you can inject discretionaries with specific penalties. There will also be an updated manual. Hans * new epdf.openMemStream(s,l,docid) to create a pdf from a lightuserdata or string. (experimental, do not use in production.) * uniform random generator in mplib is now specific for each numbersystem; * too_precise implemented for binary number system; * several bug fixes. ============================================================== Luatex beta-0.80.0 was released 20150319 (5195) ============================================================== * New library newtokenlib. It will replace the current token lib. * Fixed a bug on the normal random generator for double/decimal/binary number systems. * Several others bugs fixed. ============================================================== Luatex beta-0.79.3.1 was released 20150122 (5140) ============================================================== * Fixed a bug in mp.w with a wrong input that gives a seg. fault. ============================================================== Luatex beta-0.79.3 was released 20150121 (5130) ============================================================== * It's now possible with the MinGW compilers to build luatex and luajittex as DLL for Windows 32bit/64bit. The files are: libkpathsea-6.dll luajittex.exe luatex.exe texlua52.dll texluajit.dll In the next release the build.sh script be updated; for the moment just add "--enable-shared -disable-native-texlive-build " after --disable-all-pkgs in TL_MAKE. Building as DLL was tested only for Windows. * When possibile symbols in the exe are now hidden: this should avoid conflicts with the loading of dynamic shared object. * several bugfixes and improvements. The patches for MetaPost fix seg. faults occourred with wrong inputs. The functions: mp_get_numeric_value, mp_get_string_value, mp_get_boolean_value works if the value is a variable (i.e. not an internal variable, a loop variable and a macro argument); only mp_get_numeric_value now has support for loop variable and internal variable (but still not for macro arguments). ============================================================== Luatex beta-0.79.2 was released 20141111 (5082) ============================================================== * WARNING: the structure of the format file is changed. After the Web2C \TeX's magic constant: "W2TX" there is now a FORMAT_ID, a 32bit field that cannot be between 0 and 256 (included) so that there are no conflicts with the preexisting structure of the format. The value can be seen with --debug-format and currently is 907 (the sum of the values of the bytes of the ASCII string "don knuth"). * There is a new set of lua functions for StructElement and Attribute, convenient (even if not indispensable) for tagged pdf. * several bugfixes and improvements. ============================================================== Luatex beta-0.79.0 was released 20140328 (4960) ============================================================== * The luafontloader now returns 'tsidebearing' glyph values for OT/TT fonts, if applicable. * new lua variables: stats.luatex_hashtype, stats.luatex_hashchars, stats.lastluaerrorstring; the luajittex string hash method is now lua 5.1 compliant which gives better results for similar strings * new lua functions: tex.init_rand(), tex.uniform_rand(), tex.normal_rand(), tex.lua_math_randomseed(), tex.lua_math_random(), tex.show_context(); these helpers make luatex and luajittex compatible * In the lua node interface, there were often issues with rubbish in (especially) 'prev' fields because luatex itself never looks at those values. This is now cleaned up to prevent weird stuff happening inside lua node processing code. * pdf.pageattributes, pdf.pagesattributes, pdf.info, pdf.catalog, pdf.names and pdf.trailer now behave consistent and can be used to add these properties at the lua end in addition to their \pdf* counterparts atthe tex end; there are now pdf.get* and pdf.set* commands for them too (in future versions the old ways can become obsolete) * new accessors pdf.geth, pdfgetv, pdfgetpos, getgetmatrix as well as pdfhasmatrix helpers (in future versions the direct pdf.h and pdf.v accessor can become obsolete) * the pdf.pdf* variables have been removed (they were already obsolete for some years) * a new properties mechanism for associating lua tables with nodes that get cleaned up when nodes a freed (see manual for details) * several improvements to the way temporary (backend) data is stored at the lua end (better protection, more consistent) * a 'l' type for user nodes that holds a lua variable (can be set at the lua end) * if a late lua node is set at the lua end the string value can be a function as well which is then executed during serialization to the backend stream * Various small speedups * Various smallish fixes to the node direct interface * LPeg is now at version 0.12 * Some small fixes to the CFF (font) parsing * Font file inclusion reporting messages on the terminal now comply to the texconfig.trace_file_names setting * Removed some of the additional luafontloader.info() return information that was added in 0.78.2, but could not work properly. * new primitive \luafunction (see manual), with associated lua.get_functions_table() function * lua error message reporting has been altered a bit to make the distinction between \directlua and other lua source code sources clearer * Additional pdf document data functionality in the 'pdf' table has been cleaned up internally * Additional pdf destination names can now be set via lua. * New callbacks: finish_pdfpage, show_error_message, show_lua_error_hook, start_file, stop_file * Handling of \tracinglostchars is fixed * Embedded metapost library version is now 1.900 * luajittex is now included in the distribution. One can use buildjit.sh to build both luatex and luajittex, where supported by the platform * Synchronization with the TeXLive sources updated the following libraries: * libpng is now 1.6.10 * poppler is now 0.25.2 ============================================================== Luatex beta-0.78.2 was released 20140113 (4748) ============================================================== * Extended luafontloader's info() function to include data from the 'pfminfo' and 'names' structure. * Fixed a bug in the luafontloader library that made loading some fonts extremely slow (LastResort.ttf) * Removed a recent extension in the luafontloader library that made loading fonts with lots of glyphs slow (ArialUnicoce.ttf). Note: the extension made sure that there were no duplicate glyph names in the font after loading. * Restored --recorder output for lua files (dofile/loadfile/io.open) * One-at-a-time pattern adding from lua used to require enormous amounts of memory * luatex's fontloader.to_table() no longer reports 'altuni' table information for alternates that are solely driven by the font encoding. This fixes loading time issues for fonts that fill encodings by copying a single glyph many times, like e.g. LastResort.ttf from Apple. * The datestamp no longer appears in any banners. The associated \luatexdatestamp primitive is deprecated and will be removed in 0.80.0. * Synchronization with the TeXLive sources updated the following libraries: * cairo is now 1.12.16 * pixman is now 0.32.4 * lua is now 5.2.3 * zlib is now 1.2.8 * poppler is now 0.25.0 * That same TL synchronization also fixes these issues: * Always write "\nendstream" to the PDF for PDF/A-1b compliance. * Large file support (>4GB) in Lua * Big images could overflow on systems where sizeof(long)=4. * In writing CID CFF fonts to the PDF, and end_dict() was missing. * Unknown 'post' table versions (found in some broken ttf/otf fonts) are now treated as-if they specified version 3.0. * Fix crashes on 32-bit systems caused by bad C header inclusion order * Handle '--luac' and '--luaconly' properly * luatex is now released under GPLv2+, not just GPLv2. * luatex can now find .ofm metric files even if the extension is not given explicitly. * node.unset_attribute() was broken in 0.78.0 * The UTF-8 commandline patch from 0.78.0 for Win32 was removed again (did not work properly) ============================================================== Luatex beta-0.78.0 was released 20131231 ============================================================== * Instead of using expanded fonts, just calculate the expanded width of glyphs where needed, and carry expand info in the glyph nodes (all based on Hans' suggestions). All font expansion functions are disabled and most are removed. * New, faster (but limited) direct node access from lua, see the manual for details * Support for Apple Advanced Typography (AAT) information in fonts is dropped * Extended build script for mingw/msys (includes 64-bit support) * Various patches from/via Akira Kakuta for better Win32 integration * Fixes for some bugs in de pdfscanner library (mostly related to inline images) * Maximum hyphenated word length is now 64Kb characters. * Various patches from Khaled Hosny and Luigi Scarso for the luafontloader subsystem * Fix for a crash when re-dumping formats * Fix for a Selene unicode library bug where some characters in UTF-8 were incorrectly flagged as having the 'Space' property * Some smaller fixes ============================================================== Luatex beta-0.76.0 was released 20130405 ============================================================== * Metapost 1.801. * Small patches from TeXLive 2013, as well as an update to the latest libraries (libpng, poppler, etc.) * Speed up printing (of TeX strings) to the terminal and log. * New lua function node.end_of_math(). * Fixed a memory leak in the lua function pdfscanner.scan(). ============================================================== Luatex beta-0.75.0 was released 20130301 ============================================================== News: * New expandable primitive \Uchar. * Metapost 1.790. * New version of lnodelib.c with speedups by Hans and Luigi. Also added some extra sanity checks to the Lua node field setting functions. * Support 'umath' in tex.extraprimitives(), so that formats can make the \Umath* primitives unprefixed, now that they will be provided by XeTeX as well. * Removed a bunch of deprecated primitives * \AlephVersion, \Alephrevision, \Alephversion, \Alephminorversion * \OmegaVersion, \Omegarevision, \Omegaversion, \Omegaminorversion * \omathcode, \odelcode, \omathchardef, \omathchar, \omathaccent, \odelimiter, \oradical * \Umathbotaccent, \Umathaccents * Fix large file support. * Fix Lua's loadfile(). * Removed the cidmap callbacks again (let that be done by user lua code after the fact). * Removed the fatal error on fonts where num_glyphs is too high, as that problem is actually harmless. * Some compilation issues under Win32 and Solaris resolved. * Allow math extender objects to be zero width. * The 'epdf' library has been extended to deal with finding and saving embedded files (catalog:numEmbeddedFiles() and catalog: embeddedFile, new EmbFile object). ============================================================== Luatex beta-0.74.0 was released 20121224 ============================================================== News: * lua 5.2 There are no patches to the core Lua files; a future version of luatex will switch to loading the regular lua 5.2 dynamic library instead of depending on a statically compiled one. * A bleeding-edge version of luasocket is included, as there is no 5.2-compatible official release yet. * A new lua extension is the two-argument version of string.dump from Luajit: string.dump(function f, [boolean strip]) * mpost 1.780 * The implied existence of the following lua libraries is now deprecated: debug, unicode.*, luazip, lfs, lpeg, zlib, gzip, md5, socket.*, profiler, epdf, fontloader, mplib, and pdfscanner. Future versions of luatex will load these modules on demand from dynamic libraries. Please update your sources to include a 'require' line for each of the library modules mentioned. * Two new callbacks: find_cidmap_file and load_cidmap_file (used by the fontloader to discover .cidmaps) ============================================================== Luatex beta-0.72.0 was released 20121210 ============================================================== News: * update various used libraries, including mplib 1.770, poppler 0.21, libpng 1.5, and lpeg 0.10.2. * new 'pdfscanner' lua library. * various OpenType math fixes, including \Umathcharnumdef. * improved placement of bottom accents. * various other small fixes that have accumulated over the past year-and-a-half. ============================================================== Luatex beta-0.70.1 was released 20110519 ============================================================== News: * fixed: recorder file location from TL (Akira). * fixed: missing newline on 'No output' line. * fixed: relative names in synctex file. * fixed: 16bit png images in generated %!PDF-1.4. * fixed: building with (installed) libpng < 1.5.0 * fixed: year in --version output. * fixed: box output to synctex. * fixed: FontDescriptor for non-embedded OpenType fonts has an invalid FontFile3 entry (#654) * fixed: crash on non-existent images. * fixed: small memory leak in the ipc code. * fixed: tex.print() and tex.sprint() don't recognize -2 as the first argument (#659) ============================================================== Luatex beta-0.70.0 was released 20110506 ============================================================== News: * fixed: various changes needed for libpng 1.5.2. * fixed: node.fields() for nodes without subtype. * fixed: non-argument use of os.execute(). * fixed: tex.[s|t|]print() with invalid catcode table arguments. * fixed: recorder filename location with --output-directory. * fixed: display alignment in TRT mode. * luatex now uses the standard synctex files from Jérome Laurens. ============================================================== Luatex beta-0.66.0 was released 20110412 ============================================================== News: * fixed: linebreak_filter doesn't do its default job when tex.linebreak is used * fixed: \escapechar ignored by \meaning * fixed: wrong px default * fixed: font kern attribute inheritance * fixed: "nop" unrecognized in virtual fonts * fixed: assertion failure in dviluatex when font ptmr8t used * fixed: tex.settoks for with strings with embedded zeroes * fixed: an indexing problem with nonexistent font glyphs * fixed: some crashes and other bugs on the 'subtype' and 'prev' fields (not all node types have those fields) * fixed: crash on token.csname_id ("") * fixed: initialize the statically allocated node's type ids * fixed: fencepost error in math parameter counting * fixed: math family numbers > 255 are allowed * fixed: compilation failure on Hurd * fixed: a small bug leading to displacements when reading the AccentTop table * fixed: \directlua followed by \pdfximage generates error if draft mode is active * fixed: a problem with \vadjust pre in alignments * fixed: a lua stack growing problem in the backend in 0.65.0, resulting in an inability to create more than a few thousand generated pages * fixed: inclusion of Scribus-generated pdfs * adapt: the default form margin is now zero (was 1bp before) * adapt: libpng 1.4.4, zzuplib 0.13.60, mplib 1.504 * adapt: small changes to the build system and new imports from the texlive repository * feature: new function node.currentattr() queries the current active attribute list * feature: Lua font loading; ignore unknown enumeration keys in MathConstants * feature: JPEG 2000 image support * feature: continuing work on the 'epdf' library * doc: the 'epdf' lua library is now documented * doc: various other manual corrections ============================================================== Luatex beta-0.65.0 was released 20101213 ============================================================== News: * The Aleph and Omega version primitives are deprecated. * The Apple Snow Leopard Truetype font collections now work properly. * Libpng has been updated to 1.4.4, and zlib to 1.2.5. * New lua functions node.next() and node.prev(). * The already deprecated for some time node.protrusion_skipable() function has been removed. * fontloader.apply_featurefile() and fontloader.apply_afmfile() now return nil, on failure. * The various node list fields in the lua node interface have been renamed from 'list' to 'head', e.g. tex.box[0].head, and the 'list' name is deprecated. For now, the deprecation is silent, as 'list' will stay for quite some time. Please update your lua source as soon as possible, though. * The call node.type() now returns "node". The existing functionality is otherwise unchanged. * Luafilesystem has been updated to 1.5.0. NOTE: there is an incompatible change in the directory iterator method. * The restriction on linebreak_filter has been eased: at least one horizontal box should be returned, but that is not necessarily the last node any more. * Backward compatibility has been restored for \meaning\mathchar * node.first_character() has been renamed to node.first_glyph() to better match its actual functionality. * The \Umathaccent primitive now supports both/bottom keywords, and \Umathbotaccent / \Umathaccents are now deprecated. * The \Umathaccent primitive now also supports the fixed keyword, which supports non-growing math accents even if the font says there are extensible variants. * Ongoing work on the epdf library. Bugfixes: * Assignment to \dimen65535 was broken earlier. * .head.prev is now always initialized to null (0). * luatex -lua=