diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/web2c/luatexdir/NEWS | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 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, 4762 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/NEWS b/Build/source/texk/web2c/luatexdir/NEWS new file mode 100644 index 00000000000..168d2c40435 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/NEWS @@ -0,0 +1,4762 @@ +============================================================== +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 :-) |