diff options
author | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
---|---|---|
committer | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
commit | c6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch) | |
tree | 1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/web2c/luatexdir/NEWS | |
parent | 07ee7222e389b0777456b427a55c22d0e6ffd267 (diff) |
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/NEWS')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/NEWS | 4762 |
1 files changed, 0 insertions, 4762 deletions
diff --git a/Build/source/texk/web2c/luatexdir/NEWS b/Build/source/texk/web2c/luatexdir/NEWS deleted file mode 100644 index 168d2c40435..00000000000 --- a/Build/source/texk/web2c/luatexdir/NEWS +++ /dev/null @@ -1,4762 +0,0 @@ -============================================================== -LuaTeX 1.13.0 2021-02-18 -============================================================== - -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. -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 <keyword> <optional spec> - \pdfvariable <keyword> - \pdffeedback <keyword> - -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 <dimen>", "depth -<dimen>" 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 <number>" 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.<internal variable> 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,<errortable> 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(<node>) 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. - -* <box>.head.prev is now always initialized to null (0). - -* luatex -lua=<script> '\relax' no longer exits immediately, - instead going into interactive mode as it should. - -* The \jobname was initialized wrongly for input file names - with multiple dots in them. - -* The synctex file is now written in the right place when - --output-directory is given. - -* \letterspacefont could cause crashes, especially when combined - with font expansion. - -* Luatex would crash on linux32 systems if it was build in an - environment where LFS (>2GB files) was enabled by default. - -* Node lists created by node.copy_list() could not be hyphenated - due to an assertion error. - -* Synctex support was partially broken since 0.60.0. - -* With OpenType math fonts, accents with multiple parts - (like the \vec arrow) forgot to include all parts if the - accentee was too narrow. - -* With OpenType math fonts, accents over any class except 0 and 7 - were misplaced. - -* kpse.lookup("plain", {all = true}) was broken in kpathsea - itself (no extension given as well as --all specified). - -* A FontForge bug made Cambria Math accents look bad, and the - placement of math top accents did not allow a marker at the - origin (patches by Stefan Philipp) - -* Cut&Paste from PDF was sometimes broken due to bad ToUnicode map. - -* Many small manual improvements (thanks to Paul Isambert) - -* An other bugfix to lpeg 0.9 (from Roberto Ierusalimsky) - -* Some small fixes to writet1.w (from Han The Thanh) - -* A build failure because of bad libz configuration on Win32 - -============================================================== -Luatex beta-0.64.0 was released 20101112 -============================================================== - -News: - -* New lua functions pdf.refobj(), pdf.maxobjnum() and pdf.objtype() - -* New lua function node.is_node() - -* The max_strings configuration variable's maximum value is - raised to be identical to texlive's maximum (2097151), and - same for param_size (32767). - -* The embedded mplib is now 1.503. - -* Minor cleanups in the output of fontloader.to_table(): - - - removed out-of-range altuni's from the output - - don't dump the extra encodings, just the actual font encoding - - export the encoding's name also as 'enc_name' at one level up - - no longer exporting unset macstyles, nor zero uniqueids - - fix creationtime and modification time - -* Ongoing work on the epdf library - -Bugfixes: - -* Fix a bug where an explicit hyphen prevented hyphenation for the - whole rest of the paragraph - -* Internal font copying forgot to copy the last font dimen - -* os.selfdir() is now documented - -* patch quad (\fontdimen6) in \letterspacefont to be compatible - with pdftex - -* Multi-page pdf inclusion was very slow in 0.63.0 - -* Some extra checks added to the handling of glue_spec node - objects in lua code. - -* Some node.prev pointers have been corrected (but this is not - quite finished). - -* A small fix to lpeg 0.9. - - -============================================================== -Luatex beta-0.63.0 was released 20100909 -============================================================== - -News: - -* Drop tex.ht[], tex.wd[], tex.dp[]. - -* Drop OCP support (and associated primitives). - -* Add tex.catcode[], tex.lccode[], tex.sfcode[], tex.uccode[], - tex.mathcode[] and tex.delcode[] and associated functions. - -* Add CIDset tables to the output pdf where appropriate. - -* Added a 'string' field to late_lua nodes on the lua side. This - field does not convert the assigned string to a tokenlist. - -* The result of fontloader.open() now has some virtual accessors - (as well as fontloader.to_table). - -* There is now a `short reference' in the manual folder - (functionref.pdf) - -Bugfixes: - -* Fix a crash on an empty font (bugreport #468). - -* Fix a crash for extremely long pattern arguments. - -* Fix a crash on bad virtual character arguments in lua. - -* Fix hyphenation exceptions. - -* Prevent linebreak between initial local_par paragraph whatsit - and a following skip (bugreport #437). - -* Fix placement of scripts on textstyle big operators in MATH - fonts (bugreport #466). - -* Fix a crash on the return value of MPlib's 'postscript' - operation on images. - -* Fix a crash on \leftghost & \rightghost in math mode. - -============================================================== -Luatex beta-0.62.0 was released 20100823 -============================================================== - -News: - -* LuaTeX now uses libpoppler (0.12.4) instead of xpdf. - -* All backend functions now report what file they were searching - for whenever a file cannot be found. - -* Input-ed lua files are now mentioned in the fls file if - the --recorder switch is specified on the command line. - -* Paragraph indentation hlist nodes and hlist and vlist nodes - generated by alignment rows and cells now have a subtype - (3 for indent box, 4 for rows/columns, 5 for cells). - -* The 'epdf' lib is in active development and still growing. - -* The 'fontforge' table is finally removed (was deprecated - since 0.40). - -Bugfixes: - -* A new mplib import fixes two bad bugs in mplib: - - string equality test was wrong - - type declarations could delete pre-existing variables - -* PNG images with transparency could create random size - differences in the generated PDF. - -* In some special cases, font expansion could cause wrong - spacing in the generated PDF. - -* \letterspacefont was broken since a very long time. - -* The node subtype of the \leftskip and \rightskip glues was - wrong. - -* Some memory leaks have been removed. - -* Various manual fixes. - -============================================================== -Luatex beta-0.61.0 was released 20100728 -============================================================== - -New features: - -* New lua library 'epdf' for introspection of PDF inclusions, - see the manual for details. - -* Mplib version 1.502 is now included (which is still beta, - so be careful). - -* new "finish_pdffile" and "pre_dump" callbacks. - -* new function pdf.pageref() - -* In the lua 'tex' library: assignment to internal glue - parameters is now allowed. - -* New lua function tex.error(). - -Bugfixes: - -* Fix for crashes on fonts with bad Panose values. - -* Fix for a box placement bug that could sometimes cause text - to overlap. - -* Fix for a few small PDF/A1-a compatibility bugs. - -* Fix \letterspacefont. - -* Fix \Ustopdisplaymath in combination with aligned displays. - -* In math delimiters, the last of a chain of predefined sizes - was always ignored if there were also extensible parts. - -============================================================== -Luatex beta-0.60.2 was released 20100701 -============================================================== - -Bugfixes: - -* Various small portability fixes, especially for non-gcc - compilers. - -* Updated synctex from Jerome Laurens. - -* fix bug #406: \pdfliteral hinders hyphenation. - -* fix pdf overprinting bug (related to \pdfliteral). - -* patch from Akira Kakuto that ensures that only absolute commands -that are inside the %PATH% will be executed in win32's restricted -\write18 - -* fix a buffer overflow in luafontloader. - -* fix cross-platform share-ability of generated formats. - -* fix a few typos in the manual. - -* fix trashing of the null glue spec by attribute reference code. - -* documented the deprecated state and brokenness of otp processing. - - -============================================================== -Luatex beta-0.60.1 was released 20100428 -============================================================== - -New features: - -* renamed node.skipable() to node.skippable(). - -* More git discovery patches in getluatexsvnversion.sh. - -* Added --warnings=[no|min|yes|max|all] option to build.sh. - -* While cross-compiling, build.sh now adds an extra linker switch - to allow win32 exes to use 3G instead of 2G of virtual memory. - -Bugfixes: - -* os.exec() & os.spawn() handled the environment differently from - os.execute() on Win32 (patch from Tomek) - -* Builds with --enable-ipc were broken. - -* Assigning and acquiring \fontdimen s from TeX code was broken. - -* An initial attempt at fixing bug #372 (\predisplaydirection). - -* An attempt to fix \eqno/\leqno placements in mixed direction - \mathdir/\textdir. - -* Our local xpdf patch is reverted, it is not needed any more. - -* The os.selfdir variable was not documented, as well as broken - on WIN32. - -* Fix "\input tikz hello \bye" bug, plus fix one sign error. - -* Fix handling of lua script files with UNC names. - -============================================================== -Luatex beta-0.60.0 was released 20100404 -============================================================== - -New features: - -* os.name now knows about CYGWIN (from Elie Roux) - -* Internal handling of direction specifiers is faster now. - -* Each glyph node now has three new virtual read-only fields: - width, height, and depth (values in scaled points, of course) - -* There are new functions node.protrusion_skipable() and - tex.badness() (useful for paragraph breaking in lua) - -* Also new: tex.linebreak(). See the manual for details. - -* All lua errors now report file and line numbers to aid in - debugging. - -* Import of metapost 1.211. - -* pdf.pdfcatalog will be replaced soon by the new pdf.catalog - pdf.pdfinfo will be replaced soon by the new pdf.info - pdf.pdfnames will be replaced soon by the new pdf.names - pdf.pdftrailer will be replaced soon by the new pdf.trailer - -* pdf.pdfmapfile and pdf.pdfmapline are replaced by the new - pdf.mapfile() and pdf.mapline() functions. (a function interface - fits these parameters better because they never return anything). - -* New read-write lua variables: pdf.pageattributes, pdf.pageresources, - pdf.pagesresources - -* getluatexsvnversion.sh now correctly detects git-svn and still - manages to find a valid SVN revision number (from Patrick Gundlach) - -* Many of the source files have been converted to CWEB. - -Bug fixes: - -* GNU libtool is now used to solve the various technical issues with - dynamic loading of lua modules. - -* Error detection in scan_integer_part was wrong due to missing - initialization of OK_so_far (spotted by Javier Mugica) - -* Synctex was broken in 0.51-0.52. - -* \lastlinefit was broken since ... well, nearly forever. - -* Reading of binary files with length zero was broken. - -* Trapping of unitialized rules (this was for sloppily created - rule nodes from lua) - -* pdf.immediateobj('streamfile') was broken on 64-bit platforms. - -* tex.linebreak did not take the given left and right skip, but - instead used the current TeX-side values (bug #356). - -* the found 'MAKE' command in build.sh is now fed into configure to fix - problems with that not finding GNU make even when it is actually - installed. - -* dofile(<nil>) and loadfile(<nil>) in batch mode now give an - error and continue instead of pointlessly waiting for user input. - -* Reverted commit #3417 (the buildpage experiment) as it causes bad - things to happen when items are waiting during page breaks. - -* Overrule loaders[4] in --safer mode, make require() behave - closer to normal lua 5.1, and add some nicer error messages - (based on an email and patches from Manuel Pegourie-Gonnard) - -* Added an extra sanity check for GDEF loading in luafontloader, - based on a crash caused by Linux' AkaashNormal.ttf. - - -============================================================== -Luatex beta-0.52.0 was released 20100316 -============================================================== - -New features: - -* Various small manual improvements. - -* A better version of getluatexsvnversion.sh, from Tomek. - -* node.copy_list() now allows the second (optional) argument to - be nil. - -* An import of the current state of the texlive repository - (kpathsea and build system). - -Bug fixes: - -* An attempt fix for bug #345 (math kerning is not perfect): when the - current math font is a new math font, check against \catcode <cur_c> - == 11 to suppress the italic correction, instead of looking at - the value of space(<cur_f>). - -* There is a new <tfmtable> key: 'units_per_em' (defaults to 0). - This is part of a fix for bug #200 (Problem with CFF fonts having - em-size other than 1000): there is a special correction to the - embedded cff font itself and the font scale if the font to be output - is opentype or type1 in unicode encoding and the 'units_per_em - differs' from zero. - <tfmtable>.units_per_em has to be passed back to luatex from - the lua font loading code for this to work. - -* A fix for bug #314 (problem with pk file). - -* lua code can no longer change the internal preallocated glue_spec - nodes (as that resulted in weird spacing bugs). For this, glue_specs - now have a new field: 'writable'. If that field is false, a copy - has to be made of the glue_spec instead of doing an assignment - to it. - -* Setting of \textdir inside the output routine could trash output - on following pages due to a lingering internal variable. - -* \pdfthread crashed because the arguments were handled in reverse - order. - -============================================================== -Luatex beta-0.51.0 was released 20100312 -============================================================== - -New features: - -* Various small manual improvements. -* The backend message "cannot open Type 1 font file for reading" - now reports which Type1 font it was looking for. -* Fontforge clears some font names at loading time that will be - refilled in at font generation time, but the fontloader should not - do that. Patch from Khaled Hosny. -* New synctex code imported from TeXLive. -* luamd5/md5.h is renamed to luamd5/luamd5.h to avoid confusion. -* Embedded mplib is now 1.209. -* Some experimental tweaking of buildpage_filter, see the manual - for details. -* Luatex now detects kfreebsd (from Alan Braslau) -* The new lua function tex.sp() converts a string to a number - representing scaled points. -* There is now support for revision numbers in the banner and stats - library again. -* The command line help and manual documentation page is extended. -* node.hpack() now also accepts "cal_expand_ratio" and "subst_ex_font" - modifiers. -* node.hpack() and node.vpack() now give back the badness of the box - as second return value. -* node.copy_list() now allows a second (stop) argument, this stopper - is not copied. -* new lua functions in lfs: lfs.readlink() and lfs.shortname(). -* new lua function tex.tprint() that can combine multiple catcode - regime prints in one function call. -* new lua sub-table: tex.nest[] (read/write access to the semantic - nest state). -* New lua functions in kpse: kpse.lookup() and kpse.version(). See - the manual for more details. -* New lua function tex.shipout(). - -Bug fixes: - -* There problems in the pdf output for Type3 (pk) fonts. -* Fix a bug that allowed bad commandline quoting. -* Fix a bug that sometimes caused crashes when \pdfprotrudechars. -* The build script now exports CONFIG_SHELL to avoid problems with - /bin/dash. -* The was a bug in the generated /Image /ProcSet. -* status.font_bytes reported the wrong value. -* Lots of compiler warnings are removed (thanks Javier Mugica). -* Patch to fontloader.info() to accept filenames with embedded - parentheses. -* Fix a \write error with docstrip package. -* Fixed a crash on AdobeMyungjoStd-Medium.otf. -* Fix coco stack overflows, needed for lpeg. -* \pdfcompresslevel wasn't initialized for early immediate objects. -* Fix for slanted fonts when HZ was on (slant angle was multiplied). -* When concatenating content streams, put a space between them. -* Allow pfb lines to end with \r as well as \n (for msam10.pfb). -* Fix the internal string->scaled point conversion in the lua - interface. -* Memory leaks in the fontloader removed, thanks to patches from - Elie Roux. -* Fix a crash caused by the combination of coroutines and font.each(). - -Removed features: - -* Support for Type3 .pgc files (nobody used them). - -============================================================== -Luatex beta-0.50.0 was released 20091224 -============================================================== - -New features: - -* Fonts now listen also to the 'extend' key in the lua font - metrics table, and the processing for this is done via de - pdf text matrix instead of via the font matrix, which means - it now works for all font types. - -* The embedded Metapost library is now at version 1.209. - -Dropped features: - -* It is no longer possible for fonts from embedded pdf files - to be replaced by / merged with the document fonts of the - enveloping pdf. This regression may be temporary, depending - on how the rewritten font backend will look after beta 0.60. - -Bug fixes: - -* Use of \middle confused the \mathstyle operation. - -* \pdfcolorstack handling was broken. - -* node.unset_attribute() had a bug whereby it inverted the - requested result in some cases (the node on which the unset - was called was sometimes the only node at the current level - that *kept* the attribute). - -* During font expansion, the internal font copy had one character - information object less than the original, resulting in the - disappearance of a glyph in some fonts when font expansion - was active. - -* Placement of operator scripts of OT MATH fonts is adjusted - to be conformant with Word's logic where the italic correction - is only used to tuck in the subscript and for nothing else. - -* luafontloader.open() no longer writes directly to stderr in - case of internal font errors. - -* Any <pdf_refobj_node>.objnum could not be assigned to. - -* The lua 'pdf' table could not be assigned to. - -* The lua 'md5' library was returning incorrect results on - 64-bit architectures. - -* Luatex now compiles on GNU Hurd systems. - -* Fix segfault when embedding stream file object (these - backend segfaults were a side-effect of the string pool - patches). - -============================================================== -Luatex beta-0.47.0 was released 20091218 -============================================================== - -New features: - -* New read-write lua variables pdf.pdfcatalog, pdf.pdfnames, - pdf.pdfinfo, pdf.pdftrailer - -* 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. - -* The new function pdf.registerannot(<number>) registers an - annotation object number to be included in the current - page's /Annots list. - -* 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. - -* The internal representation of the string pool is reorganized - (the pool of string characters is now allocated dynamically), - and as a side-effect the lua variable status.init_pool_ptr - is deprecated and will be removed in a later version. Also, - status.pool_ptr now simply returns the current number of bytes - in use for string characters. - -* There are new lua variables pdf.pdfmapline and pdf.pdfmapfile - (write-only strings that mimic \pdfmapline and \pdfmapfile). - -* \pdfobj data and attribute are now stored as C strings instead - of as token lists (this should speed up cases with a lot of data). - -* Artificially slanted fonts now work via the pdf text matrix - (instead of adjusting the actual font) so that it now also - works for non-Type1 fonts. The lua <metrics>.slant font key is - now obeyed in all cases. - -* The lua function font.id(<string>) returns the internal font id - number belonging to a control sequence name. - -* Pdf image inclusion is optimized such that objects from an - external pdf will now be included only once even if they are - referenced from multiple inclusions. - -Bug fixes: - -* Protrusion for non-TLT documents did not work properly for - the hyphenation character. - -* \lastbox could not remove the paragraph indent box for non-TLT - documents. - -* Pdf images (\pdfximage) are no longer kept open during the - whole run, but closed and reopened. An error is raised if - the file has changed between \pdfximage and \pdfrefximage. - This prevents the 'too many open files' error when lots of - images are included. - -* On Win32 Pdf image files are locked during the time that it is - open, to prevent unnoticed file changes by external sources. - -* Compilation now again works on FreeBSD. - -* Format sharing between 32-bit and 64-bit architectures was - broken. - -* Unsetting attributes from lua could sometimes result in - the unset state persisting beyond the current group level. - -* If something went wrong in the scanning of pdf action items, - the error message reported the current primitive name - incorrectly. - -* Luatex would crash on non-existant pdfs that were referenced - from map file entries. - -============================================================== -Luatex beta-0.46.0 was released 20091126 -============================================================== - -New features: - -* The build.sh script now has better support for new MacOSX-es - (patch from Mojca). - -* Luatex now has experimental support for dynamic loading of - external compiled lua libraries. Building luatex and loading - external .so/.dll files is reported to work on Windows, - linux and osx, other platforms are still unknown. - -* pdf.obj{type="stream"} no longer converts its argument to and - from a tokenlist. This allows the use of binary data in the - "string" argument. Such data does still have to hidden from - the normal file parser by putting the code in a dofile() - or by using string.char(), though. - -Bug fixes: - -* Luatex 0.45.0 was not able to find truetype nor opentype fonts - if there were no callbacks defined (patch from Pawel). - -* 0.45.0 printed the user input instead of the full pathname - for \input-ed tex files. - -* The TFM reader now rejects fonts with tfm names that are - longer than 255 characters because such font names cannot - be stored in a DVI file. - -* The combination of \immediate\pdfxform followed by a later - \pdfrefxform could cause broken pdf output files because - the box used for the form could have been freed and even - reused already at that moment in time, sometimes resulting - in an invalid transformation matrix. - -* The placement of super- and subscripts for displaystyle - \int's in CambriaMath is now better than before. It still - needs a tweak to the metrics though: in the current version, - the italic correction has to be substracted from the width - of the integral sign to get correct placement (context mkiv - does this). to be continued ... - -============================================================== -Luatex beta-0.45.0 was released 20091118 -============================================================== - -New features: - -* Loading big OTF fonts via lua is now much faster than before, - at the expense of a bit of precision loss in the calculated - bounding boxes. - -* 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. - -* Luatex can now optionally use kpathsea to find lua require() - files. - -* The new primitives \aligntab and \alignmark are aliases for - the use of & and # in alignments. - -* \pdfrefximage [width <dimen>] [height <dimen>] [depth <dimen>] <imageref> - overrules settings from \pdfximage for this \pdfrefximage call only - -* The print precision for small numbers in lua code (tostring) - has been improved. - -* Akira Kakuto suppled a patch that restricts writing to files - with names such as latex.bat etc. (on windows only) - -* (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. - -* (un-feature): xpdf's automatic lower- and uppercasing retry attempts - for nonfound image pdf files has been removed. - -* The callbacks hpack_filter, vpack_filter and pre_output_filter - pass on an extra string argument for the direction, when known - (nil == use default). - -* The lua functions node.hpack(), node.vpack() and node.dimensions() - now accept an optional direction argument (not given == use default). - -* \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. - -* 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. - -Bug fixes: - -* Prevent crashes for lua-loaded fonts without a (tfm) name. - -* Remove spurious newlines in the output pdf that could be the - result of using \pdfximage for an included pdf figure too early. - -* Full font embedding for wide otf and ttf fonts now really - works (older versions only pretended that it did work). - -* node.dimensions() sometimes continued past the 'stop' node. - -* Images inside virtual fonts were broken. - -* The processing of \language=-1 was wrong, resulting in - hyphenation attempts even though there was no proper language - set up. - -* Fix for finding files in --output-directory. - -* Fix for handling of --file-line-error. - -* tex.box[] assingments are now checked to make sure the assigned - node has the right id (hlist or vlist). - -* show_node_list (as in \showbox) produced spurious local_par - whatsit prints in the output after direction nodes. - -* The handling of pdf literals has been sped up. - -============================================================== -Luatex beta-0.44.0 was released 20091027 -============================================================== - -New features: - -* libpng is now 1.2.40. - -* hlist nodes now have a subtype to distinguish hlists generated - by the paragraph breaking, explicit \hbox commands, and other - (as-yet-undefined) sources. - -* \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). - -* The lua file from the luamd5 library (which provides the - md5.hexsuma() function) is now embedded in the executable. - -Bug fixes: - -* \latelua now works in DVI mode again. - -* status.output_file_name could crash when used too soon. - -* In 0.43, rules were not output at all in DVI mode. - -* \leavevmode\penalty-10000\penalty-10000 crashed luatex. - -* the API of margin kern nodes to lua was using the wrong - fields in the nodes. - -* A few fixes to the manual. - -* PDF Xref stream dicts were slightly non-conformant. - -* There was too much space between two consecutive math displays - (this bug was inherited from Aleph) - -* Synctex was broken (thanks, Akira) - -* Font mark classes were handled incorrectly by the fontloader - code. - -* There was a crash possible with certain types of named PDF - destinations. - -* Math delimiters and large operators in new MATH fonts no - longer apply the italic correction (this fixes placements - of super- and subscripts on such items for those fonts). - -* The converter from lua strings to token lists (for the node - interface) sometimes generated invalid tokens. - -* CFF (OpenType) fonts now listen to 'embedding="full"'. TTF - is still todo. - -* Font tables with 'embedding="no"' would cause luatex to crash. - -* \pdfobj file {} failed to find the file if there was no lua - callback in place. - -* An optimization in MS Mincho caused luatex to crash. - -============================================================== -Luatex beta-0.43.0 was released 20090819 -============================================================== - -New features: - -* There is a new allowed key in the table trhat 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 - (if it is missing, <f>.fullname will be used instead). - -* It is now possible to use Apple dfont font files - (those that contain at least one outline font). - -* \latelua is now allowed inside leaders. - -* There is a new callback: process_output_buffer, from Manuel - Pégourié-Gonnard. This callback is called just before - \write acts, so it can be used to alter the file encoding - of text output files. - -* There is a new node.dimensions() function, which calculates - the natural size of (part of) a list of nodes. - -* The new primitive \gleaders provides 'globally aligned' - leaders. - -* The DVI and PDF backends now share much code internally. - -* The embedded MPlib is now 1.207. - -* libpng is now 1.2.39. - -Bugfixes: - -* We fixed lots of anonymous bugs introduced in 0.42.0 (as expected) - -* fontloader.info() errors are no longer fatal, the function now - just returns a nil,"error string" pair. - -* Automatically inserted kerns for \accents are now once again - valid word ends, as in \TEX. - -* Fixed the placement of math displays in mixed direction - settings. - -* The \pdfcompresslevel is now dynamic again. - -============================================================== -Luatex beta-0.42.0 was released 20090717 -============================================================== - -* There is a new node.tail() function - -* lua-loaded fonts now support a 'nomath' key to speed up - loading the lua table. - -* A bugfix in the ttf reader for the inclusion backend, and - (also in the backend) support for treating ttc files by - pretending they are single ttf fonts (both patches from pdftex) - -* Add Khaled Hosny's man page to the repository - -* The \pdfcompresslevel is now effectively fixed as soon as - output to the pdf file has occurred. - -* Patched status.filename so that it (nearly) always returns a - file name. - -* fix '\the\delcode' and disable '\the\odelcode', '\the\Udelcode', - and '\the\Udelcodenum' - -* Handle jfifs where either xres or yres is 0 and the other - res is != 0 (from pdftex) - -* The single-argument version of lang.hyphenate() was broken. - -* Get rid of the \directlua/\latelua number warning. - -* The Lua coroutine patch (coco) is now disabled on linux - powerpc architectures (because it caused crashes) - -* Removed obsolete pdftex primitives: - \pdfoptionalwaysusepdfpagebox - \pdfoptionpdfinclusionerrorlevel - \pdfforcepagebox - \pdfmovechars - -* The loading speed of large fonts (especially ttf) via the - fontloader library, and the inclusion speed for subsetting - in the backend have both been improved. - -* The 'pdf' lua library has been enhanced with various new - functions, see the manual for details. - -* BLT and BRT glyph position fixed. - -* Various fixes for synctex offsets. - -* Support for exotic font string encodings has been removed - from the fontloader library. - -* The embedded MPlib is now 1.205. - -* libpng is now 1.2.38. - -============================================================== -Luatex beta-0.40.6 was released 20090625 -============================================================== - -* Fix two string vs. toks bugs in the lua node interface: - whatsit,annot and whatsit,startlink data assignments were - made directly as strings instead of being converted to tokens. - -* Sometimes pdf.print() could be used before the proper structures - were initialized. - -* There was a bug in the type codes for the lua package filter - callback: wrong extra info was passed to lua for the alignment - and vsplit cases. - -* The math parameters \Umathlimitdownvgap, \Umathlimitdownbgap, - and \Umathlimitdownkern have been renamed to \Umathlimitbelowbgap, - \Umathlimitbelowvgap, and \Umathlimitbelowkern to be more - consistent with the other parameter names. - -* The embedded MPlib is now 1.204. - -* Handling of UTF-8 hyphenation exceptions has been fixed. - -* There were a number of typos in the manual. - -============================================================== -Luatex beta-0.40.5 was released 20090610 -============================================================== - -* One of the internal print functions accidentally encoded its - argument string to UTF-8 even though it was already UTF-8. - -* Some of the log and terminal UTF-8 output was gibberish. - -============================================================== -Luatex beta-0.40.4 was released 20090609 -============================================================== - -* \the\textfont0 returned a number instead of doing a font - switch. - -* The embedded MPlib is now 1.203. - -============================================================== -Luatex beta-0.40.3 was released 20090608 -============================================================== - -* A set of portability fixes for the AIX compiler from Vladimir - Volovich. - -* A set of fixes to the synctex support. - -* A patch to the build script to prevent installed X11 headers - from being required. - -* Some weave (web syntax) fixes from Manuel Pégourié-Gonnard. - -* A simplification in luatex.ch (it is now less verbose - about the web2c-specific extensions) from Karl Berry. - -* A fix in the handling of UTF-8 (input) file names. - -* Hyphenation exceptions were case sensitive in 0.40.2. - -* libpng is now 1.2.37. - -============================================================== -Luatex beta-0.40.2 was released 20090603 -============================================================== - -* Fix for a compilation warning under Cygwin. - -* A complicated bugfix by Hartmut for a rounding problem in the - VF loading that resulted in 'character width mismatch in font - XY.vf ignored' messages at large load sizes - -* The embedded MPlib is now 1.202. - -* The post_page_number callback was accidentally run when - shipping out xforms as well as during actual pages. - -* When a math accent char doesn't have a bot_accent placer, - luatex now uses the top_accent placer, if present. - -* A crash caused by \Uroot .. {<list>}{...} is fixed - -* A portability fix for solaris 8 sparc using sun studio - compiler, and one for glibc > 2.9.90 - -* luatex -ini now sets the \catcode of the BOM character to - ignore - -* Kpathsea is updated from TeXLive, giving four extra types of - searchable files: 'font feature files','cid maps','mlbib', - and 'mlbst'. - -* libpng is now 1.2.36 - -============================================================== -Luatex beta-0.40.1 was released 20090508 -============================================================== - -* Vertical placement of root radicals and degrees is fixed. - -* The use of \pageleftoffset could deviate from \hoffset - if \mag != 1000. - -* LuaTeX now issues a warning if \pagedir !- \bodydir during - shipout. - -* The previous crash in font.read_tfm() was still not quite - correct. - -* The Web2C version is now also printed in the --version - and --credits output. - - -* There is a new MPlib 1.200 release candidate with a few minor - fixes included. - -* The xpdf library is updated to patch level 3. - -* New imports to the build system, from texlive. In particular, - there is now configure-level support for building with - libpoppler and support for building under cygwin 1.7 is added. - -============================================================== -Luatex beta-0.40.0 was released 20090422 -============================================================== - -* The embedded MPlib is updated to version 1.200. - -* Texlua would crash if run font.read_tfm() was used. - -* Luatex would crash on empty \patterns. - -* Lots of small C code cleanups. - -* \textdir inside a \hbox dir *** was wrong earlier. - -* 0.39.0 introduced a bug that would make luatex crash whenever - font expansion was used. - -* Font tables returned by define_font can now have a key named - 'cache' that controls the internal lua font table caching. - -* There is no longer a need for an explicit --progname if there - is no input file given. - -============================================================== -Luatex beta-0.39.0 was released 20090415 -============================================================== - -* iniluatex will from now on start up with only the TeX82 primitives - and \directlua, everything else has to be bootstrapped via - tex.enableprimitives(). This change was planned for 0.40.0, - but *now* is the time to test it. - -* A bugfix for \primitive in various expandable contexts, - and \primitive now generates an error message when the - argument is not actually a primitive's name. - -* There was a bug found in the math accent handling. - -* Large math operators are now treated like extensible characters - in the sense that they can be composed of segments. - -* The extra assign- and restore tracing information from eTeX - had a massive bug because of a dangling else in the pascal web. - As a side-effect of fixing this bugs, all such potential errors - in the pascal web have been fixed (for now). - -* The math parameters can now be set and queried from lua code - via the new tex.setmath() and tex.getmath() functions. - -* Reflection in a \hbox was broken. - -* There was a leak of direction nodes in the paragraph builder. - -* The font backend now does a small peek to differentiate - truetype and postscript style opentype fonts. This fixes - the "Can't find CFF table" bug for otf's with truetype outlines. - -* Parameters and registers can now also be assinged to globally - from lua (see the manual for details). - -* It is now possible to query the current math style while a - formula is still being constructed by using the new read-only - value \mathstyle. Associated is the new command \Ustack that - is to be used as a prefix for {.. \over ..} and friends. - See the manual for more information. - -* The embedded MPLib is brought up to date with the current - metapost repository (version 1.110 and a few small patches). - -* Luatex can now handle two breakpoints inside a single ligature - (like for the functional word of-f-ice). The solution is not - perfect yet, but the chance of missed hyphenation points in - actual documents should now be negligible. - -* Some speedups in the font loading code, and in the handling of - pdf_literal nodes that are set from within Lua code. - -* Some source code and manual cleanup, as usual. - -============================================================== -Luatex beta-0.38.0 was released 20090410 -============================================================== - -* tex.enableprimitives() had a bug were previously defined (but - currently undefined) control sequences prevented the creation - of the new csname. - -* The special calling format callback.register('name', false) - not only disables the callback, but also the builtin code it - is supposed to replace. - -* Empty \localleftbox and \localrightbox -es are now suppressed. - -* Support for <f>.MathConstants.SubscriptShiftDownWithSuperscript - was added, to solve the lack of "sub2" in OpenType math. - -* Luatex now supports horizontal super- and subscript placement - corrections via the OpenType MATH mathkern table. See the - manual for details. - -* node.write() no longer copies its argument node list before - appending it. - -* There are six new primitives that are verbose forms - of one and two byte special tokens: - \Usuperscript \Usubscript - \Ustartmath \Ustopmath - \Ustartdisplaymath \Ustopdisplaymath - -* The attribute node leaks in math mode and alignmetns have been - fixed. - -* The 11 simple math noads are now combined into a single "noad" - node type. - -* Static linking against libstdc++ is working once again. - -* There is a small fix in the keyword scanner to solve the - problem of 'Runaway ... while scanning ???' that could happen - for some primitives. - -* Lua now also has the "architecture independent bytecode" - patch applied. - -* Lua is updated to version 5.1.4 with coco patches 1.1.5, and - lpeg is now 0.9. - -* Some TRT/TLT backend bugs are fixed. - -* Various manual updates. - -============================================================== -Luatex beta-0.37.0 was released 20090331 -============================================================== - -* Luatex now implements shell_escape = 'p', a new feature - in web2c that intends to make \write18 more secure. As - a side-effect, if luatex is used for typesetting, it will - now also apply shell_escape = 'p' and shell_escape = 'f' - to the lua functions io.popen(), os.execute(), os.exec(), - and os.spawn(). - Nothing has changed for the case where luatex is used as - a script interpreter. - -* Attributes can now have negative values. The special value - for 'unset' is lowered to -0x7FFFFFFF (it used to be -1). - -* The lua 'kpse' library now has an object-oriented interface - as companion to the procedural interface. This is useful for - e.g. controlling the discovery of mplib files. - -* The new internal integer parameter \outputbox allows setting - of the output box number (default: 255, max: 65535) - -* The new primitives \Udelimiterunder and \Udelimiterover - complete the set of 'StretchStacks' for OpenType Math. - -* Fixed a bug in font string conversions on the Macintosh that - resulted in warnings about 'unaligned pointers being freed'. - -* Khaled Hosny spotted a bunch of manual errors. - -* There was bug in the width of math_accent objects when - there were super- or subscripts attached to the accentee. - -* In PDF mode, TRT \leaders were bugged. - -* The source tree now uses the new texlive build system that - Peter Breitenlohner created. - -* There is now a single build.sh instead of four separate - ones. It has a few options: - --make : only make, no make distclean; configure - --parallel : make -j 2 -l 3.0 - --nostrip : do not strip binary - --mingw : crosscompile for mingw32 from i386-linux - --ppc : crosscompile for ppc osx on intel osx - - Note: --parallel still sometimes causes crashes due to - timing errors, so use that option with care. - -* Many compiler warnings have been removed (but not all yet). - -============================================================== -Luatex beta-0.36.0 was released 20090323 -============================================================== - -* The included fontforge code is stripped considerably, and - the lua table to access the code is renamed to 'fontloader'. - The old name ('fontforge') will remain present for a while, - but will eventually go away. - -* New lua functions: tex.primitives(), tex.extraprimitives, - tex.enableprimitives(). This is a prelude to a big change - in the next beta: iniluatex will from now on start up with - only the TeX82 primitives and \directlua, everything else - has to be bootstrapped via tex.enableprimitives(). - See the manual for more details. - -* Support for multiple lua states has been removed, and at the - same time support for adding name ids to lua chunks has been - added. See the manual for more details. - -* More changes to the PDF backend to make it support non-latin - directions (form and image placement, vertical typesetting, - synctex). - -* The kpathsea library is updated. Highlights: cleaner build - process (thanks to Peter Breitenlohner), cleaner mingw32 - (cross)compilation support, and a new reentrant API. - -* Some possible endless loops within extended delimiters in - math mode are now trapped. - -* Movements inside VF font characters were considerably off - due to a wrong conversion routine. - -* Error handling for \outer has been reinstated, but can be - suppressed via the new primitive \suppressoutererror. - -* The new primitives: \suppresslongerror and \suppressifcsnameerror - that can be used to suppress errors for \par in non-long macros - and for non-expandable objects inside \ifcsname ... \endcsname, - respectively. - -* New lua function: node.vpack() via a patch from Khaled Hosny - that also improves error handling in node.hpack(). - -* Fix the typo that caused \charic (instead of \charit) - to be defined as a primitive. - -* Suppression of hyphenation via \hyphenchar\font=-1 now works - again. - -* The lua functions tex.print(), tex.sprint(), tex.write() now - accept an array of strings as well as vararg list of strings - to print. - -* A change to be build process: luatex.p is no longer split - int smaller pieces before running the C compiler. - -* Melissa O'Neill contributed a bugfix to the Type1 font - subsetting code. - -* A bunch of smaller bugfixes and cleanups (as usual). - -============================================================== -Luatex beta-0.35.0 was released 20090224 -============================================================== - -* The math handling portions of LuaTeX are converted to C code, - and extended to support Unicode math. There are a great many - related changes, see the new Math chapter in the manual for - details. - -* A nasty bug in the paragraph breaking routine was fixed. - (All lines except the first one were believed to be wider then - they really were. This affected which nodes were considered - as active breakpoints) - -* Various changes to the PDF backend to make it support non-latin - directions. - -* Fixed the behaviour of the page offsets. Placement of the output - on the physical page should now work correctly in all directions, - both in DVI and PDF. - There now are \pageleftoffset and \pagetopoffset primitives, - as well as - -* fontforge.apply_featurefile() was broken since 0.31.0 - -* The lua profiler library is added. - -* The included lua filesystem library is now 1.4.1. - -* Reading of pk files fixed. - -* An optional space afer a <direction specifier> for \textdir c.s. - is ignored from now on. - -* \bodydir and \pagedir can now be (re)set even after the first - page has been output. - -* The new callback mlist_to_hlist can be used to intercept the - normal conversion of math lists to horizontal lists. - -* The programs ttf2afm and pdftosrc are removed from the luatex - distribution (these belong to pdftex). - -* fontforge.open() now uses much less memory when opening large - (CJK) fonts. - -* The included libpng is now 1.2.35. - -* Quite a lot of smaller bugfixes and cleanups (as usual). - - -============================================================== -Luatex beta-0.31.3 was released 20081229 -============================================================== - -This release has a bunch of updates from the development trunk -(#1657-1670,1677,1678,1680,1685,1687). - - * Closing of files opened by \externalocp. - - * Fix for a locale-related bug that make PDF generation fail - with a "Parsing CFF Dict failed" message when including - opentype fonts. - - * The included metapost is now version 1.102. - - * PDF rules in vertical modes in RL direction where output - in the wrong direction - - * Fix for a crash on Apple fonts that contain a 'bsln' table. - - * The handling of the second argument to fontforge.open() was - broken - - * The included libpng is now 1.2.34 - - * Handling of ttc files on Windows was broken - - -============================================================== -Luatex beta-0.31.2 was released 20081209 -============================================================== - -Besides fixing building issues, this release has - - * A small fix for a crash that could happen when using - external OCPs. - - * A fix in the format of fontforge.to_table output. - (In 0.31.1 <font>.lookups was near-empty; the lookups - were accidentally output as part of the gpos table). - -============================================================== -Luatex beta-0.31.1 was released 20081209 -============================================================== - -fixed a bunch of compilation errors on various platforms, but -with no other visible changes. - - -============================================================== -Luatex beta-0.31.0 was released 20081205 -============================================================== - -This is just an intermediate release so that some testing can be -done on the updated fontforge embedding. - -* There are new fields being generated by fontforge.to_table(), - and one or two old ones have been removed. These fields are / - will be documented in the manual, but very briefly: - - - MATH table and associated information are now exported - (the main reason for the new fontforge code) - - Baseline data is now exported - (perhaps usable in lua code) - - Multiple Master / Glyph variation data is now exported - (but useless, for now) - - Mac Feature (AAT) information is now exported - (perhaps usable in lua code) - - If (lookup) names were saved via the PfED table, these - will the exported instead of the default, generated names. - (as requested by Yannis) - -* dfont is now treated as an archive format just like ttc - when it comes to fontforge.info(). NOTE: that does not mean you - can actually use them, because the backend doesn't know - yet how to embed dfont fonts in the PDF, that is on the - TODO list for the next big beta (0.40.0). - -* The executables are a lot larger than before. That is because - much more of fontforge is included than before. Likely this - will stay this way, because this makes upgrading the ff code - much easier, and it means that luatex/FF potentially - understands more font formats (after upgrading the backend, - of course) - - -============================================================== -Luatex beta-0.30.3 was released 20081128 -============================================================== - -This release fixes a really big bug, a few smaller ones, -and has updates of png and mplib: - -* All hyphenation patterns that were anchored at the start or - end of a word were ignored in luatex versions 0.25.X and 0.30.X - (and possibly even earlier). - -* Repeated use of \language=-1 could result in "There is not room - for another language". - -* The lua true coroutines patch (Coco) is now disabled on OpenBSD - running on non-intel platforms. - -* The lua socket library is patched so that it will now compile on - OpenSolaris. - -* Luatex now has libpng 1.2.33 and mplib 1.100 - -============================================================== -Luatex beta-0.30.2 was released 20081020 -============================================================== - -* The Lua coco change from 0.30.1 is reverted as it gave - trouble on MacOSX. Lua coco on non-intel OpenBSD platforms - is now explicitly turned off. - -* The lua file reading speedup in 0.30.1 broke reading of - files larger than 100MB. - -* Reading of font-related files was broken when there was a find - callback, but no read callback. - -* The texmf.cnf array size setup values were ignored whenever - --lua was given on the commandline (instead of only when - texconfig.kpse_init is set to false). - -* glyphs with negative widths resulted in incorrect horizontal - placement (overlapping) of the string in the output PDF. - -* Using \latelua could sometimes result in an invalid output PDF, - and the argument token list was expanded too early - -* There was a read buffer overrun in the mapfile parser - -* There are two new variables in the status table: - status.callbacks and status.indirect_callbacks (execution counts). - -============================================================== -Luatex beta-0.30.1 was released 20081009 -============================================================== - -* Invalid return values from the linebreak_filter callback - are now handled gracefully (was crashing) -* a preinstalled ctangle is no longer needed except when - cross-compiling -* In 0.30.0, the .notdef fix was incorrectly applied to - truetype / opentype fonts. -* A bunch of all memory leaks is fixed -* In lua, f:read('*a') now uses signicantly less memory -* The number of \catcodetables is now limited to 64KB - (for speed reasons) -* Luatex could crash if there were PDF images with and - without page /Group included on the same page -* Lua coco now always uses setjmp (for OpenBSD compatibility) -* The embedded mplib is updated to the latest svn version -* # marks (characters with catcode 6) are no longer doubled - inside \directlua -* Handling the nul character (U+0000) with catcode 13 - (active) was broken -* Luatex could crash on win32 with an access violation - because there was one predefined language too few - (the one matching \language=-1) - -============================================================== -Luatex beta-0.30.0 was released 20080930 -============================================================== - -New features: - -* Readable \tex internal params that are counts, attrs, or dimens are - now returned as numbers instead of strings, and skips as node objects. - Read-write access to tex's skip registers added: tex.skip[0] etc. -* new callback: 'linebreak_callback' to replace the internal paragraph - breaking code -* the tex table now supports more readable 'convert' values: - tex.fontname, tex.pdffontname, tex.pdffontobjnum, tex.pdffontsize, - tex.uniformdeviate, tex.number, tex.romannumeral, tex.pdfpageref, - tex.pdfxformname (each takes a number as argument) -* new readable parameter: tex.fontidentifier(number) returns the - \csname associated with that font id -* luatex now outputs \FONT<nr> instead of \^^@ in Overfull/Underfull - messages if the font's id text is zero (like for expanded fonts) (#77) - * luatex --version is split into --version and --credits -* There is now (again) an svn revision number in luatex --version (#91) -* Add support for more read-only internal access from lua: - tex.lastpenalty, tex.lastkern, tex.lastskip, tex.lastnodetype, - tex.inputlineno, tex.badness, tex.pdftexversion, tex.pdflastobj, - tex.pdflastxform, tex.pdflastximage, tex.pdflastximagepages, - tex.pdflastannot, tex.pdflastxpos, tex.pdflastypos, tex.pdfrandomseed, - tex.pdflastlink, tex.luatexversion, tex.Alephversion, - tex.Omegaversion, tex.Alephminorversion, tex.Omegaminorversion, - tex.eTeXminorversion, tex.eTeXversion, tex.currentgrouplevel, - tex.currentgrouptype, tex.currentiflevel, tex.currentiftype, - tex.currentifbranch, tex.pdflastximagecolordepth (#81) -* the old --src-specials are replaced by --synctex (#63) -* the \expanded primitive is backported from pdftex 1.50 (#43) -* luatex now comes with libpng 1.2.32 -* experimental: tex.definefont(string, number) associates a - csname string with a font id number - -Bugs fixed compared to 0.29.0: - -* dashes were exported wrongly by MPlib -* multi-item \discretionaries were broken in various ways (#78, mailinglist) -* read_font_info was sometimes called recursively from lua-loaded - virtual fonts -* do_vf was sometimes called on lua-loaded fonts that where - already known to be virtual -* trailing junk in tfm files is now ignored (needed for ecrm fonts) -* pdf_ignored_dimen was initialized too late, breaking \prevdepth - handling and causing output lines to overlap eachother (#72) -* pdf.immediateobj() had a printf-related bug -* the fontname terminal logging is fixed for strange font file names -* lua tex array assignments now listen to the globaldefs setting - (tex.count[0] etc) (#92,partial) -* \parshape was broken (#70) -* there is no longer a ".tex" extension forced on very input file (#74) -* eof() for mapfiles was true one byte too soon (#76) -* out of range \lefthyphenmin and \righthyphenmin settings now actually - disable hyphenation (#90) -* tex.unset_attribute() looked too far ahead when a to-be-unset - attribute id not only did not exist in the node, but was also - higher than the highest set attribute on the node. (#65) -* the parameters attr and page_name of read_image() were swapped - (this broke \pdfimage with attributes) -* tex filenames with spaces in them on the command line are now - allowed again (#30) -* sometimes pfb fonts were included multiple times without valid - reason (#29) -* some parts of the pdftex 1.40.9 PNG transparancy hack were still - present and caused transparant png handling to fail -* \localinterlinepenalty and \localbrokenpenalty were broken -* special case catcode tables are now handled better (#23) -* the handling of missing .notdef charstrings in old pfb fonts - is fixed (#27) - -============================================================== -Luatex beta-0.29.0 was released 20080718 -============================================================== - - -New features: - -* The embedded pdftex is now 1.40.9 (forthcoming) except for the - following: - - the png transparancy fix is skipped because it is in conflict - with a macro-based solution offered by context mkiv. - - LFS (PDF files > 2GiB) is not working yet. - - Synctex is still missing - -* libpng, xpdf, and zlib are updated to their pdftex 1.0.9 levels - -* MPlib is updated to 1.090 - -* The syntax of buildpage_filter is changed to avoid confusion - (and crashes). See the manual for the new calling convention. - -Bugs fixed compared to 0.28.0: - -* The previous bugfix for \languages skipping numbers was wrong. - -* Various compile-time warnings are suppressed - -* \pdfsetmatrix was broken - -* \pdfsave and \pdfrestore were broken - -* Valid user_defined whatsits nevertheless were generating errors. - - -============================================================== -Luatex beta-0.28.0 was released 20080630 -============================================================== - -There is one new feature: - -There is now experimental support for non-trivial discretionaries -following explicit hyphens. In analogy to \prehyphenchar and -\posthyphenchar, there are two new parameters \preexhyphenchar en -\postexhyphenchar. Both new parameters default to zero (nothing). -When set to a nonzero value, the parameter is added to either the -pre- or post- break text. Note that this is *in addition to* the -hyphen already in the input. Testing and comments are very welcome. - -Here is a short example (no idea what is says): - - \pdfoutput=1 - \hsize=2in - \postexhyphenchar=`- - Seria bom se eu - pudesse t\^e-lo mantido como amigo, mas por - mais bem-intencionado que eu fosse, n\~ao - foi possivel - \bye - - - -Bugs fixed compared to 0.27.0: - -* Words that started off with a character with a zero \lccode - were never hyphenated at all. - -* There was a bug in the new active characters code that prevented - the latex format from being built (with Invalid character error). - -* There is a temporary fix for the sometimes appearing "Font has a - bad FontBB" message from Acrobat. - -* \leaders did not actually stretch enough (the last bit of glue - that has to line up the line endings was never output to the PDF). - -* Bad paragraph-related callbacks could result in luatex crashing. - -* The pre_linebreak and post_linebreak filters were never called - when \output was active (this was a leftover of a superceded - optimization). - -* 'skipping' language codes when setting up \patterns c.s. did not - work (it used the next empty slot instead of the actual value of - \language). - -* Using multiple 'attr' keywords on box items could cause random - crashes. - -* Calling lang.hyphenate() with one argument (without specifying a - tail node) could crash. - -* The luatex pdf banner and version reporting is cleaned up a bit. - -* Conflicting patterns inside \patterns now give an error: - ! Conflicting pattern ignored. - (duplicate identical patterns are ignored without error). - -============================================================== -Luatex beta-0.27.0 was released 20080624 -============================================================== - -Bugs fixed compared to 0.25.3: - -* Unicode reencoding support for non-standard (i.e. older) - Type1 fonts is now somewhat less broken than it was (#25) - -* .vf fonts using specials crashed luatex - -* luatex would crash on --\par (#33) - -* An attempt is made to get a sane default value for StemV in - the created pdf (#32) - -* We can now guarantee that %PDF-1.* header is printed before - the first pdf.print() output - -* lang.hyphenate() was broken - -* insert_before(a,a,b) was broken (#37) - -* argv[0] is now cleaned up before being used as a default for - mem_name and prog_name (#28). - -* luatex would crash on loading extended fonts (fonts loaded - via lua callbacks) from a format file. - -* The fix for pdftex bug #799 is backported from pdftex 1.40.4. - -* slnunicode had a bug in the unicode.utf8.gmatch iterator. - -* Queries of nonexisting fontdimens could cause a crash. - -* luatex would crash on {\textdir TLT\pardir TLT x\break\par } - -* Fixed wrong placement of lines in mixed-direction paragraphs - that could happen in some situations. - -Other news: -* Luatex now includes luasocket (#35) - See http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/ - for usage. - There is a new commandline option: --nosocket to disable this, - and that is also implied by --safer. - - NOTE to the binary builders: there are some unfixed configure - problems when you need to add a specific library to get socket - support on your platform. You probably will have to edit the - generated Makefile by hand (search for 'socketlib'). - -* There is ongoing development to the 'img' and 'mplib' libraries. - See the reference manual for details. - -* The 'character commands' in virtual fonts now support image - inclusion. See the reference manual for details. - -* Lua error messages now include the call stack. - -* \directlua and \latelua have been extended to accept a 'name' - keyword. The argument is a token list that is used as the lua - name of this chunk in lua error messages and call stack prints. - (#42) - -* The lua chunk names can be interfaced via a new virtual - table called lua.instancename, the values in that function as - defaults in the absence of 'name' keywords. - -* The 2-plane limit on active character range is removed (#12). - -* Subsetted TTF fonts in the PDF now retain the cmap table. - -* There is a new Lua variable os.selfdir. This contains the - full absolute pathname of the directory that the executable - resides in (with symlinks resolved) - -* There is a new function os.uname() this returns a lua - table containing various platform information items. - -* The node library now uses text strings for direction specifiers - instead of numbers. See the reference manual for details. - -* The 'E' (edit) as error response functionality is now a noop. - -* Adding luatex 0.25.3 to texlive resulted in a few minor backports, - in particular: Support for mktexfmt is added, and luatangle now - identifies itself as such (instead of calling itself otangle). - -* We fixed a whole series of portability problems (but - we probably introduced new problems as well). - -* Most (all?) files now have a corrected Copyright header, - and link in NEWS source/texk/web2c/luatexdir/NEWS into the object file. - -* Some unnecessary files were removed from the distribution. - -============================================================== -Luatex beta-0.25.3 was released 20080418 -============================================================== - -Bugs fixed: -* Pdftex bug no. 936 (sarovar) regarding vertical - positioning of embedded PDF files if depth parameter is given. -* Luatex gave bogus lua return values for the tex.wd/hd/dp - values of void boxes -* A few bugfixes in mplib (square pens caused hangs, elliptical - pens caused confused output) -* Hyphenation of uppercase words (\uchyph) was broken -* Output image placements corrected for all 8 transform cases - also when artbox etc. is used -* There were missing maketexstring() calls in error messages -* Math display contents were sometimes prematurely freed during - the placement of the equation number -* Setting \language=-1 could cause crashes due to an array - index going out-of-bounds - -Other news: -* build.sh.ppc is added to the source distribution. This is a - script that crosscompiles osx ppc binaries from osx intel -* tex.box[<chardef name>] is now supported (but still experimental) -* a bunch of compiler warnings are removed -* The fontforge library now dump AAT feature tags as and - "<id,flags>" string -* The new function font.nextid() predicts the next assigned font id -* Some source code changes are backported from texlive - -============================================================== -Luatex beta-0.25.2 was released 20080410 -============================================================== - -* Updated to MPlib 0.40 -* Bugfixes and cleanup in the lua img table code -* Fix \pdflastximagepages bug from pdftex -* Fix for very large tex.print strings -* Update to Lpeg 0.8.1 -* &D Bugfix for Type1 fonts when out-of-range characters - are marked as 'used' - -============================================================== -Luatex beta-0.25.1 was released 20080321 -============================================================== - -* Updated to MPlib 0.30 (that is now becoming usable) -* The build requirement for a pre-installed ctangle is gone - (thanks to Martin) - -============================================================== -Luatex beta-0.25.0 was released 20080311 -============================================================== - -New: - -* mplib library: - This version features an embedded MP interpreter whose output - can be directly accessed from lua code (mplib), without calls - to an external "mpost" command. Of course it has bugs and - limitations (makempx does not work, for example) but keep in - mind that it is only an initial attempt. - See the manual for more details. -* img library: - ** img.immediatewrite() is added - ** images now accept a 'transform' key - ** widths etc. can now be given as width="100mm" - -Fixed: - -* \parshape handling was completely broken since 0.20.0+ -* when \pdfprotrudechars was in effect, an assertion failure - could happen when embedded \hboxes in the paragraph appeared - at the end of a line. -* import of otf fonts with contextual lookups has been debugged, - thanks to a patch by GW himself. -* compiling with gcc 4.2.3 is now supported -* if you want to build from source, you need a pre-installed ctangle. - - -============================================================== -Luatex beta-0.22.1 was released 20080227 -============================================================== - -* The macnames.c source file for building ttf2afm is restored. -* "make depend" in luatexdir now works again -* luatex sometimes crashed because it attempted to expand an - already expanded font -* luatex aborted when --progname was given but no format name. - It now sets the format name to the given progname in that case -* sometimes paragraphs with near-empty lines could cause a crash -* img.supportedtypes() had a bug causing it to crash -* img.supportedtypes() has been renamed to img.types for consistency -* img.boxes() added, returns strings representing bounding boxes -* img.node() added, returns a whatsit node cf. \pdfrefximage -* node.write() now accepts multiple arguments -* the program_name_set switch was not set automatically from C, - causing errors unless lua code called kpse.set_program_name() - explicitly -* kpse.set_program_name() can now be called more than once - in a single run. -* os.spawn{...} and os.exec{...} could cause crashes because of - a memory allocation error - -============================================================== -Luatex beta-0.22.0 was released 20080215 -============================================================== - -* We now have an official bug tracker: http://tracker.luatex.org -* A new lua library (img) is added that allows a direct - interface to the image handling of luatex. You can use this - to include images from lua code instead of via the more - traditional \pdfximage cs. See the manual. -* An optional equal sign after \{pre,post}hyphenchar is now - allowed. -* os.exec() has been extended, and os.spawn() added. These - functions have support for quoted strings, and they - also accept a table with preseparated command arguments. -* New string constants os.type and os.name are provided. -* node.last_node() is added. This pops and returns the last - node from luatex's 'current list' -* node.write() is added. This appends a node to the end of - luatex's 'current list' (experimental). -* The strict check on unicode compliance in pattern files - is dropped. Patterns files still have to be in proper UTF-8 - encoding, but the error for non-Unicode character values - (like 0 - 31 and 127 - 159) is dropped. -* \pdfadjustinterwordglue, \prependkern, \appendkern - and associated \XXXXcode arrays are gone. -* The rest of the pdftex font arrays are now merged into - the new luatex font data structure. This means that you - can now set up font expansion from lua code, and that a few - font-related limits are gone. -* The 'top_skip' field in 'insert' nodes is renamed to 'spec', - for improved consistency. -* kpse.show_path() added. This behaves just like - $ kpsewhich --show-path -* The unicode.utf8 functions now also accept values in the range - 1.114.112 - 1.114.367 that is used by LUATEX for raw byte output. - -What's been fixed: - -* Better node memory (de)allocation error tracking and messages -* Compilation on MacOSX 10.5 was broken -* There was a bug in node.insert_after -* Use of \{pre,post}hyphenchar was broken -* lfs.permissions was leaking memory -* Some warning and error messages are improved a bit -* A set of bugs in character protrusion, this seems to be working - ok now. -* Also, a set of bugs in font expansion. This now works in most - cases but is not quite bugfree yet (problematic files for testing - are welcomed). -* The functions in the kpse library would crash luatex if - kpse.set_program_name() was not yet called. gives an error now. -* Alignments with spanned columns could cause crashes -* A patch is added for problems with filename parsing on the - "first input line" (by Jonathan Kew) -* The hpack_filter and vpack_filter were only called for lists longer - than one node. -* Luatex is now more forgiving about font subsets being smaller - than their expected size (issues a warning instead of aborts now) -* A "double-free ignored" error for paragraphs with lines starting - with discarded items was fixed. - -============================================================== -Luatex beta-0.20.2 was released 20071217 -============================================================== - -* some portability fixes to the build scripts -* a fix for multi-\span in alignments causing unbreakable - loops -* manual improvements from Jonathan Sauer -* fix for undefined csnames in \directlua if - web2c's hash_extra is nonzero -* fix for LR text inside of a RL document -* fix for open_read_file callback not being called - unless find_read_file was also registered -* removed the ocp status message when \ocps are not - actually used -* "unicodeenc" in the fontforge to_table renamed to - "unicode" for improved consistency - -============================================================== -Luatex beta-0.20.1 was released 20071207 -============================================================== - -* texlua was broken on Solaris because the some C header - files were loaded in the wrong order. -* os.tmpdir() now accepts an argument, making it easier - to use. It now generates more unique filenames when - it is called repeatedly in one run. -* The --luaconly commandline switch is now documented - in the --help text. -* The new extended hyphenation exceptions were severely - broken. -* \pdfprotrudechars could cause luatex to abort with an - assertion failure. -* There was a bug in the \span code that could cause endless - loops. -* The simple forms of \leaders were messed up on windows - because a variable was not properly initialized. -* Non-grouped \textdir commands created invalid output. -* e-TeX's pseudo files were not closed properly in ini mode. -* The luatex.web now weaves properly again. -* I made some small improvements to the manual. - -============================================================== -Luatex beta-0.20.0 was released 20071205 -============================================================== - -News compared to the last beta (0.11.2) is as follows: - -* Completely overhauled hyphenation and ligkern application, - including the addition of a new "lang" table in lua to - interface to the language parameters, some extra functions - in the "node" table, and a few extra callbacks ("hyphenate", - "ligaturing", "kerning", "post_linebreak_filter"). - - There is a new chapter in the manual to document all the - changes to the hyphenation and line breaking algorithms, - it is simply too much to list here. - -* the interface of the pre_linebreak_filter,hpack_filter, - vpack_filter, and pre_output_filter has changed slightly. - -* boxes can now get explicit attributes different from the - currently active set, using a syntax like - - \hbox attr2=12 attr3=-1 to 12pt {Hi!} - -* lpeg is now at version 0.7 - -* a whole series of exotic bugs and compiler warnings are - fixed, mostly thanks to the watchful eye of Fabrice. - -* texio.print now accepts multiple strings as arguments. - -* the lua functions os.sleep(), os.times(), os.gettimeofday() - and os.tmpdir() have been added. - -* lua now comes with the coroutine (coco) patches from the - luajit project applied. - -* the banner line no longer claims to be TeX. - -* a bunch of bugs reported on the mailing list have been - fixed (I hope all of them). - -* (internal) we found lots of small ways to speed up lua - node processing. - -* (internal) the node (de)allocation functions have been - rewritten, so that absolutely all nodes now have a type, - even the ones with variable sizes. - - -============================================================== -Luatex snapshot-20071029 was released 20071029 -============================================================== - -* Completely overhauled hyphenation and ligkern application. - - There is a new chapter in the manual to document all the - changes to the hyphenation and line breaking algorithms, - it is simply too much to list here. - -* the interface of the pre_linebreak_filter,hpack_filter, - vpack_filter, and pre_output_filter has changed slightly. - -* lpeg is now at version 0.7 - -* a whole series of exotic bugs and compiler warnings are - fixed thanks to the watchful eye of Fabrice. - -* texio.print now accepts multiple strings as arguments. - -* The lua function os.sleep() is added - -============================================================== -Luatex beta-0.11.2 was released 20070918 -============================================================== - -* Pdf inclusion and subsetting of CID-based opentype fonts - now works as it should. - -============================================================== -Luatex beta-0.11.1 was released 20070918 -============================================================== - -A quick list of what is new and fixed since beta 0.10.2: - -New: -* pfb+afm fonts can now be used in 'wide' (encodingbytes=2) mode -* searching in PDFS using 'wide' fonts now works reasonably well - (based on the tounicode feature) -* related to that, tounicode information can now be passed - on inside the font metrics table -* font subsetting is now supported for CID-based OpenType fonts - (however, there is a known bug with KpozMinProVI-Regular.otf) -* fontforge's warning and error messages are now intercepted - and passed on to the lua code as a second return value of - the fontforge.open() function -* the new primitive \suppressfontnotfounderror can suppress - the TeX error for "Font not found" -* The lua function font.current can now be used to set TeX's - current font - -Fixes: -* set_attribute(-1) is now the same as unset_attribute() -* OpenType lookups with glyph classes would crash luatex -* luazlib would not compile on debian (fix from Norbert) -* CID-based fonts would crash luatex -* Bare CFF should be read in binary mode (fix from Akira) -* VF processing did not process packets containing zero bytes properly -* the truetype collection (.ttc) handling is fixed, so that all - of the fonts inside a collection can now be used reliably -* application segfaults and stack overflows are intercepted - so that luatex can quit a bit more gracefully -* an assertion failuer on systems with signed chars (linux-powerpc) - is fixed -* a crash on AMD64 linux was fixed -* the lua "pdf" table code was wrong -* \ifcsname did not work properly for UTF-8 characters -* Use of the math-related functions using make_fraction (like \atop) - caused a crash -* \handling of \if\noexpand was wrong -* applied a patch that cleans up XForm and page calculations -* "autoconf" support from zziplib is stripped - -============================================================== -Luatex beta-0.10.2 was released 20070814 -============================================================== - -Bugs fixed: - -* the primitive \span was completely broken -* \pdfexpandfont (font expansion) misbehaved if it was used more - than once -* virtual fonts: sometimes they used the wrong internal font id, - loading vf fonts via fonts.read_vf() was impossible, and sometimes - virtual fonts created segfaults -* while dumping formats, the last font parameter for each font was not - dumped at all -* zziplib was always compiled with pre-installed zlib headers, instead - of the ones in the build tree -* lua 5.1.2 has trouble quoting ^Z characters etc, the tentative patch - for lua 5.2 from Luiz fixes that, hopefully -* fontforge.font('font.pfb') now properly parses AFM boundingboxes -* non-existing files in the argument for fontforge.open() or - fontforge.info() could cause segfaults, now it generates an error - instead -* fontforge.open() did not return character widths for vertical fonts - as it should -* on Windows, fontforge believed that ttc files (TrueType Collections) - were actually directories. ttc processing is still not 100% correct, - but it is getting better -* the build system used explicit 'make' sometimes -* the auto-growing string pool was not used everywhere -* there were some typos in the documentation parts of the pascal web -* use of \parshape could easily exhaust all available memory - - -New features: - -* support for applying Adobe Feature files (.fea) and Adobe Font - Metrics (.afm) is added to the fontforge library -* fontforge.info() will now return an array of tables for the contents - for ttc files -* support for a 'texluac' personality was added, to replace the 'luac' - command from the official Lua distribution - -============================================================== -Luatex beta-0.10.1 was released 20070719 -============================================================== - -This was a hotfix because beta-0.10.0 was completely broken. - -============================================================== -Luatex beta-0.10.0 was released 20070718 -============================================================== - -The latest version of the manual is included in the package, and I -am not going to repeat all of that. There were some minor changes -compared to the previous snapshot, but mostly just bugfixes and -documentation improvements. - -============================================================== -Luatex snapshot-20070626 was released 20070626 -============================================================== - -* Integrated the lua library lzlib, this defines tables with - bindings for zlib (including eazy-to-use gzip support) -* Updated to slnunicode version 1.1 -* Some small cleanups in the sparse array handling -* Moved the raw byte support out of the valid unicode range -* Fixed a bug in the OFM font reader -* Removed the pdftex snap nodes (and associated primitives) - - -============================================================== -Luatex snapshot-20070622 was released 20070622 -============================================================== - -Not a lot of news, but it fixes a few important bugs in the lua -node processing. Also a few utility functions are added: - -* tex.round() - rounds and bounds checks a lua number to make sure it is - a valid tex integer. -* tex.scale() - multiplies a number (or the numeric values in a table) - with a fixed quantity, and calls tex.round() on the result. -* node.has_field() - Test if a node has a specified field name -* node.remove() - removes a node from a nodelist, while keeping the list intact -* node.insert_before() - inserts a new node into a nodelist, just before a specified - location node -* node.insert_before() - inserts a new node into a nodelist, just after a specified - location node -* node.hpack() - packages a nodelist into a hlist node - - -============================================================== -Luatex snapshot-20070619 was released 20070619 -============================================================== - -* The lua node processing interface is completely reworked. - It is now completely based on userdata, and uses a new lua table - called 'node' to hold the methods. More detailed information - is in the manual (of course). - -* There is a fifth node processing callback: - pre_output_filter - this is executed just before the packaging of \box 255. - -* The hpack_filter and pre_linebreak_filter callbacks now - receive an extra argument indicating the number of top-level - glyphs in the node list. - -* Virtual fonts can now contain a 'node' key in the glyph - commands: the value should be a hlist node (i.e.: a horizontal - box), and that will then be output for each character access - in that font. - -* A new set of registers is added, called \attribute. These are - values that will be automatically attached to nodes created in - their scope. More information in the manual. - -* Direct read/write access to TeX's box registers is addded to - the lua 'tex' table. - -* TeX's main memory now grows dynamically, and the (de)allocation - routines have been rewritten completely. - -* The 'kpse' table is extended with extra interface functions, to - allow texlua to be used as a scripting engine. - -* The \pdftexversion command now returns 200, not 140. - -* The displayed banner and --version screens are cleaned up. - -* The format file is now RLE compressed. Not as small as before, - but unpacking is much faster. - - -============================================================== -Luatex snapshot-20070426 was released 20070426 -============================================================== - -This past month I have been busy with nodes and lists of nodes, -so the big new feature in this release is that there are four -callbacks that operate on node lists: - - buildpage_filter - pre_linebreak_filter - hpack_filter - vpack_filter - -The preliminary documentation for these is in the manual, but the basic -idea is that you can filter a node list just before LuaTeX starts doing -something with it (like line breaking). This functionality is not stable -yet: the node presentation of the various node types is pretty much OK -now, but keep in mind the following: - - * math noads and math typesetting are not handled at all (yet) - * not all hpacks and vpacks are intercepted (yet) - * the nested node list handling will probably change - * A conversion tool for nodes to/from dictionaries is planned, - but not done yet - -The other changes in this snapshot are various bugfixes (for builds -on various platforms as well as font issues) and speedups (in the -execution of callbacks and the creation of lua font representations). - - -============================================================== -Luatex snapshot-20070322 was released 20070322 -============================================================== - -* I have changed the token_filter callback quite rigorously, - mostly because of speed issues. The raw speed of trivial - lua token handling is now only about 20 times slower than - the native handling. Not bad at all, considering it has to move - between interpreted and compiled code for each and every - token. If you do not run the token filter inside \output, - the effective run speed difference should not be much more - than a factor 1.5. - - Two big differences: you have to call token.get_next() - yourself, and the token table is now a three-item array - instead of a five-key hash. The minimal example changes to - - \directlua0{ - callback.register('token_filter', function () - return token.get_next() - end) - } - - more details are in the manual. - -* I've fixed a few bugs in the handling of Opentype TTF, and added - a new key in the font definition table: - - f.encodingbytes = (1|2) - - The default is 2 for opentype and truetype format, 1 otherwise. - Later on, it will become possible to have a type1 font in 2-byte - (CID) encoding or a truetype font in traditional encoding (1-byte), - but I have not covered all cases yet. - - - -============================================================== -Luatex snapshot-20070309 was released 20070309 -============================================================== - -* The OCP debug information is removed again. - -* There is a new callback that I am quite excited about myself: - 'token_filter'. - - -A bit of text from the reference manual: --------------------- -This callback allows you to change the modify any lexical token that -enters the \type{main_control} function before \LUATEX\ executes the -associated command. - -Note: not all tokens can be intercepted yet, only those that are `seen' -by \LUATEX's main control function. Supplemental tokens like the bodies -of macro definitions and the right-hand side of register assignments -are not seen. For now, this is intentional. - -\startfunctioncall - function (table <token>) - return table <token> - end -\stopfunctioncall - -Calling convention for this callback is bit more complicated then for -most other callbacks. Initially, lua function will be called with the -next token from \type{get_next()} as argument, represented as a small -lua table. The function should either return a lua table representing -a valid to-be-processed token, or something else like nil or an empty -table. - -If your lua function does not return a table representing a valid -token, it will be immediately called again with yet another token -from \type{get_next()} as argument, until it eventually does return -a useful token. - -But if the function does return a usable token, then that token will -be processed by \LUATEX. Afterwards, the function will be called -again, but now without an argument. This is repeated until it stops -returning tokens. Then processing reverts back to the other branch. - -The point behind that roundabout calling convention is that it -allows the lua function to buffer tokens for various uses. That in -turn makes it possible to do some really advanced things like -replacing OTPs. - -Now about that table. The table that the function will receive -contains four fields: - -\starttabulate[|l|i|p|] -\NC Key \NC type \NC Explanation \NC\FR -\NC cmd \NC string \NC A representation of \LUATEX's internal - command code\NC\NR -\NC chr \NC number \NC The command code modifier\NC\NR -\NC cs \NC string \NC If the token came from a csname, this - is that csname\NC\NR -\NC mod \NC character \NC A single character string representing -the current processing mode. One of {\bf v}ertical, {\bf h}orizontal, -display {\bf m}ath, {\bf n}o, internal {\bf V}ertical, - restricted {\bf H}orizontal, or inline {\bf M}ath mode.\NC\LR -\stoptabulate - -If you modify the table before returning it, then it is wise to return -either a (\type{cmd}, \type{chr}) pair, or a \type{cs} string. That is -because if both options are present, the pair has precedence and the -string is ignored. On the return table, {\bf mod} is ignored always. --------------- - -I have no long example code yet and it is not as complete as one -would want it to be because it is not intercepting everything that -comes in, only the bits that are triggered by the main control -loop. - -I decided to do a fast snapshot release for two reasons: - -* It is one of the easier extensions to get started with if you want - to learn a bit about lua programming - -* I would welcome feedback on the token interface, because it will - be needed in other places as well, soon. I am still not sure - whether converting the command to/from strings is worth it, for - example. And maybe it would be less confusing if you could return - a list of tokens instead of being called repeatedly? - -Here is the trivial example to get you started: - - \directlua0{ - callback.register('token_filter', function (t) return t end) - } - - -============================================================== -Luatex snapshot-20070307 was released 20070307 -============================================================== - - -* Non-CID PostScript-based Opentype fonts are now combined over - the entire document, and properly subsetted. The code is - borrowed from xdvipdfmx with some minor adjustments - - Adding support for CID-keyed OpenType fonts would not be hard - but at the moment I lack example input (and incentive). - -* A small extension to the virtual fonts structure: you can use - - f.fonts[1] = { 'id' = 38} - - to do a backreference to a previously defined font. This saves quite - a few computations - -* There was a bug in the handling of \leaders in the output whereby - it's width was taken to be twice what it should be while writing - to the PDF, fixed now. - -* The font inclusion code is cleaned up a bit by Hartmut. - -* Some compilation problems were fixed. - -* There is (quite a bit of) debugging information printed out when - OTPs are in use, because I am tracking down a bug reported by Idris. - - The input of each and every OTP step is shown on the terminal in - a line line this: - - [57902][1568][58423][1568][58408][1568][58921] - - those are the decimal values of ocp i/o characters. If you don't - need them, don't worry about it. - -============================================================== -Luatex snapshot-20070302 was released 20070302 -============================================================== - -* The 'snapshot version' banner is now calculated dynamically - at build time. This aids in figuring out what binary people - are actually running, but it can possibly break the build on - systems that do not have a `date` command. - -* The do_vf() function that checks for virtual font existance - is now run immediately after the font definition instead of - being postponed until characters are output. - -* The 'define_font' callback interface has changed a little. - It is now: - retval = function (name,size,fontid) - - where fontid is the internal font number of the font that - is currently being defined, and retval can be either a table - (as before) or a different, previously defined fontid. This is - useful if a previous definition can be reused instead of - creating a whole new font structure. - -* The internal font data structure has been redone. Glyph index - inside a font is now handled by a sparse array, so that use - of e.g. 0xFB01 (fi-ligature) no longer creates a 64000+ entries - character array. - -* The internal cache-ing of font metric information is turned - off completely, because it was based on the assumption that - name + size were a unique identifier for a font. This can no - longer be guaranteed. - -* word boundary processing now works OK again, thanks to the - introduction of two virtual characters in the font table - definition. Besides the normal numeric entries in the - f.characters table, there can now also be two string keys: - "left_boundary" and "right_boundary". The ligatures and kerns - of the 'left_boundary' character are used for the pre-word - boundary processing, ligatures and kerns between characters - and 'right_boundary' are used for the post-word processing. - -* Lua font table references are no longer cached by the - executable ,in order to preserve memory. (the only downside - is that font.fonts[] access is now slower because of the need - to recreate the lua table). - -* There are other some small changes to the font table formats. - Please see the manual for details. - -* A 'real' font can now still have virtual characters if they - are loaded via lua. Just set the 'commands' section and/or - the 'fonts' array to your liking, and it should work out. - - If you have created no 'fonts' array at all, then the default - font (indentifier '1') is the current font, so that you - can create virtual duplicates of already existing characters. - - Note: this does not work the other way. There can not be - 'real' characters in a virtual font! - -* Truetype-based opentype fonts no longer require Acrobat 7 - t(hey are now written out as if they are normal truetype). - -* A lua init script can now set 'texconfig.formatname' and/or - 'texconfig.jobname'. If ther is no file or format specified - on the commandline, then, if, one of those keys is present, - that key will be used instead of simply quitting with an - error. - -* Placement of boxes and rules in right-to-left mode is debugged, - and now seems to work ok. - -* Virtual font loading is debugged. - -* Some memory leaks are resolved - -* HZ font expansion should work ok again, but is not tested. - -* a few of the warning during opentype loading have been removed - because the problems are rather harmless and turned out to be - triggered by almost every font. - - -============================================================== -Luatex snapshot-20070218 was released 20070218 -============================================================== - -* The pdftex stuff is now updated to 1.40.3 - (and on top of that, it still has those extra patches announced in - snapshot 20070202) - -* The virtual font parser is debugged and now appears rather stable. - -* There is one extra virtual command: - - "commands" = { - {"slot", 1, 97}, -- place character 97 'a' in local font 1. - } - - This is just a shortcut for {"font",1}, {"char", 97} - -* Some small memory leaks have been fixed. Luatex does not leak big - time, but I'd like to get back to valgrind reporting '0 out of 0', - instead of the current 800 bytes or so (that is a slow process). - -* You can read a truetype or opentype font from within lua code - using font.read_ttf() or font.read_otf(), respectively. - - This feature uses a fair bit of the fontforge code, making the - binary rather a bit larger than before. Just so you know. - - Apple (AAT, as well as encoding) support is still largely missing, - and bitmap-only and old Multiple-Master truetype fonts are not - supported at all (and never will be). - - The output format is (shadily) documented in the reference manual. - At the moment, it very closely resembles the internal font stucture - that is used by fontforge. - -* LuaTeX can now write wide OpenType fonts to the PDF file. - - There is no subsetting support yet, and a ToUnicode CMap is also - still missing, but nevertheless it is already somewhat useful. The - rule is very simple: if a font uses code points above 255, then it - is considered to be a `wide' font, and it will be written out as - a Type0 CID-keyed font to the PDF. - - Caveat: Getting suitable metrics into LuaTeX can be a bit of problem - right now, because font.read_otf() does not produce anything that - can be fed back into define_font without extra processing. Hans has - some experimental Lua code for ConTeXt (of course :-)) and that is - how I know it works. You can expect a nicer interface soon, - hopefully next week, in the form of a simplistic table conversion - routine. - -* I have started work on supporting Aleph's bidi typesetting in PDF - mode as well, simple text seems to be largely ok. More complicated - documents will no doubt still show some bugs, but fixing those will - be easy (once they are discovered). Exactly what happens with specials - is not yet investigated. - -* Omega's (16-bit) wide virtual fonts now work OK in PDF mode. This - means that many Aleph files can now be run in PDF mode directly. - (the documents that use UTF-8 input encoding) - - -============================================================== -Luatex snapshot-20070202 was released 20070202 -============================================================== - - -* The pdftex stuff is now updated to 1.40.2, and on top of that, it has - - - an extra patch from Han The Thanh that adds a primitive to control - the merging of fonts from external pdf images (\pdfreplacefonts), - and a bugfix for virtual font handling. - - - an extra patch by Hartmut Henkel that removes a number of malloc()s - and free()s from the calls to the compression library, thereby - making luatex run a bit faster. - -* luatex now happily accepts the following low-level syntax: - - \font\myfont = <general text> <at specifier> - - It feeds the <general text> to either kpathsea or a lua script for - further processing after stripping the braces. - - In itself, this is not all that useful, but the reason for this - syntax extension is that it paves the road for a macro package - to do something like this: - - \font\myfont = {font="Times New Roman", color="\darkred", - encoding="ec", features="liga", size=10bp} - - without having to resort to system-specific quoting mechanisms. - Macro (and other) expansion takes inside the braced argument. - - (I am considering adding this extension to \input as well). - -* It is now possible to define a font into the font.fonts[] - directly from lua, but becayse use is limited, I am only - mentioning it to be complete. - - Syntax: - <number> id = font.define(<table> font) - -* There is a (not very reliable yet) virtual font parser accessible - from lua. - - Syntax: - <table> vfdata = font.read_vf(<string> name, <number> size) - - The interpreter tries to give a reasonable representation of a - virtual font file (the .vf file). Besides a few simple top-level - items: - - designsize -- in scaled points - size -- also in sp - name -- the file name - checksum -- the vf checksum - header -- the header comment (if any) - - it also has a top-level array 'fonts' wherein each item is a mini- - array describing one of te mapped fonts. An example makes this - easy to understand - - "fonts" = { {"ptmr8a",655360}, {"psyr", 600000} } - - says that the first referenced font (index 1) in this virtual font - is ptrmr8a.tfm loaded at 10pt, and the second is psyr.tfm loaded - at a little over 9pt. These index numbers are used by the character - command definitions that follow. - - At top level, there is a 'characters' array, just as for a normal - font, except that each item has only two keys: - - "width" -- the tfm width (as stored in the .vf) - "commands" -- an array of virtual font commands for a character. - - each of the items in the 'commands' array is itself a tiny hash. - - Each of those mini-hashes represents a single character packet - command. Here is a 'commands' entry that contains every possible - one at least once: - - "commands" = { - {"push"}, -- remember where we are - {"right", 5000}, -- move right 0.08pt - {"font", 1}, -- select the fonts[1] entry - {"setchar", 97}, -- place character 97 'a' - {"pop"}, -- go all the way back - {"down", -200000}, -- move *up* about 3pt - {"special", "pdf: 1 0 0 rg"} -- switch to red color - {"rule", 500000, 20000} -- draw a bar - {'special',"pdf: 0 g"} -- back to black - } - - -* But the big news is that you can now define your own virtual fonts - on the fly, by adding a few statements to the table returned to - the 'define_font' callback. - - There are a few requirements: - - - The table has to have a top-level key 'type', and it's value - must be 'virtual'. - - The presence of this key with the specific value 'virtual' - will trigger handling of the rest of the special virtual font - fields in the table, but the mere existance of 'type' is - enough to prevent luatex from looking for a virtual font - on its own. - - Therefore, this also works 'in reverse': if you are absolutely - certain that a font is not a virtual font, assigning the value - 'base' or 'real' to 'type' will inhibit tex from looking for a - virtual font file, thereby saving you a disk search. - - - There must be a top-level 'fonts' array, as explained above. - Any fonts that are not yet known to luatex at that moment, - will be loaded automatically (Warning: do not ever use a font - in 'fonts' with the same name you will return in the table you - are defining right now!). - - - Each and every character in the fonts needs to have a 'commands' - key, as explained above. - - The main point behind these restrictions is that a font is - *either* a base font *or* a virtual font. It cannot be both - at the same time. - - -============================================================== -Luatex snapshot-20070126 was released 20070126 -============================================================== - - -* Underscores in pascal identifiers are now retained. - - This took quite a bit of work. The web2c conversion tools - needed only small adjustments, but most of the existing C - code depended on the removal of the underscores. I had to - go through changing many lines. 99% of all identifiers are - now written the same on the pascal side as on the C side. - This makes writing interface code quite a bit less confusing. - - Not everything is completely clean yet, because I did - not want to change the web2c-specific C files. I often - took the other approach and removed the underscores - from the web2c options (like 'parsefirstlinep') in the - change file instead. Ugly, but predictable. - - There is about a dozen or so of #defines left, that map - memoryword -> memory_word - strpool -> str_pool - etc. - -* The virtual font parsing and interpreting is now done in C. - (this is because it needs to be interfaced with the lua-based - font loader) - -* I am in the process of merging: the VF stuff; the TFM stuff; - the lua font loading; and the pdftex font backend into one - interface, so there were some smallish changes relating to - that as well. Nothing worth mentioning just yet except that - luatex now will read "ovf" files as well as "vf" files. - -* There are a few really small bugfixes for bug reports I received - on this list and by email. - -============================================================== -Luatex snapshot-20070119 was released 20070119 -============================================================== - -The largest new bit is the existence of a font.fonts array, that you -can use to query/adjust the internal defined tex fonts. See the manual -for more details. - -Two small new lua extensions are added as well: - - * os.setenv() -- to change the environment - * os.exec() -- a non-returning os.execute() - -And a bit of cleanup in the commandline processing. - - -============================================================== -Luatex snapshot-20070117 was released 20070117 -============================================================== - -* the pdftex core is updated to 1.40.1, and web2c to 7.5.6 - -* the pdftex-specific documentation is removed - -* lua lpeg library updated to 0.4 - ( http://www.inf.puc-rio.br/~roberto/lpeg.html ) - -* the C part of the lua md5 library is added to the binary - ( http://www.inf.puc-rio.br/~roberto/md5/md5-5/md5.html ) - -* --luaonly now puts the script itself at arg[0], and - preceding commandline items in the negative indices - (instead of starting the count at zero). - This new approach is compatible with the standalone lua - interpreter. - - -============================================================== -Luatex snapshot-20070107 was released 20070107 -============================================================== - -Hot on the heels of 20070105, a new snapshot. It turns out -that using the callback to define a font broke all ligatures. -This snapshot fixes that, and it has a few minor updates to -the manual. Next shapshot will be after the inclusion of -pdftex 1.40.1. - -============================================================== -Luatex snapshot-20070105 was released 20070105 -============================================================== - - * the calculations that converted lua strings into tex units - were horrendously wrong, this was discovered by Pawel. - - * io.lines() was still using the old, line ending sensitive, - code from the lua core distribution - - * The main font memory is allocated as needed^(1) instead of - statically pre-allocated. - - * ligatures and kerns are separated completely from each other, - so use of \noligatures no longer inhibits kerning as well - - * Metrics can be loaded using a callback: 'define_font'. - The value returned should be a lua table representing a tfm - file. - - * there is a new lua table: font. It has one function: - font.read_tfm() that returns a table reprentation of the tfm - contents, for use with the above mentioned callback - - * I dropped suppport for "Level 1" OFM files. I would like - to have a try at those extended font files, but I lack - examples (fonts nor documents). I am not even sure such - fonts have ever existed in the 'real world'. - - - -============================================================== -Luatex snapshot-20061208 was released 20061208 -============================================================== - -* There is a new switch: --safer. This disables a number of lua - functions that are more or less dangerous (a detailed list is - in the manual) - -* Two longstanding bugs have been fixed: \latelua works once - again (patch by Hartmut) and a bug that caused mysterious crashes - turned out to be a problem inside the paragraph builder - (reconstitution of ligatures) - -* Six new string iterators have been added to the string library: - string.characters (one 1-letter string) - string.bytes (one byte) - string.characterpairs (two 1-letter strings) - string.bytepairs (two bytes) - string.utfcharacters (a one-character utf-8 string) - string.utfvalues (a unicode code point number) - -* The top 256 values of the unicode range (starting at hex - value "10FF00) are now reserved for byte output. Characters - in that range will be written by luatex after substracting - that offset. The net result is that \char"10FFA9 is written - as byte value hex A9 = decimal 169 = copyright sign in latin1 - - This trick allows byte-oriented output to \pdfliterals and - \specials, but should be considered very experimental. - -* There is a new callback called 'process_input_buffer' that can - be used to mutate the line buffer just before LuaTeX actually - starts looking at it. - -* The statistics table now has readable items - statistics.inputid - statistics.lasterrorstring - that represent TeX's current input id and the last error string - -* The show_error_hook callback no longer receives any arguments -* There is a new switch: --safer. This disables a number of lua - functions that are more or less dangerous (a detailed list is - in the manual) - -* Two longstanding bugs have been fixed: \latelua works once - again (patch by Hartmut) and a bug that caused mysterious crashes - turned out to be a problem inside the paragraph builder - (reconstitution of ligatures) - -* Six new string iterators have been added to the string library: - string.characters (one 1-letter string) - string.bytes (one byte) - string.characterpairs (two 1-letter strings) - string.bytepairs (two bytes) - string.utfcharacters (a one-character utf-8 string) - string.utfvalues (a unicode code point number) - -* The top 256 values of the unicode range (starting at hex - value "10FF00) are now reserved for byte output. Characters - in that range will be written by luatex after substracting - that offset. The net result is that \char"10FFA9 is written - as byte value hex A9 = decimal 169 = copyright sign in latin1 - - This trick allows byte-oriented output to \pdfliterals and - \specials, but should be considered very experimental. - -* There is a new callback called 'process_input_buffer' that can - be used to mutate the line buffer just before LuaTeX actually - starts looking at it. - -* The statistics table now has readable items - statistics.inputid - statistics.lasterrorstring - that represent TeX's current input id and the last error string - -* The show_error_hook callback no longer receives any arguments - -* The statistics table now has readable items - statistics.luabytecodes - statistics.luastates - statistics.luabytecode_bytes - statistics.luastate_bytes - for memory statistics reporting - - -* The statistics table now has readable items - statistics.luabytecodes - statistics.luastates - statistics.luabytecode_bytes - statistics.luastate_bytes - for memory statistics reporting - - -============================================================== -Luatex snapshot-20061204 was released 20061204 -============================================================== - -* The LuaTeX interpreter can now be run as a standalone lua script - processor, by using a commandline like this: - - luatex --luaonly=luatools.lua - -* Luafilesystem (http://www.keplerproject.org/luafilesystem/ ) is - included. - -* There are a total of eight new file discovery callbacks: - find_vf_file - find_ocp_file - find_map_file - find_enc_file - find_sfd_file - find_pk_file - find_data_file - find_opentype_file - this enhances the orthogonality of the callback system, nothing - fundamental is changed. - -* There is a new callback called 'process_input_buffer' that can - be used to mutate the line buffer just before LuaTeX actually - starts looking at it. - -* The 'reader' and 'close' functions from 'open_read_file' now - receive the table they are defined in as a function argument, - that can be used as a per file localized data store. - -* Updated the Lua to the latest 5.1.1, with all known bug patches - from the website applied as well - -* Runtime autoloading of lua .so files is now off on all platforms. - -* The statistics table now has readable items - statistics.filename - statistics.linenumber - that represent TeX's current file name and line number - -* The support for user-defined type3 font .pgc files and the - associated 'read_miscfonts_file' callback has been removed. - (nobody used it anyway) - -* General cleanups to the source tree and build process. - -============================================================== -Luatex snapshot-20061023 was released 20061023 -============================================================== - -* there was a missing callback: find_font_file -* program_invocation_name was not set -* buf_size could not be more that 300k - - -============================================================== -Luatex snapshot-20061013 was released 20061013 -============================================================== - -Last friday I uploaded a new snapshot and today I finally -finished updating the manual to go with it. The changes all -relate to startup, file i/o, and callbacks. The main achievement -is: you can now run luatex without it *ever* initializing kpathsea. - -Because I am lazy, I have checked in the pdf of the manual -as well, so that I can say: Please look at - - https://foundry.supelec.fr/plugins/scmsvn/viewcvs.php/manual/ - /luatexref-t.pdf?root=luatex&rev=148&view=log - -for all the details. :-) - -============================================================== -Luatex snapshot-20061002 was released 20061002 -============================================================== - - -* Some infrastructure changes: - - libs/slnunicode-0.9.1/ renamed to libs/slnunicode/ - libs/zziplib added - libs/luazip added - - (zziplib is using a different version of autofoo. I know I have - messed up something in the build process, but the bit we need - compiles ok so I've postponed attempting to fix it) - -* The callback logic has changed quite a bit. - - - all callbacks are now only possible in lua state 0. - - - The callback 'input_line' has disappeared, and is replaced by - 'open_read_file'. One of the return values of that callback - is a table that defines a 'reader' function for line reading. - - See the manual for further information on this. - - - There are some new callbacks for the reading of various binary - files. The current ones are: - - "read_ocp_file", "read_vf_file", "read_data_file", "read_font_file", - "read_map_file". - - The rest of the file types will follow soon (fonts, enc files, and - images). - - - There are also some new callbacks that 'find' a file's pathname: - - "find_truetype_file", "find_type1_file", "find_image_file" - - here too, more will follow later. - - - the functions from io. that were copied to texio have been removed - again. The new callbacks do not pass file pointers around, so - they ere not longer needed - - - the 'open_write_file' is temporarily unavailable - -* startup.lua is now always loaded into lua state 0 - -* The luazip library from kepler is linked in, so there the table 'zip' - is accessible from all lua states. - -============================================================== -Luatex snapshot-20060922 was released 20060922 -============================================================== - -* The texio table has gained a new function: - - tex_file = texio.open(filename) - - returns a file handle of a type that luatex can use - internally (the return of io.open is unusable in callbacks - because it will be garbage-collected at a random time) - - -* In related news, there are two new callbacks you can define: - - callback.register('open_read_file', f) - callback.register('open_write_file', f) - - where your function should have the following conventions: - - function f (number id_number, string asked_name) - return boolean success, string actual_name, tex_file filep - end - - id_number: zero for the log or \input files or TeX's \read - number incremented by one (\read0 becomes 1). - asked_name: the user-supplied filename - - success: return false for error, true otherwise. - - The remaining two items are only looked at if you return true: - - actual_name: the true filename used (with extension!) - filep: a file object opened though texio.open() - - -* The tex.print function has an extra optional parameter: - - tex.print(ctt_id n, strings ...) - - This prints the strings using the catcode regime defined by - \catcodetable n (assuming n is valid, see below) - -* The new function tex.sprint has the same lua conventions as - tex.print, but behaces slightly different on the tex side: - - ** tex does not switch to the 'new_line' state (this implies - that leading spaces are not ignored) - ** no \endlinechars are inserted - ** trailing spaces are not removed from the argument - -* Catcode tables are a completely new feature, that allows - you to switch the current catcode regime in one simple - statement: - - \catcodetable <count> - - Switches to the use of a different set of catcodes (table), - that is stored under the number <count>. Such a table has to - be previously created using one of the two command below, or - the number 0 (which is pre-inititialized) - - This command obeys normal grouping rules. - - \initcatcodetable <count> - - creates a new, global, independent catcode table with catcodes - matching the code that are predefined by initex (tex -ini). - - This allocation is global - - \savecatcodetable <count> - - copies the current set of catcodes to a new, global, table - with id number <count>. The definitions in this new table - are all treated as if they were made in the outermost level. - - This allocation is global - - At the end of each grouping level, items within all existing - catcodetables are restored, regardless of which one is the - currently active table. - - Catcode table numbers cannot be larger than 0xFFFFFFF (228-1) - -* There is a new lua table: lua. It contains three read-only - items: - - lua.id -- the id number of the instance - lua.version -- a luatex version identifier string - lua.startupfile -- the full filename (+path) of startup.lua - - and it also contains a read/write array: - - lua.bytecode[] -- lua executable bytecode - - This array can be used to save and restore lua functions - across lua states. The accepted values are for assignments - are functions and nil. Likewise, the retrieved value is - either a function or nil. - - The contents of the lua.bytecode array is stored inside the - format file, so it can also be used to preload lua code. - - -* The format files are quire a bit smaller than before - - -============================================================== -Luatex snapshot-20060915 was released 20060915 -============================================================== - -* There is a new TEX primitive: \formatname. It is similar - to \jobname (read-only). In initex, the expansion is empty, - otherwise the expansion is the same as the \jobname from - the initex run. - -* the lua "tex" table has been expanded with a few of the 'convert' - codes (read-only). The supported ones at this moment are: - - tex.eTeXVersion - tex.OmegaVersion - tex.AlephVersion - tex.pdftexrevision - tex.pdftexbanner - tex.pdfnormaldeviate - tex.jobname - tex.formatname - tex.eTeXrevision - tex.Omegarevision - tex.Alephrevision - - This list looks haphazard, but it really is not. These are - all the cases of the 'convert' internal command that do not - require an argument. - -* The metatables of the subtables like tex.dimen[] etc. are now - adjustable from lua (not that I recommend doing that;-)). - -* On the lua side, there is a new global value: "luaid" - It holds the internal id number of this \directlua instance. - -* There is a new lua table, "callback", that has the single function - "callback.register", used to register callbacks. This replaces - the previous concoction (see my message about snapshot 20060901). - Syntax is : - - callback.register(<callback name>,function (f) ... end) - - where the <callback name> is for the moment, either "input_line" - or "show_error_hook". - - This function internalizes the callback function in such a way - that you no longer have to worry about \luacallback (which has - been removed), nor does it matter if you redefine a function - accidentally. - - The internal testing for callback presence is also quite a bit - faster, thanks to this change. Callback assignments are global - and the "input_line" always takes effect starting on the next - input line to be read from an actual file. - - -* \detokenizedlua has been removed. It is functionally replaced by - the new function call tex.write(""). - - Each argument to each call of tex.write () counts as an input - line, but: - ** all catcodes on that line are either 'space' (for " ") or - 'character' for all others. - ** there is no \newlinechar appended. - -* The implementation of tex.print() has changed as well: - - ** the very last tex.print() line from a \directlua - will no longer have a trailing \newlinechar - (this is very convenient when \directlua is used - within an \edef) - ** tex.print() is quite a lot faster than before, and the total amount - of returnable text from a \directlua is now only limited by - available system RAM. However, each separate tex.print () - argument has to fit in TeX's input buffer. - -* The new primitive \luastartup can be set inside the format file - to specify the lua instance number in which a possible runtime - startup.lua script is executed (initex always uses 0) - -* There is a new primitive \scantextokens. Differences with - eTeX's \scantokens are: - - ** the last line (usually only) from \scantextokens - does not have a \newlinechar - - ** \scantextokens never raises an eof error. - - This means things like - - \edef\testone - {\scantextokens{\ifnum1=1 true}\else false\fi} - - are legal input (but potentially dangerous!). - -* If you say - local d = tex.dimen["unknowndimen"] - 'd' will now become "nil" instead of raising an error - - However, - tex.dimen["unknowndimen"] = d - is still (and probably will remain) illegal - -============================================================== -Luatex snapshot-20060908 was released 20060908 -============================================================== - -* BIG CHANGE: \directlua now runs \scantokens internally. - - There is no longer a need to call scantokens yourself, the - tex.print() output is now fed straight into a pseudo file. - This is quite a bit faster as well as easier to use, but - just in case you want it, the old behaviour is still present, - under the new name - - \detokenizedlua - - -* The texio library now has its own (partial) set of I/O commands, - so that the standard lua io library is back to the distributed - state (no more patched garbage collector) - - Note: This is really a very small change (it should not have any - impact on wellbehaved input files), but I attempt to be complete - in these notes, since there is no official documentation yet. - - -* There is a new standard library available: kpse - - The most important function in that library is find_file: - - string = kpse.find_file(string filename - [,string type] - [,boolean mustexist]) - - both "type" and "mustexist" are optional, so the function - has from one upto three arguments. - - "type" is like the '-format' argument of kpsewhich. You can - run 'kpsewich -h' for a list. The default type is "tex". - - "mustexist" is like '-must-exist', and the default is false. - If you specify "true" (or a nonzero integer), then the kpse - library will search the disk as well as the ls-R databases - - The new library also has three other functions that map - straight to kpsewhich commandline options: - - string = kpse.expand_path(string) - string = kpse.expand_var(string) - string = kpse.expand_braces(string) - -* There is a second callback possibility: - - texio.show_error_hook(string message, - string|number indicator, - number lineno) - - This command is run from inside the TeX error function, and the - idea is to allow you to do some extra reporting on top of what - TeX already does (none of the normal actions are removed). - - "message" is the formal error message tex has given to the - user (the line after the "! ") - "indicator" is either a filename (when it is a string) or a - location indicator (a number) that can means lots of different - things like a token list id or a \read number. - "lineno" is the current line number - - This is an investigative item only, comments are welcome but do - not take the syntax seriously. - - The final goal IMO is the total replacement of TeX's error - handling routines, but that needs lots of adjustments - in the web source because TeX deals with errors in a somewhat - haphazard fashion (it needs unification first). The current - hook is only for 'testing the water'. - -* It is now possible to use named items in the - - tex.count[] - tex.dimen[] - tex.toks[] - - subtables, so you can have - - tex.count.scratchcounter = 0 - local enormous = tex.dimen["maxdimen"] - - Luatex looks up the value for you on the fly. You have to use a - valid \countdef (or \dimendef, or \toksdef), anything else will - generate an error. - - In a normal TeX file, you don't do \dimen\maxdimen, but the - lua syntax seems to be a bit cleaner to me. The intention is - to evntually also allow \chardefs and macros that expand - into a number (todo) - - -* The tex table has also been extended with a large list of internal - parameters (partially read/write). It is possible to access - about every primitive that you can use after \the *and* is a - single token. So there is - - integer = tex.tracingcommands (\the\tracingcommands) - integer = tex.prevgraf (\the\prevgraf) - string = tex.output (\the\output) - - etc. for all of the internal parameters, but not the items - that need extra arguments (like \the\scriptfont ) - - The subset comprising simple integer and dimension registers - are writable as well as readable (stuff like \tracingcommands - and \parindent). - - The fact that both lists are still quite limited is a result of - the very different types of things that can occur after \the and - also on the LHS of an assignment. The remaining primitives will - be filled in when there is a real need or implementation becomes - simple, whichever comes first. - - - -============================================================== -Luatex snapshot-20060901 was released 20060901 -============================================================== - -All changes are related to lua this time, and most are quite unstable -/ experimental. But first the things that are stabel/fixed bugs: - -* A VF loading bug that turned up in some of Hans' fonts - has been fixed - -* A small series of bounds checking fixes to \ocplist has been - added to prevent the system from crashing due to array indexes - running out of bounds. - -* The Lua file searching paths are now fixed. The search path for lua - script files now contains the following items (tried in order) - 1. the local directory: - ./?.lua - (for document-specific files) - 2. the items from the expansion of kpathsea's $TEXMFSCRIPTS variable, - but only the parts containing 'lua' as a subpath: - $TEXMFSCRIPTS<lua>/?.lua - $TEXMFSCRIPTS<lua>/?/init.lua - (for format-specific files) - 3. the $SELFAUTOPARENT sibling directory named 'lib'. - $SELFAUTOPARENT/lib/lua/5.1/?.lua - $SELFAUTOPARENT/lib/lua/5.1/?/init.lua - (for files that are not related to tex) - - The search path for dynamic libraries has only - 1. the local directory: - ./?.so - (for document-specific files) - 2. and the $SELFAUTOPARENT sibling directory named 'lib'. - $SELFAUTOPARENT/lib/lua/5.1/?.so - - (of course the extension is .dll on windows, but .dlls do not - work at the moment so it will not do you much good) - -* There are two functions available within a new table called - texio: - texio.write (luastring) - texio.write_nl (luastring) - both write the luastring to the same location(s) TeX writes - its stuff. So if \batchmode is on, it writes only to the - log, inside a \write, it prints to the current write file, - etc. - - A read|write interface to TeX's "file selector" will - follow shortly. - -* At startup, luatex searches for a script named - startup.lua - in the path list I explained above. If such a file exists, it is - loaded. - - This happens right before the first input file needs to be opened - (that is after format loading, but before any \everyjob tokens). - - From within the script, you can check the value of - - tex.formatname - - that is the 'format identification' as used by TEX. When the variable - is equal to nil, luatex in in 'initex' mode, otherwise it will be - something like: " (format=plain 2006.9.1)" - - -Now for the experimental portion: callbacks. Here is what I have done -so far: - -* The main reason for wanting startup.lua is file (input) re-encoding. - For this purpose, it is now possible to set up a callback for - luatex to execute. - - If you attach a Lua function to - - texio.input_line - - then from the next input line onwards, luatex will run that - function whenever it needs a new input line from a text file. - - Your function will receive a file handle as argument, and - should return either a string or nil (with nil signalling that - the end of file has occurred). - - The trivial case is simply this: - - function reader (f) - return f:read() - end - texio.input_line = reader - - - Warning: The implementation is not totally finished yet. For the - moment the file handle ("f" in the example) is a normal lua file, - with a simple but important restriction: you cannot alter its value. - You cannot f:close() it, or assign it a different value. luatex - will eventually close the file itself. - - The restriction is a side-effect of a synchronisation problem with - the lua garbage collector. Because of this, it also was necessary - to turn off the automatic file closing code for normal lua io - files (In other words: you have to close yourself all the files - you opened yourself, and you should not close any files you did - not open yourself). - - In the near future, "f" will become a special 'texio' file object - and the needed functionality from the normal io library will be - reimplemented. Along with that change, there will also be a callback - to open (i.e. find) files, and a simple interface to the compiled-in - kpathsea to use within that callback. - - -============================================================== -Luatex snapshot-20060825 was released 20060825 -============================================================== - -The main change in this snapshot is that it uses far less memory. -luatex -ini on my linux machine went from 326Mb (last week) to -93Mb (now), and "texexec luatex" now ends at 184Mb instead of -over 1/2Gb. - -This is achieved by two big changes: - -* The \mathcode, \delcode, \catcode, \sfcode, \lccode and \uccode - tables are now sparse arrays that are implemented in C. They - are no longer part of the TeX "equivalence table" and because - each had 1.1 million entries with a few memory words each, this - makes a major difference. - - See mathcodes.c and textcodes.c if you are interested in the - gory details, but be warned: the code is still extremely - rough and ugly. In particular, the dump and undump routines - are far from optimal, resulting in somewhat larger format files - than before (approx 1.3Mb larger with unicode-letters loaded, - 10k without); and the assignments do not show up when using - the etex tracing routines \tracingassigns and \tracingrestores - (code simply not written yet) - -* Single-character commands are no longer "special" internally, - they are stored in the hash just like the multiletter csnames. - - -============================================================== -Luatex snapshot-20060818 was released 20060818 -============================================================== - -The snapshot is up to par with Aleph-RC4 (from texlive devel) -and the latest pdftex beta (even newer than 20060811). However, -there are some differences, to summarize: - -* There is no pool file (all strings are embedded) - -* -8bit and -translate-file are silently ignored - -* There is no mltex nor enctex (conflicts with aleph) - -* The tex functionality is always present and enabled - (but see below about TeXXeT), so the asterisk or - -etex switch for initex is not needed - -* "plus 1 filllllllll" does not generate any errors from TeX - -* TeXXeT (from eTeX) is not present, so the primives - \TeXXeTstate - \beginR - \beginL - \endR - \endL - are missing - -* The experimental pdftex regex match operations are removed, - because that feature does not make much sense when lua is - available so the primitives - \pdfmatch - \pdflastmatch - are missing - -* The input translations from Aleph are not implemented, the - 16 related primitives are all missing - \DefaultInputMode - \noDefaultInputMode - \noInputMode - \InputMode - \DefaultOutputMode - \noDefaultOutputMode - \noOutputMode - \OutputMode - \DefaultInputTranslation - \noDefaultInputTranslation - \noInputTranslation - \InputTranslation - \DefaultOutputTranslation - \noDefaultOutputTranslation - \noOutputTranslation - \OutputTranslation - All file IO assumes UTF-8, except that all the low-ascii - controls except TAB, CR en LF are written to the terminal - using ^^ notation (even these are binary in the log file). - -* Input characters can use the full range of Unicode, - but it probably only makes sense to use values above - the base plane for \mathcode and \catcode assignments, - since the fonts as well as the hyphenation patterns - are strictly 16-bit still. - -* The primitives - \pdfpagewidth and \pagewidth, - \pdfpageheight and \pageheight, - \fontcharwd and \charwd, - \fontcharht and \charht, - \fontchardp and \chardp, - \fontcharic and \charic, - are all aliases of eachother. - -* The new primitive - \clearmarks<number> - clears a marks class completely. - -* The experimental pdftex primitives - \pdfprimitive - \ifpdfprimitive - \ifpdfabsnum - \ifpdfabsdim - and provided without the extra 'pdf' prefix, so they are - simply called - \primitive - \ifprimitive - \ifabsnum - \ifabsdim - instead. - -* I probably forgot to mention some things :-) |