============================================================== LuaTeX 1.18.0 2024-02-13 ============================================================== - New kpse.in_name_ok_silent_extended and kpse.in_name_ok_silent_extended - New kpse.in_name_ok, kpse.in_name_ok - New lfs.mkdirp that make parent directories as needed - In kpse mode os.rename,os.remove, lfs.attributes, lfs.chdir, lfs.lock_dir, lfs.dir, lfs.link, lfs.mkdir, lfs.mkdirp, lfs.rmdir, lfs.symlinkattributes, lfs.touch are now validated with kpse.in_name_ok_silent_extended *and* kpse.out_name_ok_silent_extended; lfs.attributes, lfs.dir and lfs.symlinkattributes are now validated only against kpse.in_name_ok_silent_extended - With --safer, all debug functions except traceback are nil - New commandline switch --[no-]check-dvi-total-pages exit when DVI exceeds 65535 pages (default: check). This breaks backward compatibility. - Some fixes, among others: * setgentounicode has a glyph_unicode_tree not NULL (thanks M. Chernoff) * Character index within the limits in defining a Type 3 font (H.Hagen). Thanks M. Chernoff. * Fix for dubious cff fonts (not following the 1000 unit recommendation) (Hans Hagen). * TEXMF_OUTPUT_DIRECTORY and output_directory have the same value, having output_directory the priority on TEXMF_OUTPUT_DIRECTORY. ============================================================== LuaTeX 1.17.0 2023-04-29 ============================================================== - A breaking backward compatibility change: by default the socket library is not enabled . The new option --socket enable the socket library as before, as also --shell-escape (without --shell-restricted); --nosocket, --no-socket , --safer disabled the library, and they have the priority in case of conflicting options. The mime library is always available; socket.sleep and socket.gettime are duplicated as os.socketsleep and os.socketgettime, both always available. The new os.kpsepopen replace io.popopen in kpse mode (i.e. when kpse_init is not zero) as it was before but the permission now cannot be changed anymore with kpse.check_permission . The function os.kpsepopen follows the same restrictions as io.popen . Thanks to Max Chernoff for debugging. ============================================================== LuaTeX 1.16.0 2023-02-19 ============================================================== - new "late special" feature by Phelype Oleinik, adapted and extended by H.Hagen. - new primitive \variablefam: use a family number as signal for using the current family. This permits classifying characters with a class and still let the family adapt. \variablefam"24 \Umathchardef\foo "3 "24 123 \foo \fam9 results in a curly left brace taken from family 9 with class ‘relation’ and spacing around it will be accordingly. - improved r2l annotation areas Several bug fixes (see ChangeLog). ============================================================== LuaTeX 1.15.0 2021-12-31 ============================================================== New primitive \matheqdirmode. By default the short skip detection is not adapted to r2l typesetting and that hasn't been the case since the start of the project. Changing it could break hacks that users came up with but when you set \matheqdirmode to a positive value direction will be taken into account. Several bug fixes (see ChangeLog). ============================================================== LuaTeX 1.14.1 2021-12-30 ============================================================== struct dest (M.F. Krüger); Ignore paragraphs with only a local par node followed by direction synchronization nodes (paragraphs like that are seen as empty paragraphs) (Hans Hagen); more efficient fontdimen allocation (Hans Hagen); improvements for glyph_stream_provider with TTF fonts (M.F. Krüger); provide interface for variable fonts in luaharfbuzz (M.F. Krüger); partoken primitives (Hans Hagen & Petr Olsak); PNG /Smask for pdf 2.0; \discretionaryligaturemode: optionally block select disc creation (see [Dev-luatex] [PATCH] Nested discretionaries M.F. Krüger) (Hans Hagen); different radical style defaults in mathdefaultsmode (see [Dev-luatex] Uunderdelimiter & friends and mathstyles by M.F. Krüger) (Hans Hagen). Several bug fixes (see ChangeLog). ============================================================== LuaTeX 1.13.2 2021-04-10 ============================================================== MetaPost 2.01 (to mark the patch on the unwanted space in btex etex). ============================================================== LuaTeX 1.13.1 2021-04-02 ============================================================== Fixed an unwanted space in btex etex in metapost, introduced after a patch for troff. ============================================================== LuaTeX 1.13.0 2021-03-12 ============================================================== This is the release for TeX live 2021. Callback for nesting level used in tracingmacros. It is is a variant of \tracingstacklevels by Petr Olsak implemented in pdftex and xetex. Two TeX January 2021 DEK buglet fixes (H.Hagen) Mark math glyphs as protected (in order to prevent processing as text in base mode). Removed width/ic compensation for traditional math code path. When restricted system commands is enabled os.setenv has no effect. Minor clean-up and bugs fixed (see ChangeLog) ============================================================== LuaTeX 1.12.0 2020-03-15 ============================================================== This is the release for TeX live 2020. --shell-restricted now forbids loading of dso (dll/so object) Scaled virtual font Aadditional primitives \eTeXglue[stretch|shrink]order for querying order the etex way. Extra features runtoks tex.getmodenames() (as these can differ per engine/version) Permit nested runtoks in more complex situations of nesting (HH) More accurate and correct test for tex.[set|get]math Minor clean-up and bugs fixed ============================================================== LuaTeX 1.11.1 2019-10-28 ============================================================== First release of luahbtex / luajithbtex, luatex / luajittex with harfbuzz. Small bug fixes, code clean up and a couple of new primitives to match eTeX. A new callback lua.getcodepage() for diagnostic purposes. *** DROPPED the "page_objnum_provider" callback, replaced with "page_order_index". *** See ChangeLog and the manual. ============================================================== LuaTeX 1.10.0 2019-03-15 ============================================================== This the release for TeX Live 2019. Small bug fixes, code clean up. This is a stable release: only bug-fixes until the next TeX Live. ============================================================== LuaTeX 1.09.2 2019-01-19 ============================================================== This is a transitional release to LuaTeX 1.10 for TeX Live 2019 ============================================================== LuaTeX 1.09 2018-10-23 ============================================================== (1) This is a release that fixed some bugs, and the latest with lua 5.2. (2) luaffi is still incomplete, so very likely there will be a new release 1.09.1 before the next year. ============================================================== LuaTeX 1.08 2018-08-28 ============================================================== (1) This release is a prelude to 1.10, the next stable iteration of LuaTeX after version 1.00. (2) Lua 5.3 is now considered to be default and we might use 5.4 in version 1.10. There are no real functional changed expected. You still need to rename the binary for 5.3! (3) Binary mode is no longer available in MPlib but it is still available in stand alone MetaPost. This simplifies compilation and reduces dependencies. (4) The dependency on Poppler for pdf image inclusion has been removed. We now use a small dedicated library written by Pawel Jakowski. We no longer need c++ compilers. We're in the process of making it behave well on all platforms. It has been tested on intel platforms. (5) We know that there can be some (alignment) issues with the arm platform but these are looked into. Therefore, later this year we will release 1.09. Version 1.10 is planned for TeXlive. We hope that ffi works ok on intel and arm platforms at that point. (6) There have been some extensions to the Lua libraries and some callbacks have been added. Also, a few new primitives have been introduced. The documentation mentions the stable extensions. (7) There are the usual bug fixes and cleanups but there have been no real fundamental changes in the API. ============================================================== LuaTeX 1.07 2018-01-17 ============================================================== (1) This release brings Lua 5.3 to LuaTeX. We have tested an experimental version for a few months and not encountered issues. (2) If you use Lua 5.3 you should be aware of a few changes in the language and its implementation. Numbers are now either integers or floats but are cast automatically. (3) In some cases (e.g. string.format) there is a more strict check. A float always has a decimal appended when serialized, so 1 becomes 1.0 as string. (4) We keep supporting the bit32 library on top of the new bit operators. Be aware of the fact that currently LuajitTeX does not have these operators. (5) Performance of LuaTeX with Lua 5.3 can be slightly better than with 5.2 but this really depends on your usage of Lua. In practice there should be no slowdown. (6) We are aware of possible substantial slowdown of string.format depending on the platform and compiler. This depends on Lua too and will be resolved in due time. (7) If you want to test with Lua 5.3 then have to build LuaTeX with --lua53. Because ConTeXt will switch to 5.3 after this release there will be binaries available at the ConTeXt garden. (8) The 2018 TeXlive distribution will ship with LuaTeX using Lua 5.2 but there will likely be an additional binary LuaTeX53 available. (9) From 2019 TeXlive will ship with LuaTeX and Lua 5.3 as default. We provide --lua52 as build flag for a while. By then we might be looking at Lua 5.4 already. (10) There are the usual patches and cleanups and a few small additions (mentioned in the manual) but there have been no fundamental changes in the API (apart from removing depricated and undocumented functionality). ============================================================== LuaTeX Release 1.0.4 was released 2017033109 ============================================================== Several small fixes. This version will go on texlive. ============================================================== LuaTeX Release 1.0.3 was released 2017021514 ============================================================== This is a minor upgrade and probably this version will go on texlive. There are a couple of fixes and additions. - We added a few a few more helpers in the pdf namespace (like set|get]gentounicode, [set|get]omitcidset and set|get]decimaldigits. Some helpers were moved from the tex to the pdf namespace. - We added a build_page_insert callback for inserts so that one can for instance adapt spacing on demand. - On the agenda has been some more control over word start and end in hyphenation and this is now possible via hyphenationbounds. We also updated the manual with some more details. - An old tracker item with respect to control over spacing around math was revived and has resulted in mathsurroundmode (one can wonder how useful this is). - We improved the resolution detection in included jpeg images. - An ffi library has been added to luatex so that it is more in sync with luajittex. This permits easy and flexible loading of libraries. Our policy is to make luatex as lean as possible with no dependencies and this is a step towards that. Eventually we hope to support all relevant platforms. - The glue and skip register accessors have been improved as a step in freeing the user from glue spec management. - We added a few more getters and setters for nodes in order to get a more consistent set. - Irrelevant fields have been removed from the status table and an engine identifier has been added. - Of course there are numerous fixes and improvements but none of these have consequences for the interfaces. - The manual has been updated but will be improved over time. ============================================================== LuaTeX Release 0.95 for TeX Live 2016 was released 2016042515 ============================================================== This is the official frozen TeXlive 2016 version. - deleted 'beta' from the luatex_version_string ============================================================== LuaTeX Release 0.95 was released 2016040415 ============================================================== This is a prerelease of the stable 1.0 version. - glues now have gluespec merged in (idem math and insert) - registers are still glue specs - the spec field in glues are gone - extra tex.setglue and tex.setmuglue - obsolete dvi related dir fields removed (if we are in time, it will be included in TeX Live 2016) ============================================================== LuaTeX Release 0.90.0 was released 2016032512 ============================================================== This is the version that will go on TeX Live 2016 - mostly small bug fixes - a few setters/getters added to the pdf namespace (were in the tex one before) - a few patches to the lua interface macros - a bit more control over protrusion edges - no fundamental changes ============================================================== 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=