update to lpeg 0.12
[luatex.git] / source / texk / web2c / luatexdir / NEWS
blob87bc2756efe264f50b491726eeba493b756f8eec
2 This file is in the public domain.
4 ==============================================================
5 Luatex beta-0.78.2 was released 20140113
6 ==============================================================
8 * Extended luafontloader's info() function to include data
9   from the 'pfminfo' and 'names' structure.
11 * Fixed a bug in the luafontloader library that made loading 
12   some fonts extremely slow (LastResort.ttf)
14 * Removed a recent extension in the luafontloader library that
15   made loading fonts with lots of glyphs slow (ArialUnicoce.ttf).
16   Note: the extension made sure that there were no duplicate 
17   glyph names in the font after loading. 
19 * Restored --recorder output for lua files (dofile/loadfile/io.open)
21 * One-at-a-time pattern adding from lua used to require enormous 
22   amounts of memory
24 * luatex's fontloader.to_table() no longer reports 'altuni' table
25   information for alternates that are solely driven by the font
26   encoding. This fixes loading time issues for fonts that fill 
27   encodings by copying a single glyph many times, like e.g. 
28   LastResort.ttf from Apple.
30 * The datestamp no longer appears in any banners. The associated
31   \luatexdatestamp primitive is deprecated and will be removed
32   in 0.80.0.
34 * Synchronization with the TeXLive sources updated the following
35   libraries:
36   * cairo is now 1.12.16
37   * pixman is now 0.32.4
38   * lua is now 5.2.3
39   * zlib is now 1.2.8
40   * poppler is now 0.25.0
42 * That same TL synchronization also fixes these issues:
43   * Always write "\nendstream" to the PDF for PDF/A-1b compliance.
44   * Large file support (>4GB) in Lua
45   * Big images could overflow on systems where sizeof(long)=4.
46   * In writing CID CFF fonts to the PDF, and end_dict() was missing.
47   * Unknown 'post' table versions (found in some broken ttf/otf
48     fonts) are now treated as-if they specified version 3.0.
49   * Fix crashes on 32-bit systems caused by bad C header inclusion
50     order
51   * Handle '--luac' and '--luaconly' properly
52   * luatex is now released under GPLv2+, not just GPLv2.
53   * luatex can now find .ofm metric files even if the extension
54     is not given explicitly.
56 * node.unset_attribute() was broken in 0.78.0
57    
58 * The UTF-8 commandline patch from 0.78.0 for Win32 was removed
59   again (did not work properly)
61 ==============================================================
62 Luatex beta-0.78.0 was released 20131231
63 ==============================================================
65 * Instead of using expanded fonts, just calculate the expanded 
66   width of glyphs where needed, and carry expand info in the
67   glyph nodes (all based on Hans' suggestions). All font expansion 
68   functions are disabled and most are removed.
70 * New, faster (but limited) direct node access from lua, see
71   the manual for details
73 * Support for Apple Advanced Typography (AAT) information in
74   fonts is dropped
76 * Extended build script for mingw/msys (includes 64-bit support)
78 * Various patches from/via Akira Kakuta for better Win32 
79   integration
81 * Fixes for some bugs in de pdfscanner library (mostly related
82   to inline images)
84 * Maximum hyphenated word length is now 64Kb characters.
86 * Various patches from Khaled Hosny and Luigi Scarso for the 
87   luafontloader subsystem
89 * Fix for a crash when re-dumping formats
91 * Fix for a Selene unicode library bug where some characters in 
92   UTF-8 were incorrectly flagged as having the 'Space' property
94 * Some smaller fixes
96 ==============================================================
97 Luatex beta-0.76.0 was released 20130405
98 ==============================================================
100 * Metapost 1.801.
102 * Small patches from TeXLive 2013, as well as an update to the
103   latest libraries (libpng, poppler, etc.)
105 * Speed up printing (of TeX strings) to the terminal and log.
107 * New lua function node.end_of_math().
109 * Fixed a memory leak in the lua function pdfscanner.scan().
111 ==============================================================
112 Luatex beta-0.75.0 was released 20130301
113 ==============================================================
115 News:
117 * New expandable primitive \Uchar.
119 * Metapost 1.790.
121 * New version of lnodelib.c with speedups by Hans and Luigi.
122   Also added some extra sanity checks to the Lua node field
123   setting functions.
125 * Support 'umath' in tex.extraprimitives(), so that formats can
126   make the \Umath* primitives unprefixed, now that they will be
127   provided by XeTeX as well.
129 * Removed a bunch of deprecated primitives
130   * \AlephVersion, \Alephrevision, \Alephversion, \Alephminorversion
131   * \OmegaVersion, \Omegarevision, \Omegaversion, \Omegaminorversion
132   * \omathcode, \odelcode, \omathchardef, \omathchar, \omathaccent,
133     \odelimiter, \oradical
134   * \Umathbotaccent, \Umathaccents
136 * Fix large file support.
138 * Fix Lua's loadfile().
140 * Removed the cidmap callbacks again (let that be done by user lua 
141   code after the fact).
143 * Removed the fatal error on fonts where num_glyphs is too high,
144   as that problem is actually harmless.
146 * Some compilation issues under Win32 and Solaris resolved.
148 * Allow math extender objects to be zero width.
150 * The 'epdf' library has been extended to deal with finding and
151   saving embedded files (catalog:numEmbeddedFiles() and catalog:
152   embeddedFile, new EmbFile object).
154 ==============================================================
155 Luatex beta-0.74.0 was released 20121224
156 ==============================================================
158 News:
160 * lua 5.2
161   There are no patches to the core Lua files; a future version 
162   of luatex will switch to loading the regular lua 5.2 dynamic 
163   library instead of depending on a statically compiled
164   one.
166 * A bleeding-edge version of luasocket is included, as there 
167   is no 5.2-compatible official release yet. 
169 * A new lua extension is the two-argument version of 
170   string.dump from Luajit:
172     string.dump(function f, [boolean strip])
174 * mpost 1.780
176 * The implied existence of the following lua libraries is now
177   deprecated:
179      debug, unicode.*, luazip, lfs, lpeg, zlib, gzip, md5, 
180      socket.*, profiler, epdf, fontloader, mplib, and
181      pdfscanner.
183   Future versions of luatex will load these modules on demand
184   from dynamic libraries. 
185   
186   Please update your sources to include a 'require' line for 
187   each of the library modules mentioned.
189 * Two new callbacks: find_cidmap_file and load_cidmap_file
190   (used by the fontloader to discover .cidmaps)
192 ==============================================================
193 Luatex beta-0.72.0 was released 20121210
194 ==============================================================
196 News:
198 * update various used libraries, including mplib 1.770, 
199   poppler 0.21, libpng 1.5, and lpeg 0.10.2.
201 * new 'pdfscanner' lua library.
203 * various OpenType math fixes, including \Umathcharnumdef.
205 * improved placement of bottom accents.
207 * various other small fixes that have accumulated over the past 
208   year-and-a-half.
210 ==============================================================
211 Luatex beta-0.70.1 was released 20110519
212 ==============================================================
214 News: 
216 * fixed: recorder file location from TL (Akira).
218 * fixed: missing newline on 'No output' line.
220 * fixed: relative names in synctex file.
222 * fixed: 16bit png images in generated %!PDF-1.4.
224 * fixed: building with (installed) libpng < 1.5.0
226 * fixed: year in --version output.
228 * fixed: box output to synctex.
230 * fixed: FontDescriptor for non-embedded OpenType fonts has an 
231   invalid FontFile3 entry (#654)
233 * fixed: crash on non-existent images.
235 * fixed: small memory leak in the ipc code.
237 * fixed: tex.print() and tex.sprint() don't recognize -2 as the 
238   first argument (#659)
240 ==============================================================
241 Luatex beta-0.70.0 was released 20110506
242 ==============================================================
244 News:
246 * fixed: various changes needed for libpng 1.5.2.
248 * fixed: node.fields() for nodes without subtype.
250 * fixed: non-argument use of os.execute().
252 * fixed: tex.[s|t|]print() with invalid catcode table arguments.
254 * fixed: recorder filename location with --output-directory.
256 * fixed: display alignment in TRT mode.
258 * luatex now uses the standard synctex files from Jérome Laurens.
261 ==============================================================
262 Luatex beta-0.66.0 was released 20110412
263 ==============================================================
265 News:
267 * fixed: linebreak_filter doesn't do its default job when 
268   tex.linebreak is used
270 * fixed: \escapechar ignored by \meaning
272 * fixed: wrong px default
274 * fixed: font kern attribute inheritance
276 * fixed: "nop" unrecognized in virtual fonts
278 * fixed: assertion failure in dviluatex when font ptmr8t used
280 * fixed: tex.settoks for with strings with embedded zeroes
282 * fixed: an indexing problem with nonexistent font glyphs
284 * fixed: some crashes and other bugs on the 'subtype' and 'prev' 
285   fields (not all node types have those fields)
287 * fixed: crash on  token.csname_id ("")
289 * fixed: initialize the statically allocated node's type ids
291 * fixed: fencepost error in math parameter counting
293 * fixed: math family numbers > 255 are allowed
295 * fixed: compilation failure on Hurd
297 * fixed: a small bug leading to displacements when reading 
298   the AccentTop table
300 * fixed: \directlua followed by \pdfximage generates error if 
301   draft mode is active
303 * fixed: a problem with \vadjust pre in alignments
305 * fixed: a lua stack growing problem in the backend in 0.65.0,
306   resulting in an inability to create more than a few thousand 
307   generated pages
309 * fixed: inclusion of Scribus-generated pdfs
311 * adapt: the default form margin is now zero (was 1bp before) 
313 * adapt: libpng 1.4.4, zzuplib 0.13.60, mplib 1.504
315 * adapt: small changes to the build system and new imports from
316   the texlive repository
318 * feature: new function node.currentattr() queries the current
319   active attribute list
321 * feature: Lua font loading; ignore unknown enumeration keys in 
322   MathConstants
324 * feature: JPEG 2000 image support
326 * feature: continuing work on the 'epdf' library
328 * doc: the 'epdf' lua library is now documented
330 * doc: various other manual corrections
333 ==============================================================
334 Luatex beta-0.65.0 was released 20101213
335 ==============================================================
337 News:
339 * The Aleph and Omega version primitives are deprecated.
341 * The Apple Snow Leopard Truetype font collections now work
342   properly.
344 * Libpng has been updated to 1.4.4, and zlib to 1.2.5.
346 * New lua functions node.next() and node.prev().
348 * The already deprecated for some time node.protrusion_skipable()
349   function has been removed.
351 * fontloader.apply_featurefile() and fontloader.apply_afmfile()
352   now return nil,<errortable> on failure.
354 * The various node list fields in the lua node interface have
355   been renamed from 'list' to 'head', e.g. tex.box[0].head,
356   and the 'list' name is deprecated. For now, the deprecation 
357   is silent, as 'list' will stay for quite some time. Please
358   update your lua source as soon as possible, though.
360 * The call node.type(<node>) now returns "node". The existing
361   functionality is otherwise unchanged.
363 * Luafilesystem has been updated to 1.5.0. NOTE: there is an
364   incompatible change in the directory iterator method.
366 * The restriction on linebreak_filter has been eased: at least one 
367   horizontal box should be returned, but that is not necessarily 
368   the last node any more.
370 * Backward compatibility has been restored for \meaning\mathchar
372 * node.first_character() has been renamed to node.first_glyph()
373   to better match its actual functionality.
375 * The \Umathaccent primitive now supports both/bottom keywords,
376   and \Umathbotaccent / \Umathaccents are now deprecated.
378 * The \Umathaccent primitive now also supports the fixed keyword,
379   which supports non-growing math accents even if the font says
380   there are extensible variants.
382 * Ongoing work on the epdf library.
384 Bugfixes:
386 * Assignment to \dimen65535 was broken earlier.
388 * <box>.head.prev is now always initialized to null (0).
390 * luatex -lua=<script> '\relax' no longer exits immediately, 
391   instead going into interactive mode as it should.
393 * The \jobname was initialized wrongly for input file names
394   with multiple dots in them.
396 * The synctex file is now written in the right place when 
397   --output-directory is given.
399 * \letterspacefont could cause crashes, especially when combined
400   with font expansion.
402 * Luatex would crash on linux32 systems if it was build in an 
403   environment where LFS (>2GB files) was enabled by default.
405 * Node lists created by node.copy_list() could not be hyphenated
406   due to an assertion error.
408 * Synctex support was partially broken since 0.60.0.
410 * With OpenType math fonts, accents with multiple parts 
411   (like the \vec arrow) forgot to include all parts if the
412   accentee was too narrow.
414 * With OpenType math fonts, accents over any class except 0 and 7 
415   were misplaced.
417 * kpse.lookup("plain", {all = true}) was broken in kpathsea
418   itself (no extension given as well as --all specified).
420 * A FontForge bug made Cambria Math accents look bad, and the
421   placement of math top accents did not allow a marker at the
422   origin (patches by Stefan Philipp)
424 * Cut&Paste from PDF was sometimes broken due to bad ToUnicode map.
426 * Many small manual improvements (thanks to Paul Isambert)
428 * An other bugfix to lpeg 0.9 (from Roberto Ierusalimsky)
430 * Some small fixes to writet1.w (from Han The Thanh)
432 * A build failure because of bad libz configuration on Win32
434 ==============================================================
435 Luatex beta-0.64.0 was released 20101112
436 ==============================================================
438 News:
440 * New lua functions pdf.refobj(), pdf.maxobjnum() and pdf.objtype()
442 * New lua function node.is_node()
444 * The max_strings configuration variable's maximum value is
445   raised to be identical to texlive's maximum (2097151), and
446   same for param_size (32767).
448 * The embedded mplib is now 1.503.
450 * Minor cleanups in the output of fontloader.to_table():
452   - removed out-of-range altuni's from the output
453   - don't dump the extra encodings, just the actual font encoding
454   - export the encoding's name also as 'enc_name' at one level up
455   - no longer exporting unset macstyles, nor zero uniqueids
456   - fix creationtime and modification time
458 * Ongoing work on the epdf library
460 Bugfixes:
462 * Fix a bug where an explicit hyphen prevented hyphenation for the 
463   whole rest of the paragraph
465 * Internal font copying forgot to copy the last font dimen
467 * os.selfdir() is now documented
469 * patch quad (\fontdimen6) in \letterspacefont to be compatible
470   with pdftex
472 * Multi-page pdf inclusion was very slow in 0.63.0
474 * Some extra checks added to the handling of glue_spec node 
475   objects in lua code.
477 * Some node.prev pointers have been corrected (but this is not
478   quite finished).
480 * A small fix to lpeg 0.9.
483 ==============================================================
484 Luatex beta-0.63.0 was released 20100909
485 ==============================================================
487 News:
489 * Drop tex.ht[], tex.wd[], tex.dp[].
491 * Drop OCP support (and associated primitives).
493 * Add tex.catcode[], tex.lccode[], tex.sfcode[], tex.uccode[],
494   tex.mathcode[] and tex.delcode[] and associated functions.
496 * Add CIDset tables to the output pdf where appropriate.
498 * Added a 'string' field to late_lua nodes on the lua side. This 
499   field does not convert the assigned string to a tokenlist.
501 * The result of fontloader.open() now has some virtual accessors
502   (as well as fontloader.to_table).
504 * There is now a `short reference' in the manual folder
505   (functionref.pdf)
507 Bugfixes:
509 * Fix a crash on an empty font (bugreport #468).
511 * Fix a crash for extremely long pattern arguments.
513 * Fix a crash on bad virtual character arguments in lua.
515 * Fix hyphenation exceptions.
517 * Prevent linebreak between initial local_par paragraph whatsit 
518   and a following skip (bugreport #437).
520 * Fix placement of scripts on textstyle big operators in MATH
521   fonts (bugreport #466).
523 * Fix a crash on the return value of MPlib's 'postscript' 
524   operation on images.
526 * Fix a crash on \leftghost & \rightghost in math mode.
528 ==============================================================
529 Luatex beta-0.62.0 was released 20100823
530 ==============================================================
532 News:
534 * LuaTeX now uses libpoppler (0.12.4) instead of xpdf.
536 * All backend functions now report what file they were searching
537   for whenever a file cannot be found.
539 * Input-ed lua files are now mentioned in the fls file if
540   the --recorder switch is specified on the command line.
542 * Paragraph indentation hlist nodes and hlist and vlist nodes 
543   generated by alignment rows and cells now have a subtype
544   (3 for indent box, 4 for rows/columns, 5 for cells).
546 * The 'epdf' lib is in active development and still growing.
548 * The 'fontforge' table is finally removed (was deprecated
549   since 0.40).
551 Bugfixes:
553 * A new mplib import fixes two bad bugs in mplib:
554   - string equality test was wrong
555   - type declarations could delete pre-existing variables
557 * PNG images with transparency could create random size
558   differences in the generated PDF.
560 * In some special cases, font expansion could cause wrong
561   spacing in the generated PDF.
563 * \letterspacefont was broken since a very long time.
565 * The node subtype of the \leftskip and \rightskip glues was 
566   wrong.
568 * Some memory leaks have been removed.
570 * Various manual fixes.
572 ==============================================================
573 Luatex beta-0.61.0 was released 20100728
574 ==============================================================
576 New features:
578 * New lua library 'epdf' for introspection of PDF inclusions,
579   see the manual for details.
581 * Mplib version 1.502 is now included (which is still beta, 
582   so be careful).
584 * new "finish_pdffile" and "pre_dump" callbacks.
586 * new function pdf.pageref()
588 * In the lua 'tex' library: assignment to internal glue 
589   parameters is now allowed.
591 * New lua function tex.error().
593 Bugfixes:
595 * Fix for crashes on fonts with bad Panose values.
597 * Fix for a box placement bug that could sometimes cause text
598   to overlap.
600 * Fix for a few small PDF/A1-a compatibility bugs.
602 * Fix \letterspacefont.
604 * Fix \Ustopdisplaymath in combination with aligned displays.
606 * In math delimiters, the last of a chain of predefined sizes
607   was always ignored if there were also extensible parts.
609 ==============================================================
610 Luatex beta-0.60.2 was released 20100701
611 ==============================================================
613 Bugfixes:
615 * Various small portability fixes, especially for non-gcc
616   compilers.
618 * Updated synctex from Jerome Laurens.
620 * fix bug #406: \pdfliteral hinders hyphenation.
622 * fix pdf overprinting bug (related to \pdfliteral).
624 * patch from Akira Kakuto that ensures that only absolute commands
625 that are inside the %PATH% will be executed in win32's restricted 
626 \write18
628 * fix a buffer overflow in luafontloader.
630 * fix cross-platform share-ability of generated formats.
632 * fix a few typos in the manual.
634 * fix trashing of the null glue spec by attribute reference code.
636 * documented the deprecated state and brokenness of otp processing.
639 ==============================================================
640 Luatex beta-0.60.1 was released 20100428
641 ==============================================================
643 New features:
645 * renamed node.skipable() to node.skippable().
647 * More git discovery patches in getluatexsvnversion.sh.
649 * Added --warnings=[no|min|yes|max|all] option to build.sh.
651 * While cross-compiling, build.sh now adds an extra linker switch 
652   to allow win32 exes to use 3G instead of 2G of virtual memory.
654 Bugfixes:
656 * os.exec() & os.spawn() handled the environment differently from 
657   os.execute() on Win32 (patch from Tomek)
659 * Builds with --enable-ipc were broken.
661 * Assigning and acquiring \fontdimen s from TeX code was broken.
663 * An initial attempt at fixing bug #372 (\predisplaydirection).
665 * An attempt to fix \eqno/\leqno placements in mixed direction 
666   \mathdir/\textdir.
668 * Our local xpdf patch is reverted, it is not needed any more.
670 * The os.selfdir variable was not documented, as well as broken 
671   on WIN32.
673 * Fix "\input tikz hello \bye" bug, plus fix one sign error.
675 * Fix handling of lua script files with UNC names.
677 ==============================================================
678 Luatex beta-0.60.0 was released 20100404
679 ==============================================================
681 New features:
683 * os.name now knows about CYGWIN (from Elie Roux)
685 * Internal handling of direction specifiers is faster now.
687 * Each glyph node now has three new virtual read-only fields:
688   width, height, and depth (values in scaled points, of course)
690 * There are new functions node.protrusion_skipable() and
691   tex.badness() (useful for paragraph breaking in lua)
693 * Also new: tex.linebreak(). See the manual for details.
695 * All lua errors now report file and line numbers to aid in
696   debugging.
698 * Import of metapost 1.211.
700 * pdf.pdfcatalog will be replaced soon by the new pdf.catalog
701   pdf.pdfinfo will be replaced soon by the new pdf.info
702   pdf.pdfnames will be replaced soon by the new pdf.names
703   pdf.pdftrailer will be replaced soon by the new pdf.trailer
705 * pdf.pdfmapfile and pdf.pdfmapline are replaced by the new
706   pdf.mapfile() and pdf.mapline() functions. (a function interface
707   fits these parameters better because they never return anything).
709 * New read-write lua variables: pdf.pageattributes, pdf.pageresources,
710   pdf.pagesresources
712 * getluatexsvnversion.sh now correctly detects git-svn and still
713   manages to find a valid SVN revision number (from Patrick Gundlach)
715 * Many of the source files have been converted to CWEB.
717 Bug fixes:
719 * GNU libtool is now used to solve the various technical issues with
720   dynamic loading of lua modules.
722 * Error detection in scan_integer_part was wrong due to missing
723   initialization of OK_so_far (spotted by Javier Mugica)
725 * Synctex was broken in 0.51-0.52.
727 * \lastlinefit was broken since ... well, nearly forever.
729 * Reading of binary files with length zero was broken.
731 * Trapping of unitialized rules (this was for sloppily created
732   rule nodes from lua)
734 * pdf.immediateobj('streamfile') was broken on 64-bit platforms.
736 * tex.linebreak did not take the given left and right skip, but
737   instead used the current TeX-side values (bug #356).
739 * the found 'MAKE' command in build.sh is now fed into configure to fix
740   problems with that not finding GNU make even when it is actually
741   installed.
743 * dofile(<nil>) and loadfile(<nil>) in batch mode now give an
744   error and continue instead of pointlessly waiting for user input.
746 * Reverted commit #3417 (the buildpage experiment) as it causes bad
747   things to happen when items are waiting during page breaks.
749 * Overrule loaders[4] in --safer mode, make require() behave
750   closer to normal lua 5.1, and add some nicer error messages
751   (based on an email and patches from Manuel Pegourie-Gonnard)
753 * Added an extra sanity check for GDEF loading in luafontloader,
754   based on a crash caused by Linux' AkaashNormal.ttf.
757 ==============================================================
758 Luatex beta-0.52.0 was released 20100316
759 ==============================================================
761 New features:
763 * Various small manual improvements.
765 * A better version of getluatexsvnversion.sh, from Tomek.
767 * node.copy_list() now allows the second (optional) argument to
768   be nil.
770 * An import of the current state of the texlive repository
771   (kpathsea and build system).
773 Bug fixes:
775 * An attempt fix for bug #345 (math kerning is not perfect): when the
776   current math font is a new math font, check against \catcode <cur_c>
777   == 11 to suppress the italic correction, instead of looking at
778   the value of space(<cur_f>).
780 * There is a new <tfmtable> key: 'units_per_em' (defaults to 0).
781   This is part of a fix for bug #200 (Problem with CFF fonts having
782   em-size other than 1000): there is a special correction to the
783   embedded cff font itself and the font scale if the font to be output
784   is opentype or type1 in unicode encoding and the 'units_per_em
785   differs' from zero.
786   <tfmtable>.units_per_em has to be passed back to luatex from
787   the lua font loading code for this to work.
789 * A fix for bug #314 (problem with pk file).
791 * lua code can no longer change the internal preallocated glue_spec
792   nodes (as that resulted in weird spacing bugs). For this, glue_specs
793   now have a new field: 'writable'. If that field is false, a copy
794   has to be made of the glue_spec instead of doing an assignment
795   to it.
797 * Setting of \textdir inside the output routine could trash output
798   on following pages due to a lingering internal variable.
800 * \pdfthread crashed because the arguments were handled in reverse
801   order. 
803 ==============================================================
804 Luatex beta-0.51.0 was released 20100312
805 ==============================================================
807 New features:
809 * Various small manual improvements.
810 * The backend message "cannot open Type 1 font file for reading"
811   now reports which Type1 font it was looking for.
812 * Fontforge clears some font names at loading time that will be
813   refilled in at font generation time, but the fontloader should not
814   do that. Patch from Khaled Hosny.
815 * New synctex code imported from TeXLive.
816 * luamd5/md5.h is renamed to luamd5/luamd5.h to avoid confusion.
817 * Embedded mplib is now 1.209.
818 * Some experimental tweaking of buildpage_filter, see the manual
819   for details.
820 * Luatex now detects kfreebsd (from Alan Braslau)
821 * The new lua function tex.sp() converts a string to a number
822   representing scaled points.
823 * There is now support for revision numbers in the banner and stats
824   library again.
825 * The command line help and manual documentation page is extended.
826 * node.hpack() now also accepts "cal_expand_ratio" and "subst_ex_font"
827   modifiers.
828 * node.hpack() and node.vpack() now give back the badness of the box
829   as second return value.
830 * node.copy_list() now allows a second (stop) argument, this stopper
831   is not copied.
832 * new lua functions in lfs: lfs.readlink() and lfs.shortname().
833 * new lua function tex.tprint() that can combine multiple catcode
834   regime prints in one function call.
835 * new lua sub-table: tex.nest[] (read/write access to the semantic
836   nest state).
837 * New lua functions in kpse: kpse.lookup() and kpse.version(). See
838   the manual for more details.
839 * New lua function tex.shipout().
841 Bug fixes:
843 * There problems in the pdf output for Type3 (pk) fonts.
844 * Fix a bug that allowed bad commandline quoting.
845 * Fix a bug that sometimes caused crashes when \pdfprotrudechars.
846 * The build script now exports CONFIG_SHELL to avoid problems with
847   /bin/dash.
848 * The was a bug in the generated /Image /ProcSet.
849 * status.font_bytes reported the wrong value.
850 * Lots of compiler warnings are removed (thanks Javier Mugica).
851 * Patch to fontloader.info() to accept filenames with embedded
852   parentheses.
853 * Fix a \write error with docstrip package.
854 * Fixed a crash on AdobeMyungjoStd-Medium.otf.
855 * Fix coco stack overflows, needed for lpeg.
856 * \pdfcompresslevel wasn't initialized for early immediate objects.
857 * Fix for slanted fonts when HZ was on (slant angle was multiplied).
858 * When concatenating content streams, put a space between them.
859 * Allow pfb lines to end with \r as well as \n (for msam10.pfb).
860 * Fix the internal string->scaled point conversion in the lua
861   interface.
862 * Memory leaks in the fontloader removed, thanks to patches from
863   Elie Roux.
864 * Fix a crash caused by the combination of coroutines and font.each().
866 Removed features:
868 * Support for Type3 .pgc files (nobody used them). 
870 ==============================================================
871 Luatex beta-0.50.0 was released 20091224
872 ==============================================================
874 New features:
876 * Fonts now listen also to the 'extend' key in the lua font 
877   metrics table, and the processing for this is done via de
878   pdf text matrix instead of via the font matrix, which means
879   it now works for all font types.  
881 * The embedded Metapost library is now at version 1.209.
883 Dropped features:
885 * It is no longer possible for fonts from embedded pdf files
886   to be replaced by / merged with the document fonts of the
887   enveloping pdf. This regression may be temporary, depending
888   on how the rewritten font backend will look after beta 0.60.
890 Bug fixes:
892 * Use of \middle confused the \mathstyle operation.
894 * \pdfcolorstack handling was broken.
896 * node.unset_attribute() had a bug whereby it inverted the 
897   requested result in some cases (the node on which the unset
898   was called was sometimes the only node at the current level
899   that *kept* the attribute).
901 * During font expansion, the internal font copy had one character 
902   information object less than the original, resulting in the
903   disappearance of a glyph in some fonts when font expansion
904   was active.
906 * Placement of operator scripts of OT MATH fonts is adjusted 
907   to be conformant with Word's logic where the italic correction 
908   is only used to tuck in the subscript and for nothing else.
910 * luafontloader.open() no longer writes directly to stderr in
911   case of internal font errors.
913 * Any <pdf_refobj_node>.objnum could not be assigned to.
915 * The lua 'pdf' table could not be assigned to.
917 * The lua 'md5' library was returning incorrect results on 
918   64-bit architectures.
920 * Luatex now compiles on GNU Hurd systems.
922 * Fix segfault when embedding stream file object (these 
923   backend segfaults were a side-effect of the string pool
924   patches).
926 ==============================================================
927 Luatex beta-0.47.0 was released 20091218
928 ==============================================================
930 New features:
932 * New read-write lua variables pdf.pdfcatalog, pdf.pdfnames, 
933   pdf.pdfinfo, pdf.pdftrailer
935 * The horizontal mode nodes that are added to lines during line 
936   breaking now inherit the attributes from the first and last node 
937   inside the created line.
939 * The new function pdf.registerannot(<number>) registers an 
940   annotation object number to be included in the current 
941   page's /Annots list.
943 * The variables <metrics>.Mathconstants.FractionDelimiterSize 
944   and <metrics>.Mathconstants.FractionDelimiterDisplayStyleSize
945   are added to the font table. This allows proper setting of the 
946   size parameters for TeX's ...withdelims math primitives.
948 * The internal representation of the string pool is reorganized
949   (the pool of string characters is now allocated dynamically),
950   and as a side-effect the lua variable status.init_pool_ptr
951   is deprecated and will be removed in a later version. Also,
952   status.pool_ptr now simply returns the current number of bytes
953   in use for string characters.
955 * There are new lua variables pdf.pdfmapline and pdf.pdfmapfile 
956   (write-only strings that mimic \pdfmapline and \pdfmapfile).
958 * \pdfobj data and attribute are now stored as C strings instead
959   of as token lists (this should speed up cases with a lot of data).
961 * Artificially slanted fonts now work via the pdf text matrix
962   (instead of adjusting the actual font) so that it now also
963   works for non-Type1 fonts. The lua <metrics>.slant font key is 
964   now obeyed in all cases.
966 * The lua function font.id(<string>) returns the internal font id 
967   number belonging to a control sequence name.
969 * Pdf image inclusion is optimized such that objects from an
970   external pdf will now be included only once even if they are 
971   referenced from multiple inclusions.
973 Bug fixes:
975 * Protrusion for non-TLT documents did not work properly for
976   the hyphenation character.
978 * \lastbox could not remove the paragraph indent box for non-TLT 
979   documents.
981 * Pdf images (\pdfximage) are no longer kept open during the
982   whole run, but closed and reopened. An error is raised if
983   the file has changed between \pdfximage and \pdfrefximage.
984   This prevents the 'too many open files' error when lots of
985   images are included.
987 * On Win32 Pdf image files are locked during the time that it is 
988   open, to prevent unnoticed file changes by external sources.
990 * Compilation now again works on FreeBSD.
992 * Format sharing between 32-bit and 64-bit architectures was 
993   broken.
995 * Unsetting attributes from lua could sometimes result in
996   the unset state persisting beyond the current group level. 
998 * If something went wrong in the scanning of pdf action items,
999   the error message reported the current primitive name 
1000   incorrectly.
1002 * Luatex would crash on non-existant pdfs that were referenced
1003   from map file entries.
1005 ==============================================================
1006 Luatex beta-0.46.0 was released 20091126
1007 ==============================================================
1009 New features:
1011 * The build.sh script now has better support for new MacOSX-es
1012   (patch from Mojca).
1014 * Luatex now has experimental support for dynamic loading of 
1015   external compiled lua libraries. Building luatex and loading
1016   external .so/.dll files is reported to work on Windows,
1017   linux and osx, other platforms are still unknown.
1019 * pdf.obj{type="stream"} no longer converts its argument to and
1020   from a tokenlist. This allows the use of binary data in the
1021   "string" argument. Such data does still have to hidden from 
1022   the normal file parser by putting the code in a dofile() 
1023   or by using string.char(), though.
1024   
1025 Bug fixes:
1027 * Luatex 0.45.0 was not able to find truetype nor opentype fonts
1028   if there were no callbacks defined (patch from Pawel).
1030 * 0.45.0 printed the user input instead of the full pathname
1031   for \input-ed tex files.
1033 * The TFM reader now rejects fonts with tfm names that are 
1034   longer than 255 characters because such font names cannot 
1035   be stored in a DVI file.
1037 * The combination of \immediate\pdfxform followed by a later
1038   \pdfrefxform could cause broken pdf output files because
1039   the box used for the form could have been freed and even
1040   reused already at that moment in time, sometimes resulting 
1041   in an invalid transformation matrix.
1043 * The placement of super- and subscripts for displaystyle
1044   \int's in CambriaMath is now better than before. It still
1045   needs a tweak to the metrics though: in the current version,
1046   the italic correction has to be substracted from the width
1047   of the integral sign to get correct placement (context mkiv
1048   does this).  to be continued ...
1050 ==============================================================
1051 Luatex beta-0.45.0 was released 20091118
1052 ==============================================================
1054 New features:
1056 * Loading big OTF fonts via lua is now much faster than before,
1057   at the expense of a bit of precision loss in the calculated 
1058   bounding boxes.
1060 * Two new token lists are provided: \pdfxformresources and 
1061   \pdfxformattr, as an alternative to \pdfxform keywords.
1063 * \input and \openin now accept braced filenames.
1065 * The \endlinechar can now be set to any value between 0 and 127.
1067 * Luatex can now optionally use kpathsea to find lua require()
1068   files.
1070 * The new primitives \aligntab and \alignmark are aliases for
1071   the use of & and # in alignments.
1073 * \pdfrefximage [width <dimen>] [height <dimen>] [depth <dimen>] <imageref>
1074   overrules settings from \pdfximage for this \pdfrefximage call only
1076 * The print precision for small numbers in lua code (tostring)
1077   has been improved.
1079 * Akira Kakuto suppled a patch that restricts writing to files
1080   with names such as latex.bat etc. (on windows only)
1082 * (un-feature): from now on luatex now only handles 4 direction 
1083   specifiers: TLT (latin), TRT (arabic), RTT (cjk), and LTL 
1084   (mongolian). The other directions now generate an error.
1086 * (un-feature): xpdf's automatic lower- and uppercasing retry attempts 
1087   for nonfound image pdf files has been removed.
1089 * The callbacks hpack_filter, vpack_filter and pre_output_filter
1090   pass on an extra string argument for the direction, when known
1091   (nil == use default).
1093 * The lua functions node.hpack(), node.vpack() and node.dimensions() 
1094   now accept an optional direction argument (not given == use default).
1096 * \pdfrefxform [width <dimen>] [height <dimen>] [depth <dimen>] <formref>
1097   scales a form object; similar principle as with \pdfximage: depth alone
1098   doesn't scale, it shifts vertically.
1100 * A change to the relative ordering inside font name discovery for use
1101   by the backend: now it tries <f>.psname first, as that is much less 
1102   likely to contain spaces.
1104 * For ttc fonts, now the used subfont name and its index id are printed
1105   to the terminal, and if the backend cannot find a ttc subfont, the
1106   run is aborted.
1108 Bug fixes:
1110 * Prevent crashes for lua-loaded fonts without a (tfm) name.
1112 * Remove spurious newlines in the output pdf that could be the
1113   result of using \pdfximage for an included pdf figure too early.
1115 * Full font embedding for wide otf and ttf fonts now really
1116   works (older versions only pretended that it did work).
1118 * node.dimensions() sometimes continued past the 'stop' node.
1120 * Images inside virtual fonts were broken.
1122 * The processing of \language=-1 was wrong, resulting in 
1123   hyphenation attempts even though there was no proper language
1124   set up.
1126 * Fix for finding files in --output-directory.
1128 * Fix for handling of --file-line-error.
1130 * tex.box[] assingments are now checked to make sure the assigned
1131   node has the right id (hlist or vlist).
1133 * show_node_list (as in \showbox) produced spurious local_par 
1134   whatsit prints in the output after direction nodes.
1136 * The handling of pdf literals has been sped up.
1138 ==============================================================
1139 Luatex beta-0.44.0 was released 20091027
1140 ==============================================================
1142 New features:
1144 * libpng is now 1.2.40.
1146 * hlist nodes now have a subtype to distinguish hlists generated
1147   by the paragraph breaking, explicit \hbox commands, and other
1148   (as-yet-undefined) sources.
1150 * \pdfobj now has an extra optional keyword: 'uncompressed',
1151   which forces the object to be written to the PDF in plain
1152   text (see the manual for the exact details).
1154 * The lua file from the luamd5 library (which provides the
1155   md5.hexsuma() function) is now embedded in the executable.
1157 Bug fixes:
1159 * \latelua now works in DVI mode again.
1161 * status.output_file_name could crash when used too soon.
1163 * In 0.43, rules were not output at all in DVI mode.
1165 * \leavevmode\penalty-10000\penalty-10000 crashed luatex.
1167 * the API of margin kern nodes to lua was using the wrong 
1168   fields in the nodes.
1170 * A few fixes to the manual.
1172 * PDF Xref stream dicts were slightly non-conformant.
1174 * There was too much space between two consecutive math displays
1175   (this bug was inherited from Aleph)
1177 * Synctex was broken (thanks, Akira)
1179 * Font mark classes were handled incorrectly by the fontloader
1180   code.
1182 * There was a crash possible with certain types of named PDF
1183   destinations.
1185 * Math delimiters and large operators in new MATH fonts no
1186   longer apply the italic correction (this fixes placements
1187   of super- and subscripts on such items for those fonts).
1189 * The converter from lua strings to token lists (for the node
1190   interface) sometimes generated invalid tokens.
1192 * CFF (OpenType) fonts now listen to 'embedding="full"'. TTF 
1193   is still todo.
1195 * Font tables with 'embedding="no"' would cause luatex to crash.
1197 * \pdfobj file {} failed to find the file if there was no lua
1198   callback in place.
1200 * An optimization in MS Mincho caused luatex to crash.
1202 ==============================================================
1203 Luatex beta-0.43.0 was released 20090819
1204 ==============================================================
1206 New features:
1208 * There is a new allowed key in the table trhat is returned 
1209   by lua-loaded fonts: <f>.psname. This value should be set
1210   to the original PostScript font name of the font. Fonts inside
1211   dfont and ttc collections are fetched using this field
1212   (if it is missing, <f>.fullname will be used instead).
1214 * It is now possible to use Apple dfont font files
1215   (those that contain at least one outline font).
1217 * \latelua is now allowed inside leaders.
1219 * There is a new callback: process_output_buffer, from Manuel
1220   Pégourié-Gonnard. This callback is called just before 
1221   \write acts, so it can be used to alter the file encoding
1222   of text output files.
1224 * There is a new node.dimensions() function, which calculates
1225   the natural size of (part of) a list of nodes.
1227 * The new primitive \gleaders provides 'globally aligned' 
1228   leaders.
1230 * The DVI and PDF backends now share much code internally.
1232 * The embedded MPlib is now 1.207.
1234 * libpng is now 1.2.39.
1236 Bugfixes:
1238 * We fixed lots of anonymous bugs introduced in 0.42.0 (as expected)
1240 * fontloader.info() errors are no longer fatal, the function now 
1241   just returns a nil,"error string" pair.
1243 * Automatically inserted kerns for \accents are now once again 
1244   valid word ends, as in \TEX.
1246 * Fixed the placement of math displays in mixed direction
1247   settings.
1249 * The \pdfcompresslevel is now dynamic again.
1251 ==============================================================
1252 Luatex beta-0.42.0 was released 20090717
1253 ==============================================================
1255 * There is a new node.tail() function
1257 * lua-loaded fonts now support a 'nomath' key to speed up 
1258   loading the lua table.
1260 * A bugfix in the ttf reader for the inclusion backend, and
1261   (also in the backend) support for treating ttc files by 
1262   pretending they are single ttf fonts (both patches from pdftex)
1264 * Add Khaled Hosny's man page to the repository
1266 * The \pdfcompresslevel is now effectively fixed as soon as
1267   output to the pdf file has occurred.
1269 * Patched status.filename so that it (nearly) always returns a 
1270   file name.
1272 * fix '\the\delcode' and disable '\the\odelcode', '\the\Udelcode',
1273   and '\the\Udelcodenum'  
1275 * Handle jfifs where either xres or yres is 0 and the other 
1276   res is != 0 (from pdftex)
1278 * The single-argument version of lang.hyphenate() was broken.
1280 * Get rid of the \directlua/\latelua number warning.
1282 * The Lua coroutine patch (coco) is now disabled on linux
1283   powerpc architectures (because it caused crashes)
1285 * Removed obsolete pdftex primitives: 
1286   \pdfoptionalwaysusepdfpagebox 
1287   \pdfoptionpdfinclusionerrorlevel 
1288   \pdfforcepagebox
1289   \pdfmovechars
1291 * The loading speed of large fonts (especially ttf) via the 
1292   fontloader library, and the inclusion speed for subsetting
1293   in the backend have both been improved.
1295 * The 'pdf' lua library has been enhanced with various new 
1296   functions, see the manual for details.
1298 * BLT and BRT glyph position fixed.
1300 * Various fixes for synctex offsets.
1302 * Support for exotic font string encodings has been removed 
1303   from the fontloader library.
1305 * The embedded MPlib is now 1.205.
1307 * libpng is now 1.2.38.
1309 ==============================================================
1310 Luatex beta-0.40.6 was released 20090625
1311 ==============================================================
1313 * Fix two string vs. toks bugs in the lua node interface:
1314   whatsit,annot and whatsit,startlink data assignments were
1315   made directly as strings instead of being converted to tokens.
1317 * Sometimes pdf.print() could be used before the proper structures
1318   were initialized.
1320 * There was a bug in the type codes for the lua package filter 
1321   callback: wrong extra info was passed to lua for the alignment 
1322   and vsplit cases. 
1324 * The math parameters \Umathlimitdownvgap, \Umathlimitdownbgap,
1325   and \Umathlimitdownkern have been renamed to \Umathlimitbelowbgap,
1326   \Umathlimitbelowvgap, and \Umathlimitbelowkern to be more 
1327   consistent with the other parameter names.
1329 * The embedded MPlib is now 1.204.
1331 * Handling of UTF-8 hyphenation exceptions has been fixed.
1333 * There were a number of typos in the manual.
1335 ==============================================================
1336 Luatex beta-0.40.5 was released 20090610
1337 ==============================================================
1339 * One of the internal print functions accidentally encoded its
1340   argument string to UTF-8 even though it was already UTF-8.
1342 * Some of the log and terminal UTF-8 output was gibberish.
1344 ==============================================================
1345 Luatex beta-0.40.4 was released 20090609
1346 ==============================================================
1348 * \the\textfont0 returned a number instead of doing a font 
1349   switch.
1351 * The embedded MPlib is now 1.203.
1353 ==============================================================
1354 Luatex beta-0.40.3 was released 20090608
1355 ==============================================================
1357 * A set of portability fixes for the AIX compiler from Vladimir
1358   Volovich.
1360 * A set of fixes to the synctex support.
1362 * A patch to the build script to prevent installed X11 headers 
1363   from being required.
1365 * Some weave (web syntax) fixes from Manuel Pégourié-Gonnard.
1367 * A simplification in luatex.ch (it is now less verbose
1368   about the web2c-specific extensions) from Karl Berry.
1370 * A fix in the handling of UTF-8 (input) file names.
1372 * Hyphenation exceptions were case sensitive in 0.40.2.
1374 * libpng is now 1.2.37.
1376 ==============================================================
1377 Luatex beta-0.40.2 was released 20090603
1378 ==============================================================
1380 * Fix for a compilation warning under Cygwin.
1382 * A complicated bugfix by Hartmut for a rounding problem in the
1383   VF loading that resulted in 'character width mismatch in font
1384   XY.vf ignored' messages at large load sizes 
1386 * The embedded MPlib is now 1.202.
1388 * The post_page_number callback was accidentally run when 
1389   shipping out xforms as well as during actual pages.
1391 * When a math accent char doesn't have a bot_accent placer, 
1392   luatex now uses the top_accent placer, if present.
1394 * A crash caused by \Uroot .. {<list>}{...} is fixed
1396 * A portability fix for solaris 8 sparc using sun studio 
1397   compiler, and one for glibc > 2.9.90
1399 * luatex -ini now sets the \catcode of the BOM character to
1400   ignore
1402 * Kpathsea is updated from TeXLive, giving four extra types of
1403   searchable files: 'font feature files','cid maps','mlbib',
1404   and 'mlbst'.
1406 * libpng is now 1.2.36
1408 ==============================================================
1409 Luatex beta-0.40.1 was released 20090508
1410 ==============================================================
1412 * Vertical placement of root radicals and degrees is fixed.
1414 * The use of \pageleftoffset could deviate from \hoffset
1415   if \mag != 1000.
1417 * LuaTeX now issues a warning if \pagedir !- \bodydir during
1418   shipout.
1420 * The previous crash in font.read_tfm() was still not quite
1421   correct.
1423 * The Web2C version is now also printed in the --version
1424   and --credits output.
1427 * There is a new MPlib 1.200 release candidate with a few minor 
1428   fixes included.
1430 * The xpdf library is updated to patch level 3.
1432 * New imports to the build system, from texlive. In particular,
1433   there is now configure-level support for building with 
1434   libpoppler and support for building under cygwin 1.7 is added.
1436 ==============================================================
1437 Luatex beta-0.40.0 was released 20090422
1438 ==============================================================
1440 * The embedded MPlib is updated to version 1.200.
1442 * Texlua would crash if run font.read_tfm() was used.
1444 * Luatex would crash on empty \patterns.
1446 * Lots of small C code cleanups.
1448 * \textdir inside a \hbox dir *** was wrong earlier.
1450 * 0.39.0 introduced a bug that would make luatex crash whenever
1451   font expansion was used.
1453 * Font tables returned by define_font can now have a key named
1454   'cache' that controls the internal lua font table caching.
1456 * There is no longer a need for an explicit --progname if there
1457   is no input file given.
1459 ==============================================================
1460 Luatex beta-0.39.0 was released 20090415
1461 ==============================================================
1463 * iniluatex will from now on start up with only the TeX82 primitives
1464   and \directlua, everything else has to be bootstrapped via 
1465   tex.enableprimitives(). This change was planned for 0.40.0,
1466   but *now* is the time to test it.
1467   
1468 * A bugfix for \primitive in various expandable contexts,
1469   and \primitive now generates an error message when the 
1470   argument is not actually a primitive's name.
1472 * There was a bug found in the math accent handling.
1474 * Large math operators are now treated like extensible characters
1475   in the sense that they can be composed of segments.
1477 * The extra assign- and restore tracing information from eTeX
1478   had a massive bug because of a dangling else in the pascal web.
1479   As a side-effect of fixing this bugs, all such potential errors
1480   in the pascal web have been fixed (for now).
1482 * The math parameters can now be set and queried from lua code
1483   via the new tex.setmath() and tex.getmath() functions.
1485 * Reflection in a \hbox was broken.
1487 * There was a leak of direction nodes in the paragraph builder.
1489 * The font backend now does a small peek to differentiate 
1490   truetype and postscript style opentype fonts. This fixes
1491   the "Can't find CFF table" bug for otf's with truetype outlines.
1493 * Parameters and registers can now also be assinged to globally
1494   from lua (see the manual for details).
1496 * It is now possible to query the current math style while a 
1497   formula is still being constructed by using the new read-only
1498   value \mathstyle. Associated is the new command \Ustack that
1499   is to be used as a prefix for {.. \over ..} and friends. 
1500   See the manual for more information.
1502 * The embedded MPLib is brought up to date with the current
1503   metapost repository (version 1.110 and a few small patches).
1504   
1505 * Luatex can now handle two breakpoints inside a single ligature
1506   (like for the functional word of-f-ice). The solution is not
1507   perfect yet, but the chance of missed hyphenation points in 
1508   actual documents should now be negligible.
1510 * Some speedups in the font loading code, and in the handling of 
1511   pdf_literal nodes that are set from within Lua code.
1513 * Some source code and manual cleanup, as usual.
1515 ==============================================================
1516 Luatex beta-0.38.0 was released 20090410
1517 ==============================================================
1519 * tex.enableprimitives() had a bug were previously defined (but
1520   currently undefined) control sequences prevented the creation 
1521   of the new csname.
1523 * The special calling format callback.register('name', false)
1524   not only disables the callback, but also the builtin code it 
1525   is supposed to replace. 
1527 * Empty \localleftbox and \localrightbox -es are now suppressed.
1529 * Support for <f>.MathConstants.SubscriptShiftDownWithSuperscript
1530   was added, to solve the lack of "sub2" in OpenType math.
1532 * Luatex now supports horizontal super- and subscript placement
1533   corrections via the OpenType MATH mathkern table. See the
1534   manual for details.
1536 * node.write() no longer copies its argument node list before 
1537   appending it.
1539 * There are six new primitives that are verbose forms 
1540   of one and two byte special tokens:
1541   \Usuperscript \Usubscript 
1542   \Ustartmath \Ustopmath 
1543   \Ustartdisplaymath \Ustopdisplaymath
1545 * The attribute node leaks in math mode and alignmetns have been 
1546   fixed.
1548 * The 11 simple math noads are now combined into a single "noad"
1549   node type.
1551 * Static linking against libstdc++ is working once again.
1553 * There is a small fix in the keyword scanner to solve the
1554   problem of 'Runaway ... while scanning ???' that could happen
1555   for some primitives.
1557 * Lua now also has the "architecture independent bytecode"
1558   patch applied.
1560 * Lua is updated to version 5.1.4 with coco patches 1.1.5, and 
1561   lpeg is now 0.9. 
1563 * Some TRT/TLT backend bugs are fixed.
1565 * Various manual updates.
1567 ==============================================================
1568 Luatex beta-0.37.0 was released 20090331
1569 ==============================================================
1571 * Luatex now implements shell_escape = 'p', a new feature
1572   in web2c that intends to make \write18 more secure. As 
1573   a side-effect, if luatex is used for typesetting, it will 
1574   now also apply shell_escape = 'p' and shell_escape = 'f'
1575   to the lua functions io.popen(), os.execute(), os.exec(), 
1576   and os.spawn().
1577   Nothing has changed for the case where luatex is used as 
1578   a script interpreter.
1580 * Attributes can now have negative values. The special value
1581   for 'unset' is lowered to -0x7FFFFFFF (it used to be -1).
1583 * The lua 'kpse' library now has an object-oriented interface 
1584   as companion to the procedural interface. This is useful for
1585   e.g. controlling the discovery of mplib files.
1587 * The new internal integer parameter \outputbox allows setting
1588   of the output box number (default: 255, max: 65535)
1590 * The new primitives \Udelimiterunder and \Udelimiterover 
1591   complete the set of 'StretchStacks' for OpenType Math.
1593 * Fixed a bug in font string conversions on the Macintosh that 
1594   resulted in warnings about 'unaligned pointers being freed'.
1596 * Khaled Hosny spotted a bunch of manual errors.
1598 * There was bug in the width of math_accent objects when 
1599   there were super- or subscripts attached to the accentee.
1601 * In PDF mode, TRT \leaders were bugged.
1603 * The source tree now uses the new texlive build system that 
1604   Peter Breitenlohner created. 
1606 * There is now a single build.sh instead of four separate
1607   ones. It has a few options:
1608       --make      : only make, no make distclean; configure
1609       --parallel  : make -j 2 -l 3.0
1610       --nostrip   : do not strip binary
1611       --mingw     : crosscompile for mingw32 from i386-linux
1612       --ppc       : crosscompile for ppc osx on intel osx
1614   Note: --parallel still sometimes causes crashes due to
1615   timing errors, so use that option with care.
1617 * Many compiler warnings have been removed (but not all yet).
1619 ==============================================================
1620 Luatex beta-0.36.0 was released 20090323
1621 ==============================================================
1623 * The included fontforge code is stripped considerably, and
1624   the lua table to access the code is renamed to 'fontloader'.
1625   The old name ('fontforge') will remain present for a while,
1626   but will eventually go away.
1628 * New lua functions: tex.primitives(), tex.extraprimitives, 
1629   tex.enableprimitives().  This is a prelude to a big change
1630   in the next beta: iniluatex will from now on start up with
1631   only the TeX82 primitives and \directlua, everything else
1632   has to be bootstrapped via tex.enableprimitives().
1633   See the manual for more details.
1635 * Support for multiple lua states has been removed, and at the
1636   same time support for adding name ids to lua chunks has been
1637   added.  See the manual for more details.
1639 * More changes to the PDF backend to make it support non-latin
1640   directions (form and image placement, vertical typesetting,
1641   synctex).
1643 * The kpathsea library is updated. Highlights: cleaner build 
1644   process (thanks to Peter Breitenlohner), cleaner mingw32 
1645   (cross)compilation support, and a new reentrant API.
1647 * Some possible endless loops within extended delimiters in
1648   math mode are now trapped.
1650 * Movements inside VF font characters were considerably off 
1651   due to a wrong conversion routine.
1653 * Error handling for \outer has been reinstated, but can be
1654   suppressed via the new primitive \suppressoutererror.
1656 * The new primitives: \suppresslongerror and \suppressifcsnameerror
1657   that can be used to suppress errors for \par in non-long macros 
1658   and for non-expandable objects inside \ifcsname ... \endcsname, 
1659   respectively.
1661 * New lua function: node.vpack() via a patch from Khaled Hosny
1662   that also improves error handling in node.hpack().
1664 * Fix the typo that caused \charic (instead of \charit)
1665   to be defined as a primitive.
1667 * Suppression of hyphenation via \hyphenchar\font=-1 now works
1668   again.
1670 * The lua functions tex.print(), tex.sprint(), tex.write() now
1671   accept an array of strings as well as vararg list of strings
1672   to print.
1674 * A change to be build process: luatex.p is no longer split 
1675   int smaller pieces before running the C compiler.
1677 * Melissa O'Neill contributed a bugfix to the Type1 font 
1678   subsetting code.
1680 * A bunch of smaller bugfixes and cleanups (as usual).
1682 ==============================================================
1683 Luatex beta-0.35.0 was released 20090224
1684 ==============================================================
1686 * The math handling portions of LuaTeX are converted to C code,
1687   and extended to support Unicode math. There are a great many
1688   related changes, see the new Math chapter in the manual for 
1689   details.
1691 * A nasty bug in the paragraph breaking routine was fixed.
1692   (All lines except the first one were believed to be wider then
1693   they really were. This affected which nodes were considered 
1694   as active breakpoints) 
1696 * Various changes to the PDF backend to make it support non-latin
1697   directions.
1699 * Fixed the behaviour of the page offsets. Placement of the output 
1700   on the physical page should now work correctly in all directions, 
1701   both in DVI and PDF.
1702   There now are \pageleftoffset and \pagetopoffset primitives,
1703   as well as 
1705 * fontforge.apply_featurefile() was broken since 0.31.0
1707 * The lua profiler library is added.
1709 * The included lua filesystem library is now 1.4.1.
1711 * Reading of pk files fixed.
1713 * An optional space afer a <direction specifier> for \textdir c.s.
1714   is ignored from  now on.
1716 * \bodydir and \pagedir can now be (re)set even after the first 
1717   page has been output.
1719 * The new callback mlist_to_hlist can be used to intercept the 
1720   normal conversion of math lists to horizontal lists.
1722 * The programs ttf2afm and pdftosrc are removed from the luatex
1723   distribution (these belong to pdftex).
1725 * fontforge.open() now uses much less memory when opening large
1726   (CJK) fonts.
1728 * The included libpng is now 1.2.35.
1730 * Quite a lot of smaller bugfixes and cleanups (as usual).
1733 ==============================================================
1734 Luatex beta-0.31.3 was released 20081229
1735 ==============================================================
1737 This release has a bunch of updates from the development trunk
1738 (#1657-1670,1677,1678,1680,1685,1687).
1740   * Closing of files opened by \externalocp.
1742   * Fix for a locale-related bug that make PDF generation fail
1743     with a "Parsing CFF Dict failed" message when including 
1744     opentype fonts.
1746   * The included metapost is now version 1.102.
1748   * PDF rules in vertical modes in RL direction where output
1749     in the wrong direction
1751   * Fix for a crash on Apple fonts that contain a 'bsln' table.
1753   * The handling of the second argument to fontforge.open() was
1754     broken
1756   * The included libpng is now 1.2.34
1758   * Handling of ttc files on Windows was broken
1761 ==============================================================
1762 Luatex beta-0.31.2 was released 20081209
1763 ==============================================================
1765 Besides fixing building issues, this release has
1767   * A small fix for a crash that could happen when using
1768     external OCPs.
1770   * A fix in the format of fontforge.to_table output.
1771     (In 0.31.1 <font>.lookups was near-empty; the lookups
1772     were accidentally output as part of the gpos table).
1774 ==============================================================
1775 Luatex beta-0.31.1 was released 20081209
1776 ==============================================================
1778 fixed a bunch of compilation errors on various platforms, but 
1779 with no other visible changes.
1782 ==============================================================
1783 Luatex beta-0.31.0 was released 20081205
1784 ==============================================================
1786 This is just an intermediate release so that some testing can be
1787 done on the updated fontforge embedding.
1789 * There are new fields being generated by fontforge.to_table(),
1790   and one or two old ones have been removed. These fields are /
1791   will be documented in the manual, but very briefly:
1793   - MATH table and associated information are now exported
1794     (the main reason for the new fontforge code)
1795   - Baseline data is now exported
1796     (perhaps usable in lua code)
1797   - Multiple Master / Glyph variation data is now exported
1798     (but useless, for now)
1799   - Mac Feature (AAT) information is now exported
1800     (perhaps usable in lua code)
1801   - If (lookup) names were saved via the PfED table, these
1802     will the exported instead of the default, generated names.
1803     (as requested by Yannis)
1805 * dfont is now treated as an archive format just like ttc
1806   when it comes to fontforge.info(). NOTE: that does not mean you
1807   can actually use them, because the  backend doesn't know
1808   yet how to embed dfont fonts in the PDF, that is on the
1809   TODO list for the next big beta (0.40.0).
1811 * The executables are a lot larger than before. That is because
1812   much more of fontforge is included than before. Likely this
1813   will stay this way, because this makes upgrading the ff code
1814   much easier, and it means that luatex/FF potentially
1815   understands more font formats (after upgrading the backend,
1816   of course)
1819 ==============================================================
1820 Luatex beta-0.30.3 was released 20081128
1821 ==============================================================
1823 This release fixes a really big bug, a few smaller ones,
1824 and has updates of png and mplib:
1826 * All hyphenation patterns that were anchored at the start or
1827   end of a word were ignored in luatex versions 0.25.X and 0.30.X
1828   (and possibly even earlier).
1830 * Repeated use of \language=-1 could result in "There is not room
1831   for another language".
1833 * The lua true coroutines patch (Coco) is now disabled on OpenBSD
1834   running on non-intel platforms.
1836 * The lua socket library is patched so that it will now compile on
1837   OpenSolaris.
1839 * Luatex now has libpng 1.2.33 and mplib 1.100
1841 ==============================================================
1842 Luatex beta-0.30.2 was released 20081020
1843 ==============================================================
1845 * The Lua coco change from 0.30.1 is reverted as it gave
1846   trouble on MacOSX. Lua coco on non-intel OpenBSD platforms
1847   is now explicitly turned off.
1849 * The lua file reading speedup in 0.30.1 broke reading of
1850   files larger than 100MB.
1852 * Reading of font-related files was broken when there was a find
1853   callback, but no read callback.
1855 * The texmf.cnf array size setup values were ignored whenever
1856   --lua was given on the commandline (instead of only when
1857   texconfig.kpse_init is set to false).
1859 * glyphs with negative widths resulted in incorrect horizontal
1860   placement (overlapping) of the string in the output PDF.
1862 * Using \latelua could sometimes result in an invalid output PDF,
1863   and the argument token list was expanded too early
1865 * There was a read buffer overrun in the mapfile parser
1867 * There are two new variables in the status table:
1868   status.callbacks and status.indirect_callbacks (execution counts).
1870 ==============================================================
1871 Luatex beta-0.30.1 was released 20081009
1872 ==============================================================
1874 * Invalid return values from the linebreak_filter callback
1875   are now handled gracefully (was crashing)
1876 * a preinstalled ctangle is no longer needed except when
1877   cross-compiling
1878 * In 0.30.0, the .notdef fix was incorrectly applied to
1879   truetype / opentype fonts.
1880 * A bunch of all memory leaks is fixed
1881 * In lua, f:read('*a') now uses signicantly less memory
1882 * The number of \catcodetables is now limited to 64KB
1883   (for speed reasons)
1884 * Luatex could crash if there were PDF images with and
1885   without page /Group included on the same page
1886 * Lua coco now always uses setjmp (for OpenBSD compatibility)
1887 * The embedded mplib is updated to the latest svn version
1888 * # marks (characters with catcode 6) are no longer doubled
1889   inside \directlua
1890 * Handling the nul character (U+0000) with catcode 13
1891   (active) was broken
1892 * Luatex could crash on win32 with an access violation
1893   because there was one predefined language too few
1894   (the one matching \language=-1) 
1896 ==============================================================
1897 Luatex beta-0.30.0 was released 20080930
1898 ==============================================================
1900 New features:
1902 * Readable \tex internal params that are counts, attrs, or dimens are
1903   now returned as numbers instead of strings, and skips as node objects.
1904   Read-write access to tex's skip registers added: tex.skip[0] etc.
1905 * new callback: 'linebreak_callback' to replace the internal paragraph
1906   breaking code
1907 * the tex table now supports more readable 'convert' values:
1908   tex.fontname, tex.pdffontname, tex.pdffontobjnum, tex.pdffontsize,
1909   tex.uniformdeviate, tex.number, tex.romannumeral, tex.pdfpageref,
1910   tex.pdfxformname  (each takes a number as argument)
1911 * new readable parameter: tex.fontidentifier(number) returns the
1912   \csname associated with that font id
1913 * luatex now outputs \FONT<nr> instead of \^^@ in Overfull/Underfull
1914   messages if the font's id text is zero (like for expanded fonts) (#77)
1915  * luatex --version is split into --version and --credits
1916 * There is now (again) an svn revision number in luatex --version (#91)
1917 * Add support for more read-only internal access from lua:
1918   tex.lastpenalty, tex.lastkern, tex.lastskip, tex.lastnodetype,
1919   tex.inputlineno, tex.badness, tex.pdftexversion, tex.pdflastobj,
1920   tex.pdflastxform, tex.pdflastximage, tex.pdflastximagepages,
1921   tex.pdflastannot, tex.pdflastxpos, tex.pdflastypos, tex.pdfrandomseed,
1922   tex.pdflastlink, tex.luatexversion, tex.Alephversion,
1923   tex.Omegaversion, tex.Alephminorversion, tex.Omegaminorversion,
1924   tex.eTeXminorversion, tex.eTeXversion, tex.currentgrouplevel,
1925   tex.currentgrouptype, tex.currentiflevel, tex.currentiftype,
1926   tex.currentifbranch, tex.pdflastximagecolordepth (#81)
1927 * the old --src-specials are replaced by --synctex (#63)
1928 * the \expanded primitive is backported from pdftex 1.50 (#43)
1929 * luatex now comes with libpng 1.2.32
1930 * experimental: tex.definefont(string, number) associates a
1931   csname string with a font id number
1933 Bugs fixed compared to 0.29.0:
1935 * dashes were exported wrongly by MPlib
1936 * multi-item \discretionaries were broken in various ways (#78, mailinglist)
1937 * read_font_info was sometimes called recursively from lua-loaded
1938   virtual fonts
1939 * do_vf was sometimes called on lua-loaded fonts that where
1940   already known to be virtual
1941 * trailing junk in tfm files is now ignored (needed for ecrm fonts)
1942 * pdf_ignored_dimen was initialized too late, breaking \prevdepth
1943   handling and causing output lines to overlap eachother (#72)
1944 * pdf.immediateobj() had a printf-related bug
1945 * the fontname terminal logging is fixed for strange font file names
1946 * lua tex array assignments now listen to the globaldefs setting
1947   (tex.count[0] etc) (#92,partial)
1948 * \parshape was broken (#70)
1949 * there is no longer a ".tex" extension forced on very input file (#74)
1950 * eof() for mapfiles was true one byte too soon (#76)
1951 * out of range \lefthyphenmin and \righthyphenmin settings now actually
1952   disable hyphenation (#90)
1953 * tex.unset_attribute() looked too far ahead when a to-be-unset
1954   attribute id not only did not exist in the node, but was also
1955   higher than the highest set attribute on the node. (#65)
1956 * the parameters attr and page_name of read_image() were swapped
1957   (this broke \pdfimage with attributes)
1958 * tex filenames with spaces in them on the command line are now
1959   allowed again (#30)
1960 * sometimes pfb fonts were included multiple times without valid
1961   reason (#29)
1962 * some parts of the pdftex 1.40.9 PNG transparancy hack were still
1963   present and caused transparant png handling to fail
1964 * \localinterlinepenalty and \localbrokenpenalty were broken
1965 * special case catcode tables are now handled better (#23)
1966 * the handling of missing .notdef charstrings in old pfb fonts
1967   is fixed (#27)
1969 ==============================================================
1970 Luatex beta-0.29.0 was released 20080718
1971 ==============================================================
1974 New features:
1976 * The embedded pdftex is now 1.40.9 (forthcoming) except for the
1977    following:
1978    - the png transparancy fix is skipped because it is in conflict
1979      with a macro-based solution offered by context mkiv.
1980    - LFS (PDF files > 2GiB) is not working yet.
1981    - Synctex is still missing
1983 * libpng, xpdf, and zlib are updated to their pdftex 1.0.9 levels
1985 * MPlib is updated to 1.090
1987 * The syntax of buildpage_filter is changed to avoid confusion
1988    (and crashes). See the manual for the new calling convention.
1990 Bugs fixed compared to 0.28.0:
1992 * The previous bugfix for \languages skipping numbers was wrong.
1994 * Various compile-time warnings are suppressed
1996 * \pdfsetmatrix was broken
1998 * \pdfsave and \pdfrestore were broken
2000 * Valid user_defined whatsits nevertheless were generating errors.
2003 ==============================================================
2004 Luatex beta-0.28.0 was released 20080630
2005 ==============================================================
2007 There is one new feature:
2009 There is now experimental support for non-trivial discretionaries
2010 following explicit hyphens. In analogy to \prehyphenchar and
2011 \posthyphenchar, there are two new parameters \preexhyphenchar en
2012 \postexhyphenchar. Both new parameters default to zero (nothing).
2013 When set to a nonzero value, the parameter is added to either the
2014 pre- or post- break text. Note that this is *in addition to* the
2015 hyphen already in the input. Testing and comments are very welcome.
2017 Here is a short example (no idea what is says):
2019    \pdfoutput=1
2020    \hsize=2in
2021    \postexhyphenchar=`-
2022    Seria bom se eu
2023    pudesse t\^e-lo mantido como amigo, mas por
2024    mais bem-intencionado que eu fosse, n\~ao
2025    foi possivel
2026    \bye
2030 Bugs fixed compared to 0.27.0:
2032 * Words that started off with a character with a zero \lccode
2033    were never hyphenated at all.
2035 * There was a bug in the new active characters code that prevented
2036    the latex format from being built (with Invalid character error).
2038 * There is a temporary fix for the sometimes appearing "Font has a
2039    bad FontBB" message from Acrobat.
2041 * \leaders did not actually stretch enough (the last bit of glue
2042    that has to line up the line endings was never output to the PDF).
2044 * Bad paragraph-related callbacks could result in luatex crashing.
2046 * The pre_linebreak and post_linebreak filters were never called
2047    when \output was active (this was a leftover of a superceded
2048    optimization).
2050 * 'skipping' language codes when setting up \patterns c.s. did not
2051    work (it used the next empty slot instead of the actual value of
2052    \language).
2054 * Using multiple 'attr' keywords on box items could cause random
2055    crashes.
2057 * Calling lang.hyphenate() with one argument (without specifying a
2058     tail node) could crash.
2060 * The luatex pdf banner and version reporting is cleaned up a bit.
2062 * Conflicting patterns inside \patterns now give an error:
2063      ! Conflicting pattern ignored.
2064    (duplicate identical patterns are ignored without error).
2066 ==============================================================
2067 Luatex beta-0.27.0 was released 20080624
2068 ==============================================================
2070 Bugs fixed compared to 0.25.3:
2072 * Unicode reencoding support for non-standard (i.e. older)
2073    Type1 fonts is now somewhat less broken than it was (#25)
2075 * .vf fonts using specials crashed luatex
2077 * luatex would crash on --\par (#33)
2079 * An attempt is made to get a sane default value for StemV in
2080    the created pdf (#32)
2082 * We can now guarantee that %PDF-1.* header is printed before
2083    the first pdf.print() output
2085 * lang.hyphenate() was broken
2087 * insert_before(a,a,b) was broken (#37)
2089 * argv[0] is now cleaned up before being used as a default for
2090    mem_name and prog_name (#28).
2092 * luatex would crash on loading extended fonts (fonts loaded
2093    via lua callbacks) from a format file.
2095 * The fix for pdftex bug #799 is backported from pdftex 1.40.4.
2097 * slnunicode had a bug in the unicode.utf8.gmatch iterator.
2099 * Queries of nonexisting fontdimens could cause a crash.
2101 * luatex would crash on {\textdir TLT\pardir TLT x\break\par }
2103 * Fixed wrong placement of lines in mixed-direction paragraphs
2104    that could happen in some situations.
2106 Other news:
2107 * Luatex now includes luasocket (#35)
2108    See http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/
2109    for usage.
2110    There is a new commandline option: --nosocket to disable this,
2111    and that is also implied by --safer.
2113    NOTE to the binary builders: there are some unfixed configure
2114    problems when you need to add a specific library to get socket
2115    support on your platform. You probably will have to edit the
2116    generated Makefile by hand (search for 'socketlib').
2118 * There is ongoing development to the 'img' and 'mplib' libraries.
2119    See the reference manual for details.
2121 * The 'character commands' in virtual fonts now support image
2122    inclusion. See the reference manual for details.
2124 * Lua error messages now include the call stack.
2126 * \directlua and \latelua have been extended to accept a 'name'
2127    keyword. The argument is a token list that is used as the lua
2128    name of this chunk in lua error messages and call stack prints.
2129    (#42)
2131 * The lua chunk names can be interfaced via a new virtual
2132    table called lua.instancename, the values in that function as
2133    defaults in the absence of 'name' keywords.
2135 * The 2-plane limit on active character range is removed (#12).
2137 * Subsetted TTF fonts in the PDF now retain the cmap table.
2139 * There is a new Lua variable os.selfdir. This contains the
2140    full absolute pathname of the directory that the executable
2141    resides in (with symlinks resolved)
2143 * There is a new function os.uname() this returns a lua
2144    table containing various platform information items.
2146 * The node library now uses text strings for direction specifiers
2147    instead of numbers. See the reference manual for details.
2149 * The 'E' (edit) as error response functionality is now a noop.
2151 * Adding luatex 0.25.3 to texlive resulted in a few minor backports,
2152    in particular: Support for mktexfmt is added, and luatangle now
2153    identifies itself as such (instead of calling itself otangle).
2155 * We fixed a whole series of portability problems (but
2156    we probably introduced new problems as well).
2158 * Most (all?) files now have a corrected Copyright header,
2159    and link in $Id$ and  $URL$ into the object file.
2161 * Some unnecessary files were removed from the distribution.
2163 ==============================================================
2164 Luatex beta-0.25.3 was released 20080418
2165 ==============================================================
2167 Bugs fixed:
2168 * Pdftex bug no. 936 (sarovar) regarding vertical
2169   positioning of embedded PDF files if depth parameter is given.
2170 * Luatex gave bogus lua return values for the tex.wd/hd/dp
2171   values of void boxes
2172 * A few bugfixes in mplib (square pens caused hangs, elliptical
2173   pens caused confused output)
2174 * Hyphenation of uppercase words (\uchyph) was broken
2175 * Output image placements corrected for all 8 transform cases
2176   also when artbox etc. is used
2177 * There were missing maketexstring() calls in error messages
2178 * Math display contents were sometimes prematurely freed during
2179   the placement of the equation number
2180 * Setting \language=-1 could cause crashes due to an array
2181   index going out-of-bounds
2183 Other news:
2184 * build.sh.ppc is added to the source distribution. This is a
2185   script that crosscompiles osx ppc binaries from osx intel
2186 * tex.box[<chardef name>] is now supported (but still experimental)
2187 * a bunch of compiler warnings are removed
2188 * The fontforge library now dump AAT feature tags as and
2189   "<id,flags>" string
2190 * The new function font.nextid() predicts the next assigned font id
2191 * Some source code changes are backported from texlive 
2193 ==============================================================
2194 Luatex beta-0.25.2 was released 20080410
2195 ==============================================================
2197 * Updated to MPlib 0.40
2198 * Bugfixes and cleanup in the lua img table code
2199 * Fix \pdflastximagepages bug from pdftex
2200 * Fix for very large tex.print strings
2201 * Update to Lpeg 0.8.1
2202 * &D Bugfix for Type1 fonts when out-of-range characters
2203   are marked as 'used'
2205 ==============================================================
2206 Luatex beta-0.25.1 was released 20080321
2207 ==============================================================
2209 * Updated to MPlib 0.30 (that is now becoming usable)
2210 * The build requirement for a pre-installed ctangle is gone
2211   (thanks to Martin)
2213 ==============================================================
2214 Luatex beta-0.25.0 was released 20080311
2215 ==============================================================
2217 New:
2219 * mplib library:
2220    This version features an embedded MP interpreter whose output
2221    can be directly accessed from lua code (mplib), without calls
2222    to an external "mpost" command. Of course it has bugs and
2223    limitations (makempx does not work, for example) but keep in
2224    mind that it is only an initial attempt.
2225    See the manual for more details.
2226 * img library:
2227    ** img.immediatewrite() is added
2228    ** images now accept a 'transform' key
2229    ** widths etc. can now be given as width="100mm"
2231 Fixed:
2233 * \parshape handling was completely broken since 0.20.0+
2234 * when \pdfprotrudechars was in effect, an assertion failure
2235    could happen when embedded \hboxes in the paragraph appeared
2236    at the end of a line.
2237 * import of otf fonts with contextual lookups has been debugged,
2238    thanks to a patch by GW himself.
2239 * compiling with gcc 4.2.3 is now supported
2240 * if you want to build from source, you need a pre-installed ctangle.
2243 ==============================================================
2244 Luatex beta-0.22.1 was released 20080227
2245 ==============================================================
2247 * The macnames.c source file for building ttf2afm is restored.
2248 * "make depend" in luatexdir now works again
2249 * luatex sometimes crashed because it attempted to expand an
2250   already expanded font
2251 * luatex aborted when --progname was given but no format name.
2252   It now sets the format name to the given progname in that case
2253 * sometimes paragraphs with near-empty lines could cause a crash
2254 * img.supportedtypes() had a bug causing it to crash
2255 * img.supportedtypes() has been renamed to img.types for consistency
2256 * img.boxes() added, returns strings representing bounding boxes
2257 * img.node() added, returns a whatsit node cf. \pdfrefximage
2258 * node.write() now accepts multiple arguments
2259 * the program_name_set switch was not set automatically from C,
2260   causing errors unless lua code called kpse.set_program_name()
2261   explicitly
2262 * kpse.set_program_name() can now be called more than once
2263   in a single run.
2264 * os.spawn{...} and os.exec{...} could cause crashes because of
2265   a memory allocation error
2267 ==============================================================
2268 Luatex beta-0.22.0 was released 20080215
2269 ==============================================================
2271 * We now have an official bug tracker: http://tracker.luatex.org
2272 * A new lua library (img) is added that allows a direct
2273    interface to the image handling of luatex. You can use this
2274    to include images from lua code instead of via the more
2275    traditional \pdfximage cs. See the manual.
2276 * An optional equal sign after \{pre,post}hyphenchar is now
2277    allowed.
2278 * os.exec() has been extended, and os.spawn() added. These
2279    functions have support for quoted strings, and they
2280    also accept a table with preseparated command arguments.
2281 * New string constants os.type and os.name are provided.
2282 * node.last_node() is added. This pops and returns the last
2283    node from luatex's 'current list'
2284 * node.write() is added. This appends a node to the end of
2285    luatex's 'current list' (experimental).
2286 * The strict check on unicode compliance in pattern files
2287    is dropped. Patterns files still have to be in proper UTF-8
2288    encoding, but the error for non-Unicode character values
2289    (like 0 - 31 and 127 - 159) is dropped.
2290 * \pdfadjustinterwordglue, \prependkern, \appendkern
2291    and associated \XXXXcode arrays are gone.
2292 * The rest of the pdftex font arrays are now merged into
2293    the new luatex font data structure. This means that you
2294    can now set up font expansion from lua code, and that a few
2295    font-related limits are gone.
2296 * The 'top_skip' field in 'insert' nodes is renamed to 'spec',
2297    for improved consistency.
2298 * kpse.show_path() added. This behaves just like
2299    $ kpsewhich --show-path
2300 * The unicode.utf8 functions now also accept values in the range
2301    1.114.112 - 1.114.367 that is used by LUATEX for raw byte output.
2303 What's been fixed:
2305 * Better node memory (de)allocation error tracking and messages
2306 * Compilation on MacOSX 10.5 was broken
2307 * There was a bug in node.insert_after
2308 * Use of \{pre,post}hyphenchar was broken
2309 * lfs.permissions was leaking memory
2310 * Some warning and error messages are improved a bit
2311 * A set of bugs in character protrusion, this seems to be working
2312    ok now.
2313 * Also, a set of bugs in font expansion. This now works in most
2314    cases but is not quite bugfree yet (problematic files for testing
2315    are welcomed).
2316 * The functions in the kpse library would crash luatex if
2317    kpse.set_program_name() was not yet called. gives an error now.
2318 * Alignments with spanned columns could cause crashes
2319 * A patch is added for problems with filename parsing on the
2320    "first input line" (by Jonathan Kew)
2321 * The hpack_filter and vpack_filter were only called for lists longer
2322    than one node.
2323 * Luatex is now more forgiving about font subsets being smaller
2324    than their expected size (issues a warning instead of aborts now)
2325 * A "double-free ignored" error for paragraphs with lines starting
2326    with discarded items was fixed.
2328 ==============================================================
2329 Luatex beta-0.20.2 was released 20071217
2330 ==============================================================
2332 * some portability fixes to the build scripts
2333 * a fix for multi-\span in alignments causing unbreakable
2334    loops
2335 * manual improvements from Jonathan Sauer
2336 * fix for undefined csnames in \directlua if
2337    web2c's hash_extra is nonzero
2338 * fix for LR text inside of a RL document
2339 * fix for open_read_file callback not being called
2340    unless find_read_file was also registered
2341 * removed the ocp status message when \ocps are not
2342    actually used
2343 * "unicodeenc" in the fontforge to_table renamed to
2344    "unicode" for improved consistency
2346 ==============================================================
2347 Luatex beta-0.20.1 was released 20071207
2348 ==============================================================
2350 * texlua was broken on Solaris because the some C header
2351    files were loaded in the wrong order.
2352 * os.tmpdir() now accepts an argument, making it easier
2353    to use. It now generates more unique filenames when
2354    it is called repeatedly in one run.
2355 * The --luaconly commandline switch is now documented
2356    in the --help text.
2357 * The new extended hyphenation exceptions were severely
2358    broken.
2359 * \pdfprotrudechars could cause luatex to abort with an
2360    assertion failure.
2361 * There was a bug in the  \span code that could cause endless
2362    loops.
2363 * The simple forms of \leaders were messed up on windows
2364    because a variable was not properly initialized.
2365 * Non-grouped \textdir commands created invalid output.
2366 * e-TeX's pseudo files were not closed properly in ini mode.
2367 * The luatex.web now weaves properly again.
2368 * I made some small improvements to the manual.
2370 ==============================================================
2371 Luatex beta-0.20.0 was released 20071205
2372 ==============================================================
2374 News compared to the last beta (0.11.2) is as follows:
2376 * Completely overhauled hyphenation and ligkern application,
2377   including the addition of a new "lang" table in lua to
2378   interface to the language parameters, some extra functions
2379   in the "node" table, and a few extra callbacks ("hyphenate",
2380   "ligaturing", "kerning", "post_linebreak_filter").
2382   There is a new chapter in the manual to document all the
2383   changes to the hyphenation and line breaking algorithms,
2384   it is simply too much to list here.
2386 * the interface of the pre_linebreak_filter,hpack_filter,
2387   vpack_filter, and pre_output_filter has changed slightly.
2389 * boxes can now get explicit attributes different from the
2390   currently active set, using a syntax like
2392   \hbox attr2=12 attr3=-1 to 12pt {Hi!}
2394 * lpeg is now at version 0.7
2396 * a whole series of exotic bugs and compiler warnings are
2397   fixed, mostly thanks to the watchful eye of Fabrice.
2399 * texio.print now accepts multiple strings as arguments.
2401 * the lua functions os.sleep(), os.times(), os.gettimeofday()
2402   and os.tmpdir() have been added.
2404 * lua now comes with the coroutine (coco) patches from the
2405   luajit project applied.
2407 * the banner line no longer claims to be TeX.
2409 * a bunch of bugs reported on the mailing list have been
2410   fixed (I hope all of them).
2412 * (internal) we found lots of small ways to speed up lua
2413   node processing.
2415 * (internal) the node (de)allocation functions have been
2416   rewritten, so that absolutely all nodes now have a type,
2417   even the ones with variable sizes. 
2420 ==============================================================
2421 Luatex snapshot-20071029 was released 20071029
2422 ==============================================================
2424 * Completely overhauled hyphenation and ligkern application.
2426   There is a new chapter in the manual to document all the
2427   changes to the hyphenation and line breaking algorithms,
2428   it is simply too much to list here.
2430 * the interface of the pre_linebreak_filter,hpack_filter,
2431   vpack_filter, and pre_output_filter has changed slightly.
2433 * lpeg is now at version 0.7
2435 * a whole series of exotic bugs and compiler warnings are
2436   fixed thanks to the watchful eye of Fabrice.
2438 * texio.print now accepts multiple strings as arguments.
2440 * The lua function os.sleep() is added 
2442 ==============================================================
2443 Luatex beta-0.11.2 was released 20070918
2444 ==============================================================
2446 * Pdf inclusion and subsetting of CID-based opentype fonts
2447   now works as it should.
2449 ==============================================================
2450 Luatex beta-0.11.1 was released 20070918
2451 ==============================================================
2453 A quick list of what is new and fixed since beta 0.10.2:
2455 New:
2456 * pfb+afm fonts can now be used in 'wide' (encodingbytes=2) mode
2457 * searching in PDFS using 'wide' fonts now works reasonably well
2458   (based on the tounicode feature)
2459 * related to that, tounicode information can now be passed
2460   on inside the font metrics table
2461 * font subsetting is now supported for CID-based OpenType fonts
2462   (however, there is a known bug with KpozMinProVI-Regular.otf)
2463 * fontforge's warning and error messages are now intercepted
2464   and passed on to the lua code as a second return value of
2465   the fontforge.open() function
2466 * the new primitive \suppressfontnotfounderror can suppress
2467   the TeX error for "Font not found"
2468 * The lua function font.current can now be used to set TeX's
2469   current font
2471 Fixes:
2472 * set_attribute(-1) is now the same as unset_attribute()
2473 * OpenType lookups with glyph classes would crash luatex
2474 * luazlib would not compile on debian (fix from Norbert)
2475 * CID-based fonts would crash luatex
2476 * Bare CFF should be read in binary mode (fix from Akira)
2477 * VF processing did not process packets containing zero bytes properly
2478 * the truetype collection (.ttc) handling is fixed, so that all
2479   of the fonts inside a collection can now be used reliably
2480 * application segfaults and stack overflows are intercepted
2481   so that luatex can quit a bit more gracefully
2482 * an assertion failuer on systems with signed chars (linux-powerpc)
2483   is fixed
2484 * a crash on AMD64 linux was fixed
2485 * the lua "pdf" table code was wrong
2486 * \ifcsname did not work properly for UTF-8 characters
2487 * Use of the math-related functions using make_fraction (like \atop)
2488   caused a crash
2489 * \handling of \if\noexpand was wrong
2490 * applied a patch that cleans up XForm and page calculations
2491 * "autoconf" support from zziplib is stripped 
2493 ==============================================================
2494 Luatex beta-0.10.2 was released 20070814
2495 ==============================================================
2497 Bugs fixed:
2499 * the primitive \span was completely broken
2500 * \pdfexpandfont (font expansion) misbehaved if it was used more
2501    than once
2502 * virtual fonts: sometimes they used the wrong internal font id,
2503    loading vf fonts via fonts.read_vf() was impossible, and sometimes
2504    virtual fonts created segfaults
2505 * while dumping formats, the last font parameter for each font was not
2506    dumped at all
2507 * zziplib was always compiled with pre-installed zlib headers, instead
2508    of the ones in the build tree
2509 * lua 5.1.2 has trouble quoting ^Z characters etc, the tentative patch
2510    for lua 5.2 from Luiz fixes that, hopefully
2511 * fontforge.font('font.pfb') now properly parses AFM boundingboxes
2512 * non-existing files in the argument for fontforge.open() or
2513    fontforge.info() could cause segfaults, now it generates an error
2514    instead
2515 * fontforge.open() did not return character widths for vertical fonts
2516    as it should
2517 * on Windows, fontforge believed that ttc files (TrueType Collections)
2518    were actually directories. ttc processing is still not 100% correct,
2519    but it is getting better
2520 * the build system used explicit 'make' sometimes
2521 * the auto-growing string pool was not used everywhere
2522 * there were some typos in the documentation parts of the pascal web
2523 * use of \parshape could easily exhaust all available memory
2526 New features:
2528 * support for applying Adobe Feature files (.fea) and Adobe Font
2529    Metrics (.afm) is added to the fontforge library
2530 * fontforge.info() will now return an array of tables for the contents
2531    for ttc files
2532 * support for a 'texluac' personality was added, to replace the 'luac'
2533    command from the official Lua distribution
2535 ==============================================================
2536 Luatex beta-0.10.1 was released 20070719
2537 ==============================================================
2539 This was a hotfix because beta-0.10.0 was completely broken.
2541 ==============================================================
2542 Luatex beta-0.10.0 was released 20070718
2543 ==============================================================
2545 The latest version of the manual is included in the package, and I
2546 am not going to repeat all of that. There were some minor changes
2547 compared to the previous snapshot, but mostly just bugfixes and
2548 documentation improvements.
2550 ==============================================================
2551 Luatex snapshot-20070626 was released 20070626
2552 ==============================================================
2554 * Integrated the lua library lzlib, this defines tables with
2555    bindings for zlib (including eazy-to-use gzip support)
2556 * Updated to slnunicode version 1.1
2557 * Some small cleanups in the sparse array handling
2558 * Moved the raw byte support out of the valid unicode range
2559 * Fixed a bug in the OFM font reader
2560 * Removed the pdftex snap nodes (and associated primitives)
2563 ==============================================================
2564 Luatex snapshot-20070622 was released 20070622
2565 ==============================================================
2567 Not a lot of news, but it fixes a few important bugs in the lua 
2568 node processing. Also a few utility functions are added:
2570 * tex.round()
2571    rounds and bounds checks a lua number to make sure it is
2572    a valid tex integer.
2573 * tex.scale()
2574    multiplies a number (or the numeric values in a table)
2575    with a fixed quantity, and calls tex.round() on the result.
2576 * node.has_field()
2577    Test if a node has a specified field name
2578 * node.remove()
2579    removes a node from a nodelist, while keeping the list intact
2580 * node.insert_before()
2581    inserts a new node into a nodelist, just before a specified
2582    location node
2583 * node.insert_before()
2584    inserts a new node into a nodelist, just after a specified
2585    location node
2586 * node.hpack()
2587    packages a nodelist into a hlist node
2590 ==============================================================
2591 Luatex snapshot-20070619 was released 20070619
2592 ==============================================================
2594 * The lua node processing interface is completely reworked.
2595    It is now completely based on userdata, and uses a new lua table
2596    called 'node' to hold the methods. More detailed information
2597    is in the manual (of course).
2599 * There is a fifth node processing callback:
2600       pre_output_filter
2601    this is executed just before the packaging of \box 255.
2603 * The hpack_filter and pre_linebreak_filter callbacks now
2604    receive an extra argument indicating the number of top-level
2605    glyphs in the node list.
2607 * Virtual fonts can now contain a 'node' key in the glyph
2608    commands: the value should be a hlist node (i.e.: a horizontal
2609    box), and that will then be output for each character access
2610    in that font.
2612 * A new set of registers is added, called \attribute. These are
2613    values that will be automatically attached to nodes created in
2614    their scope. More information in the manual.
2616 * Direct read/write access to TeX's box registers is addded to
2617    the lua 'tex' table.
2619 * TeX's main memory now grows dynamically, and the (de)allocation
2620    routines have been rewritten completely.
2622 * The 'kpse' table is extended with extra interface functions, to
2623    allow texlua to be used as a scripting engine.
2625 * The \pdftexversion command now returns 200, not 140.
2627 * The displayed banner and --version screens are cleaned up.
2629 * The format file is now RLE compressed. Not as small as before,
2630    but unpacking is much faster.
2633 ==============================================================
2634 Luatex snapshot-20070426 was released 20070426
2635 ==============================================================
2637 This past month I have been busy with nodes and lists of nodes,
2638 so the big new feature in this release is that there are four
2639 callbacks that operate on node lists:
2641   buildpage_filter
2642   pre_linebreak_filter
2643   hpack_filter
2644   vpack_filter
2646 The preliminary documentation for these is in the manual, but the basic
2647 idea is that you can filter a node list just before LuaTeX starts doing
2648 something with it (like line breaking). This functionality is not stable
2649 yet: the node presentation of the various node types is pretty much OK
2650 now, but keep in mind the following:
2652   * math noads and math typesetting are not handled at all (yet)
2653   * not all hpacks and vpacks are intercepted (yet)
2654   * the nested node list handling will probably change
2655   * A conversion tool for nodes to/from dictionaries is planned,
2656     but not done yet
2658 The other changes in this snapshot are various bugfixes (for builds
2659 on various platforms as well as font issues) and speedups (in the 
2660 execution of callbacks and the creation of lua font representations).
2663 ==============================================================
2664 Luatex snapshot-20070322 was released 20070322
2665 ==============================================================
2667 * I have changed the token_filter callback quite rigorously,
2668    mostly because of speed issues. The raw speed of trivial
2669    lua token handling is now only about 20 times slower than
2670    the native handling. Not bad at all, considering it has to move
2671    between interpreted and compiled code for each and every
2672    token. If you do not run the token filter inside \output,
2673    the effective run speed difference should not be much more
2674    than a factor 1.5.
2676    Two big differences: you have to call token.get_next()
2677    yourself, and the token table is now a three-item array
2678    instead of a five-key hash. The minimal example changes to
2680    \directlua0{
2681      callback.register('token_filter', function ()
2682        return token.get_next()
2683        end)
2684    }
2686    more details are in the manual.
2688 * I've fixed a few bugs in the handling of Opentype TTF, and added
2689    a new key in the font definition table:
2691       f.encodingbytes = (1|2)
2693    The default is 2 for opentype and truetype format, 1 otherwise.
2694    Later on, it will become possible to have a type1 font in 2-byte
2695    (CID) encoding or a truetype font in traditional encoding (1-byte),
2696    but I have not covered all cases yet.
2700 ==============================================================
2701 Luatex snapshot-20070309 was released 20070309
2702 ==============================================================
2704 * The OCP debug information is removed again.
2706 * There is a new callback that I am quite excited about myself:
2707    'token_filter'.
2710 A bit of text from the reference manual:
2711 --------------------
2712 This callback allows you to change the modify any lexical token that
2713 enters the \type{main_control} function before \LUATEX\ executes the
2714 associated command.
2716 Note: not all tokens can be intercepted yet, only those that are `seen'
2717 by \LUATEX's main control function.  Supplemental tokens like the bodies
2718 of macro definitions and the right-hand side of register assignments
2719 are not seen. For now, this is intentional.
2721 \startfunctioncall
2722       function (table <token>)
2723          return table <token>
2724       end
2725 \stopfunctioncall
2727 Calling convention for this callback is bit more complicated then for
2728 most other callbacks.  Initially, lua function will be called with the
2729 next token from \type{get_next()} as argument, represented as a small
2730 lua table.  The function should either return a lua table representing
2731 a valid to-be-processed token, or something else like nil or an empty
2732 table.
2734 If your lua function does not return a table representing a valid
2735 token, it will be immediately called again with yet another token
2736 from \type{get_next()} as argument, until it eventually does return
2737 a useful token.
2739 But if the function does return a usable token, then that token will
2740 be processed by \LUATEX. Afterwards, the function will be called
2741 again, but now without an argument. This is repeated until it stops
2742 returning tokens.  Then processing reverts back to the other branch.
2744 The point behind that roundabout calling convention is that it
2745 allows the lua function to buffer tokens for various uses. That in
2746 turn makes it possible to do some really advanced things like
2747 replacing OTPs.
2749 Now about that table. The table that the function will receive
2750 contains four fields:
2752 \starttabulate[|l|i|p|]
2753 \NC Key     \NC  type    \NC                Explanation \NC\FR
2754 \NC cmd     \NC  string \NC A representation of  \LUATEX's internal
2755                              command code\NC\NR
2756 \NC chr     \NC  number \NC The command code modifier\NC\NR
2757 \NC cs      \NC  string \NC If the token came from a csname, this
2758                              is  that csname\NC\NR
2759 \NC mod     \NC character \NC A single character string representing
2760 the current processing mode. One of {\bf v}ertical, {\bf h}orizontal,
2761 display {\bf m}ath, {\bf n}o, internal {\bf V}ertical, 
2762             restricted {\bf H}orizontal, or inline {\bf M}ath mode.\NC\LR
2763 \stoptabulate
2765 If you modify the table before returning it, then it is wise to return 
2766 either a (\type{cmd}, \type{chr}) pair, or a \type{cs} string.  That is
2767 because if both options are present, the pair has precedence and the
2768 string is ignored. On the return table, {\bf mod} is ignored always.
2769 --------------
2771 I have no long example code yet and it is not as complete as one
2772 would want it to be because it is not intercepting everything that
2773 comes in, only the bits that are triggered by the main control
2774 loop.
2776 I decided to do a fast snapshot release for two reasons:
2778 * It is one of the easier extensions to get started with if you want
2779    to learn a bit about lua programming
2781 * I would welcome feedback on the token interface, because it will
2782    be needed in other places as well, soon. I am still not sure
2783    whether converting the command to/from strings is worth it, for
2784    example. And maybe it would be less confusing if you could return
2785    a list of tokens instead of being called repeatedly?
2787 Here is the trivial example to get you started:
2789     \directlua0{
2790       callback.register('token_filter', function (t) return t end)
2791     }
2794 ==============================================================
2795 Luatex snapshot-20070307 was released 20070307
2796 ==============================================================
2799 * Non-CID PostScript-based Opentype fonts are now combined over
2800    the entire document, and properly subsetted. The code is
2801    borrowed from xdvipdfmx with some minor adjustments
2803    Adding support for CID-keyed OpenType fonts would not be hard
2804    but at the moment I lack example input (and incentive).
2806 * A small extension to the virtual fonts structure: you can use
2808      f.fonts[1] = { 'id' = 38}
2810    to do a backreference to a previously defined font. This saves quite
2811    a few computations
2813 * There was a bug in the handling of \leaders in the output whereby
2814    it's width was taken to be twice what it should be while writing
2815    to the PDF, fixed now.
2817 * The font inclusion code is cleaned up a bit by Hartmut.
2819 * Some compilation problems were fixed.
2821 * There is (quite a bit of) debugging information printed out when
2822    OTPs are in use, because I am tracking down a bug reported by Idris.
2824    The input of each and every OTP step is shown on the terminal in
2825    a line line this:
2827      [57902][1568][58423][1568][58408][1568][58921]
2829    those are the decimal values of ocp i/o characters. If you don't
2830    need them, don't worry about it.
2832 ==============================================================
2833 Luatex snapshot-20070302 was released 20070302
2834 ==============================================================
2836 * The 'snapshot version' banner is now calculated dynamically
2837   at build time. This aids in figuring out what binary people
2838   are actually running, but it can possibly break the build on
2839   systems that do not have a `date` command.
2841 * The do_vf() function that checks for virtual font existance
2842   is now run immediately after the font definition instead of
2843   being postponed until characters are output.
2845 * The 'define_font' callback interface has changed a little.
2846   It is now:
2847     retval = function (name,size,fontid)
2849   where fontid is the internal font number of the font that
2850   is currently being defined, and retval can be either a table
2851   (as before) or a different, previously defined fontid. This is
2852   useful if a previous definition can be reused instead of
2853   creating a whole new font structure.
2855 * The internal font data structure has been redone. Glyph index
2856   inside a font is now handled by a sparse array, so that use
2857   of e.g. 0xFB01 (fi-ligature) no longer creates a 64000+ entries
2858   character array.
2860 * The internal cache-ing of font metric information is turned
2861   off completely, because it was based on the assumption that
2862   name + size were a unique identifier for a font. This can no
2863   longer be guaranteed.
2865 * word boundary processing now works OK again, thanks to the
2866   introduction of two virtual characters in the font table
2867   definition. Besides the normal numeric entries in the
2868   f.characters table, there can now also be two string keys:
2869   "left_boundary" and "right_boundary". The  ligatures and kerns
2870   of the 'left_boundary' character are used for the pre-word
2871   boundary processing, ligatures and kerns between characters
2872   and 'right_boundary' are used for the post-word processing.
2874 * Lua font table references are no longer cached by the
2875   executable ,in order to preserve memory. (the only downside
2876   is that font.fonts[] access is now slower because of the need
2877   to recreate the lua table).
2879 * There are other some small changes to the font table formats.
2880   Please see the manual for details.
2882 * A 'real' font can now still have virtual characters if they
2883   are loaded via lua. Just set the 'commands' section and/or
2884   the 'fonts' array to your liking, and it should work out.
2886   If you have created no 'fonts' array at all, then the default
2887   font (indentifier '1')  is the current font, so that you
2888   can create virtual duplicates of already existing characters.
2890   Note: this does not work the other way. There can not be
2891   'real' characters in a virtual font!
2893 * Truetype-based opentype fonts no longer require Acrobat 7
2894   t(hey are now written out as if they are normal truetype).
2896 * A lua init script can now set 'texconfig.formatname' and/or
2897   'texconfig.jobname'. If ther is no file or format specified
2898   on the commandline, then, if, one of those keys is present,
2899   that key will be used instead of simply quitting with an
2900   error.
2902 * Placement of boxes and rules in right-to-left mode is debugged,
2903   and now seems to work ok.
2905 * Virtual font loading is debugged.
2907 * Some memory leaks are resolved
2909 * HZ font expansion should work ok again, but is not tested.
2911 * a few of the warning during opentype loading have been removed
2912   because the problems are rather harmless and turned out to be
2913   triggered by almost every font.
2916 ==============================================================
2917 Luatex snapshot-20070218 was released 20070218
2918 ==============================================================
2920 * The pdftex stuff is now updated to 1.40.3
2921   (and on top of that, it still has those extra patches announced in
2922   snapshot 20070202)
2924 * The virtual font parser is debugged and now appears rather stable.
2926 * There is one extra virtual command:
2928     "commands" = {
2929        {"slot", 1, 97}, -- place character 97 'a' in local font 1.
2930      }
2932   This is just a shortcut for {"font",1}, {"char", 97}
2934 * Some small memory leaks have been fixed. Luatex does not leak big
2935   time, but I'd like to get back to valgrind reporting '0 out of 0',
2936   instead of the current 800 bytes or so (that is a slow process).
2938 * You can read a truetype or opentype font from within lua code
2939   using font.read_ttf() or font.read_otf(), respectively.
2941   This feature uses a fair bit of the fontforge code, making the
2942   binary rather a bit larger than before. Just so you know.
2944   Apple (AAT, as well as encoding) support is still largely missing,
2945   and bitmap-only and old Multiple-Master truetype fonts are not
2946   supported at all (and never will be).
2948   The output format is (shadily) documented in the reference manual.
2949   At the moment, it very closely resembles the internal font stucture
2950   that is used by fontforge.
2952 * LuaTeX can now write wide OpenType fonts to the PDF file.
2954   There is no subsetting support yet, and a ToUnicode CMap is also
2955   still missing, but nevertheless it is already somewhat useful. The
2956   rule is very simple: if a font uses code points above 255, then it
2957   is considered to be a `wide' font, and it will be written out as
2958   a Type0 CID-keyed font to the PDF.
2960   Caveat: Getting suitable metrics into LuaTeX can be a bit of problem
2961   right now, because font.read_otf() does not produce anything that
2962   can be fed back into define_font without extra processing.  Hans has
2963   some experimental Lua code for ConTeXt (of course :-)) and that is
2964   how I know it works.  You can expect a nicer interface soon,
2965   hopefully next week, in the form of a simplistic table conversion
2966   routine.
2968 * I have started work on supporting Aleph's bidi typesetting in PDF
2969   mode as well, simple text seems to be largely ok. More complicated
2970   documents will no doubt still show some bugs, but fixing those will
2971   be easy (once they are discovered). Exactly what happens with specials
2972   is not yet investigated.
2974 * Omega's (16-bit) wide virtual fonts now work OK in PDF mode. This
2975   means that many Aleph files can now be run in PDF mode directly.
2976   (the documents that use UTF-8 input encoding)
2979 ==============================================================
2980 Luatex snapshot-20070202 was released 20070202
2981 ==============================================================
2984 * The pdftex stuff is now updated to 1.40.2, and on top of that, it has
2986    - an extra patch from Han The Thanh that adds a primitive to control
2987      the merging of fonts from external pdf images (\pdfreplacefonts),
2988      and a bugfix for virtual font handling.
2990    - an extra patch by Hartmut Henkel that removes a number of malloc()s
2991      and free()s from the calls to the compression library, thereby
2992      making luatex run a bit faster.
2994 * luatex now happily accepts the following low-level syntax:
2995         
2996     \font\myfont = <general text> <at specifier>
2998    It feeds the <general text> to either kpathsea or a lua script for
2999    further processing after stripping the braces.
3001    In itself, this is not all that useful, but the reason for this
3002    syntax extension is that it paves the road for a macro package
3003    to do something like this:
3005     \font\myfont = {font="Times New Roman", color="\darkred",
3006                     encoding="ec", features="liga", size=10bp}
3008    without having to resort to system-specific quoting mechanisms.
3009    Macro (and other) expansion takes inside the braced argument.
3011    (I am considering adding this extension to \input as well).
3013 * It is now possible to define a font into the font.fonts[]
3014    directly from lua, but becayse use is limited, I am only
3015    mentioning it to be complete.
3016         
3017    Syntax:      
3018         <number> id = font.define(<table> font)
3020 * There is a (not very reliable yet) virtual font parser accessible
3021    from lua.
3023    Syntax:
3024         <table> vfdata = font.read_vf(<string> name, <number> size)
3026    The interpreter tries to give a reasonable representation of a
3027    virtual font file (the .vf file). Besides a few simple top-level
3028    items:
3030      designsize  -- in scaled points
3031      size        -- also in sp
3032      name        -- the file name
3033      checksum    -- the vf checksum
3034      header      -- the header comment  (if any)
3036    it also has a top-level array 'fonts' wherein each item is a mini-
3037    array describing one of te mapped fonts. An example makes this
3038    easy to understand
3040     "fonts" = { {"ptmr8a",655360}, {"psyr", 600000} }
3042    says that the first referenced font (index 1) in this virtual font
3043    is ptrmr8a.tfm loaded at 10pt,  and the second is psyr.tfm loaded
3044    at a little over 9pt. These index numbers are used by the character
3045    command definitions that follow.
3047    At top level, there is a 'characters' array, just as for a normal
3048    font, except that each item has only two keys:
3050      "width"    -- the tfm width (as stored in the .vf)
3051      "commands" -- an array of virtual font commands for a character.
3053    each of the items in the 'commands' array is itself a tiny hash.
3055    Each of those mini-hashes represents a single character packet
3056    command. Here is a 'commands' entry that contains every possible
3057    one at least once:
3059      "commands" = {
3060         {"push"},                     -- remember where we are
3061         {"right", 5000},              -- move right 0.08pt
3062         {"font", 1},                  -- select the fonts[1] entry
3063         {"setchar", 97},              -- place character 97 'a'
3064         {"pop"},                      -- go all the way back
3065         {"down", -200000},            -- move *up* about 3pt
3066         {"special", "pdf: 1 0 0 rg"}  -- switch to red color
3067         {"rule", 500000, 20000}       -- draw a bar
3068         {'special',"pdf: 0 g"}        -- back to black
3069       }
3072 * But the big news is that you can now define your own virtual fonts
3073    on the fly, by adding a few statements to the table returned to
3074    the 'define_font' callback.
3076    There are a few requirements:
3078    - The table has to have a top-level key 'type', and it's value
3079      must be 'virtual'.
3081      The presence of this key with the specific value 'virtual'
3082      will trigger handling of the rest of the special virtual font
3083      fields in the table, but the mere existance of 'type' is
3084      enough to prevent luatex from looking for a virtual font
3085      on its own.
3087      Therefore, this also works 'in reverse': if you are absolutely
3088      certain that a font is not a virtual font, assigning the value
3089      'base' or 'real' to 'type' will inhibit tex from looking for a
3090      virtual font file, thereby saving you a disk search.
3092    - There must be a top-level 'fonts' array, as explained above.
3093      Any fonts that are not yet known to luatex at that moment,
3094      will be loaded automatically (Warning: do not ever use a font
3095      in 'fonts' with the same name you will return in the table you
3096      are defining right now!).
3098    - Each and every character in the fonts needs to have a 'commands'
3099      key, as explained above.
3101    The main point behind these restrictions is that a font is
3102    *either* a base font *or* a virtual font. It cannot be both
3103    at the same time.
3106 ==============================================================
3107 Luatex snapshot-20070126 was released 20070126
3108 ==============================================================
3111 * Underscores in pascal identifiers are now retained.
3113    This took quite a bit of work. The web2c conversion tools
3114    needed only small adjustments, but most of the existing C
3115    code depended on the removal of the underscores. I had to
3116    go through changing many lines. 99% of all identifiers are
3117    now written the same on the pascal side as on the C side.
3118    This makes writing interface code quite a bit less confusing.
3120    Not everything is completely clean yet, because I did
3121    not want to change the web2c-specific C files. I often
3122    took the other approach and removed the underscores
3123    from the web2c options (like 'parsefirstlinep') in the
3124    change file instead. Ugly, but predictable.
3126    There is about a dozen or so of #defines left, that map
3127         memoryword -> memory_word
3128          strpool    -> str_pool
3129    etc.
3131 * The virtual font parsing and interpreting is now done in C.
3132    (this is because it needs to be interfaced with the lua-based
3133    font loader)
3135 * I am in the process of merging: the VF stuff; the TFM stuff;
3136    the lua font loading; and the pdftex font backend into one
3137    interface, so there were some smallish changes relating to
3138    that as well. Nothing worth mentioning just yet except that
3139    luatex now will read "ovf" files as well as "vf" files.
3141 * There are a few really small bugfixes for bug reports I received
3142   on this list and by email.
3144 ==============================================================
3145 Luatex snapshot-20070119 was released 20070119
3146 ==============================================================
3148 The largest new bit is the existence of a font.fonts array, that you
3149 can use to query/adjust the internal defined tex fonts. See the manual
3150 for more details.
3152 Two small new lua extensions are added as well:
3154    * os.setenv() -- to change the environment
3155    * os.exec()   -- a non-returning os.execute()
3157 And a bit of cleanup in the commandline processing.
3160 ==============================================================
3161 Luatex snapshot-20070117 was released 20070117
3162 ==============================================================
3164 * the pdftex core is updated to 1.40.1, and web2c to 7.5.6
3166 * the pdftex-specific documentation is removed
3168 * lua lpeg library updated to 0.4
3169    ( http://www.inf.puc-rio.br/~roberto/lpeg.html )
3171 * the C part of the lua md5 library is added to the binary
3172    ( http://www.inf.puc-rio.br/~roberto/md5/md5-5/md5.html )
3174 * --luaonly now puts the script itself at arg[0], and
3175    preceding commandline items in the negative indices
3176    (instead of starting the count at zero).
3177    This new approach is compatible with the standalone lua
3178    interpreter.
3181 ==============================================================
3182 Luatex snapshot-20070107 was released 20070107
3183 ==============================================================
3185 Hot on the heels of 20070105, a new snapshot. It turns out
3186 that using the callback to define a font broke all ligatures.
3187 This snapshot fixes that, and it has a few minor updates to
3188 the manual. Next shapshot will be after the inclusion of
3189 pdftex 1.40.1. 
3191 ==============================================================
3192 Luatex snapshot-20070105 was released 20070105
3193 ==============================================================
3195  * the calculations that converted lua strings into tex units
3196    were horrendously wrong, this was discovered by Pawel.
3198  * io.lines() was still using the old, line ending sensitive,
3199    code from the lua core distribution
3201  * The main font memory is allocated as needed^(1) instead of
3202    statically pre-allocated.
3204  * ligatures and kerns are separated completely from each other,
3205    so use of \noligatures no longer inhibits kerning as well
3207  * Metrics can be loaded using a callback: 'define_font'.
3208    The value returned should be a lua table representing a tfm
3209    file.
3211  * there is a new lua table: font. It has one function:   
3212    font.read_tfm() that returns a table reprentation of the tfm
3213    contents, for use with the above mentioned callback
3215  * I dropped suppport for "Level 1" OFM files. I would like
3216    to have a try at those extended font files, but I lack
3217    examples (fonts nor documents). I am not even sure such
3218    fonts have ever existed in the 'real world'.
3222 ==============================================================
3223 Luatex snapshot-20061208 was released 20061208
3224 ==============================================================
3226 * There is a new switch: --safer. This disables a number of lua
3227    functions that are more or less dangerous (a detailed list is
3228    in the manual)
3230 * Two longstanding bugs have been fixed: \latelua works once
3231    again (patch by Hartmut) and a bug that caused mysterious crashes
3232    turned out to be a problem inside the paragraph builder
3233    (reconstitution of ligatures)
3235 * Six new string iterators have been added to the string library:
3236       string.characters        (one 1-letter string)
3237       string.bytes             (one byte)
3238       string.characterpairs    (two 1-letter strings)
3239       string.bytepairs         (two bytes)
3240       string.utfcharacters     (a one-character utf-8 string)
3241       string.utfvalues         (a unicode code point number)
3243 * The top 256 values of the unicode range (starting at hex
3244    value "10FF00) are now reserved for byte output. Characters
3245    in that range will be written by luatex after substracting
3246    that offset. The net result is that \char"10FFA9 is written
3247    as byte value hex A9 = decimal 169 = copyright sign in latin1
3249    This trick allows byte-oriented output to \pdfliterals and
3250    \specials, but should be considered very experimental.
3252 * There is a new callback called 'process_input_buffer' that can
3253     be used to mutate the line buffer just before LuaTeX actually
3254     starts looking at it.
3256 * The statistics table now has readable items
3257         statistics.inputid
3258         statistics.lasterrorstring
3259     that represent TeX's current input id and the last error string
3261 * The show_error_hook callback no longer receives any arguments
3262 * There is a new switch: --safer. This disables a number of lua
3263    functions that are more or less dangerous (a detailed list is
3264    in the manual)
3266 * Two longstanding bugs have been fixed: \latelua works once
3267    again (patch by Hartmut) and a bug that caused mysterious crashes
3268    turned out to be a problem inside the paragraph builder
3269    (reconstitution of ligatures)
3271 * Six new string iterators have been added to the string library:
3272       string.characters        (one 1-letter string)
3273       string.bytes             (one byte)
3274       string.characterpairs    (two 1-letter strings)
3275       string.bytepairs         (two bytes)
3276       string.utfcharacters     (a one-character utf-8 string)
3277       string.utfvalues         (a unicode code point number)
3279 * The top 256 values of the unicode range (starting at hex
3280    value "10FF00) are now reserved for byte output. Characters
3281    in that range will be written by luatex after substracting
3282    that offset. The net result is that \char"10FFA9 is written
3283    as byte value hex A9 = decimal 169 = copyright sign in latin1
3285    This trick allows byte-oriented output to \pdfliterals and
3286    \specials, but should be considered very experimental.
3288 * There is a new callback called 'process_input_buffer' that can
3289     be used to mutate the line buffer just before LuaTeX actually
3290     starts looking at it.
3292 * The statistics table now has readable items
3293         statistics.inputid
3294         statistics.lasterrorstring
3295     that represent TeX's current input id and the last error string
3297 * The show_error_hook callback no longer receives any arguments
3299 * The statistics table now has readable items
3300         statistics.luabytecodes
3301         statistics.luastates
3302         statistics.luabytecode_bytes
3303         statistics.luastate_bytes
3304    for memory statistics reporting
3307 * The statistics table now has readable items
3308         statistics.luabytecodes
3309         statistics.luastates
3310         statistics.luabytecode_bytes
3311         statistics.luastate_bytes
3312    for memory statistics reporting
3315 ==============================================================
3316 Luatex snapshot-20061204 was released 20061204
3317 ==============================================================
3319 * The LuaTeX interpreter can now be run as a standalone lua script
3320   processor, by using a commandline like this:
3322     luatex --luaonly=luatools.lua
3324 * Luafilesystem (http://www.keplerproject.org/luafilesystem/ ) is
3325   included.
3327 * There are a total of eight new file discovery callbacks:
3328     find_vf_file
3329     find_ocp_file
3330     find_map_file
3331     find_enc_file
3332     find_sfd_file
3333     find_pk_file
3334     find_data_file
3335     find_opentype_file
3336   this enhances the orthogonality of the callback system, nothing
3337   fundamental is changed.
3339 * There is a new callback called 'process_input_buffer' that can
3340   be used to mutate the line buffer just before LuaTeX actually
3341   starts looking at it.
3343 * The 'reader' and 'close' functions from 'open_read_file' now
3344   receive the table they are defined in as a function argument,
3345   that can be used as a per file localized data store.
3347 * Updated the Lua to the latest 5.1.1, with all known bug patches
3348   from the website applied as well
3350 * Runtime autoloading of lua .so files is now off on all platforms.
3352 * The statistics table now has readable items
3353     statistics.filename
3354     statistics.linenumber
3355   that represent TeX's current file name and line number
3357 * The support for user-defined type3 font .pgc files and the
3358   associated 'read_miscfonts_file' callback has been removed.
3359   (nobody used it anyway)
3361 * General cleanups to the source tree and build process. 
3363 ==============================================================
3364 Luatex snapshot-20061023 was released 20061023
3365 ==============================================================
3367 * there was a missing callback: find_font_file
3368 * program_invocation_name was not set
3369 * buf_size could not be more that 300k
3372 ==============================================================
3373 Luatex snapshot-20061013 was released 20061013
3374 ==============================================================
3376 Last friday I uploaded a new snapshot and today I finally
3377 finished updating the manual to go with it. The changes all
3378 relate to startup, file i/o, and callbacks. The main achievement
3379 is: you can now run luatex without it *ever* initializing kpathsea.
3381 Because I am lazy, I have checked in the pdf of the manual
3382 as well, so that I can say: Please look at
3384   https://foundry.supelec.fr/plugins/scmsvn/viewcvs.php/manual/
3385     /luatexref-t.pdf?root=luatex&rev=148&view=log
3387 for all the details.  :-) 
3389 ==============================================================
3390 Luatex snapshot-20061002 was released 20061002
3391 ==============================================================
3394 * Some infrastructure changes:
3396   libs/slnunicode-0.9.1/ renamed to libs/slnunicode/
3397   libs/zziplib added
3398   libs/luazip added
3400   (zziplib is using a different version of autofoo. I know I have
3401   messed up something in the build process, but the bit we need
3402   compiles ok so I've postponed attempting to fix it)
3404 * The callback logic has changed quite a bit.
3406   - all callbacks are now only possible in lua state 0.
3408   - The callback 'input_line' has disappeared, and is replaced by
3409     'open_read_file'. One of the return values of that callback
3410     is a table that defines a 'reader' function for line reading.
3412     See the manual for further information on this.
3414   - There are some new callbacks for the reading of various binary
3415     files. The current ones are:
3417     "read_ocp_file", "read_vf_file", "read_data_file", "read_font_file",
3418     "read_map_file".
3420     The rest of the file types will follow soon (fonts, enc files, and
3421     images).
3423   - There are also some new callbacks that 'find' a file's pathname:
3425     "find_truetype_file", "find_type1_file", "find_image_file"
3427     here too, more will follow later.
3429   - the functions from io. that were copied to texio have been removed
3430     again. The new callbacks do not pass file pointers around, so
3431     they ere not longer needed
3433   - the 'open_write_file' is temporarily unavailable
3435 * startup.lua is now always loaded into lua state 0
3437 * The luazip library from kepler is linked in, so there the table 'zip'
3438   is accessible from all lua states. 
3440 ==============================================================
3441 Luatex snapshot-20060922 was released 20060922
3442 ==============================================================
3444 * The texio table has gained a new function:
3446      tex_file = texio.open(filename)
3448    returns a file handle of a type that luatex can use
3449    internally (the return of io.open is unusable in callbacks
3450    because it will be garbage-collected at a random time)
3453 * In related news, there are two new callbacks you can define:
3454         
3455         callback.register('open_read_file', f)
3456         callback.register('open_write_file', f)
3458    where your function should have the following conventions:
3460    function f (number id_number, string asked_name)
3461       return boolean success, string actual_name, tex_file filep
3462    end
3464    id_number:   zero for the log or \input files  or TeX's \read
3465                 number incremented by one (\read0 becomes 1).
3466    asked_name:  the user-supplied filename
3468    success:     return false for error, true otherwise.
3470    The remaining two items are only looked at if you return true:
3472    actual_name:  the true filename used (with extension!)
3473    filep:        a file object opened though texio.open()
3476 * The tex.print function has an extra optional parameter:
3478        tex.print(ctt_id n, strings ...)
3480    This prints the strings using the catcode regime defined by
3481    \catcodetable n (assuming n is valid, see below)
3483 * The new function tex.sprint has the same lua conventions as
3484    tex.print, but behaces slightly different on the tex side:
3486    ** tex does not switch to the 'new_line' state (this implies
3487       that leading spaces are not ignored)
3488    ** no \endlinechars are inserted
3489    ** trailing spaces are not removed from the argument
3491 * Catcode tables are a completely new feature, that allows
3492    you to switch the current catcode regime in one simple
3493    statement:
3495    \catcodetable <count>
3497       Switches to the use of a different set of catcodes (table),
3498       that is stored under the number <count>. Such a table has to
3499       be previously created using one of the two command below, or
3500       the number 0 (which is pre-inititialized)
3502       This command obeys normal grouping rules.
3504    \initcatcodetable <count>
3506       creates a new, global, independent catcode table with catcodes
3507       matching the code that are predefined by initex (tex -ini).
3509      This allocation is global
3511    \savecatcodetable <count>
3513       copies the current set of catcodes to a new, global, table
3514       with id number <count>. The definitions in this new table
3515       are all treated as if they were made in the outermost level.
3517      This allocation is global
3519    At the end of each grouping level, items within all existing
3520    catcodetables are restored, regardless of which one is the
3521    currently active table.
3523    Catcode table numbers cannot be larger than 0xFFFFFFF (228-1)
3525 * There is a new lua table: lua. It contains three read-only
3526    items:
3528      lua.id          -- the id number of the instance
3529      lua.version     -- a luatex version identifier string
3530      lua.startupfile -- the full filename (+path) of startup.lua
3532    and it also contains a read/write array:
3534      lua.bytecode[]  -- lua executable bytecode
3536    This array can be used to save and restore lua functions
3537    across lua states. The accepted values are for assignments
3538    are functions and nil. Likewise, the retrieved value is
3539    either a function or nil.
3541    The contents of the lua.bytecode array is stored inside the
3542    format file, so it can also be used to preload lua code.
3545 * The format files are quire a bit smaller than before
3548 ==============================================================
3549 Luatex snapshot-20060915 was released 20060915
3550 ==============================================================
3552 * There is a new TEX primitive: \formatname. It is similar
3553   to \jobname (read-only). In initex, the expansion is empty,
3554   otherwise the expansion is the same as the \jobname from
3555   the initex run.
3557 * the lua "tex" table has been expanded with a few of the 'convert'
3558   codes (read-only). The supported ones at this moment are:
3560   tex.eTeXVersion
3561   tex.OmegaVersion
3562   tex.AlephVersion
3563   tex.pdftexrevision
3564   tex.pdftexbanner
3565   tex.pdfnormaldeviate
3566   tex.jobname
3567   tex.formatname
3568   tex.eTeXrevision
3569   tex.Omegarevision
3570   tex.Alephrevision
3572   This list looks haphazard,  but it really is not. These are
3573   all the cases of the 'convert' internal command that do not
3574   require an argument.
3576 * The metatables of the subtables like tex.dimen[] etc. are now
3577   adjustable from lua (not that I recommend doing that;-)).
3579 * On the lua side, there is a new global value: "luaid"
3580   It holds the internal id number of this \directlua instance.
3582 * There is a new lua table, "callback", that has the single function
3583   "callback.register", used to register callbacks.   This replaces
3584   the previous concoction (see my message about snapshot 20060901).
3585   Syntax is :
3587   callback.register(<callback name>,function (f) ... end)
3589   where the <callback name> is for the moment, either "input_line"
3590   or "show_error_hook".
3592   This function internalizes the callback function in such a way
3593   that you no longer have to worry about \luacallback (which has
3594   been removed), nor does it matter if you redefine a function
3595   accidentally.
3597  The internal testing for callback presence is also quite a bit
3598  faster, thanks to this change. Callback assignments are global
3599  and the "input_line" always takes effect starting on the next
3600  input line to be read from an actual file.
3603 * \detokenizedlua has been removed. It is functionally replaced by
3604   the new function call tex.write("").
3606   Each argument to each call of tex.write () counts as an input
3607   line, but:
3608   ** all catcodes on that line are either 'space' (for " ") or
3609      'character' for all others.
3610   ** there is no \newlinechar appended.
3612 * The implementation of tex.print() has changed as well:
3614   ** the very last tex.print() line from a \directlua
3615      will no longer have a trailing \newlinechar
3616      (this is very convenient when \directlua is used
3617      within an \edef)
3618   ** tex.print() is quite a lot faster than before, and the total amount
3619      of returnable text from a \directlua is now only limited by
3620      available system RAM. However, each separate tex.print ()
3621      argument has to fit in TeX's input buffer.
3623 * The new primitive \luastartup can be set inside the format file
3624   to specify the lua instance number in which a possible runtime
3625   startup.lua script is executed (initex always uses 0)
3627 * There is a new primitive \scantextokens. Differences with
3628   eTeX's \scantokens are:
3630   ** the last line (usually only) from \scantextokens
3631      does not have a \newlinechar
3633   ** \scantextokens never raises an eof error.
3635   This means things like
3637   \edef\testone
3638         {\scantextokens{\ifnum1=1 true}\else false\fi}
3640   are legal input (but potentially dangerous!).
3642 * If you say
3643      local d  = tex.dimen["unknowndimen"]
3644   'd' will now become "nil" instead of raising an error
3646    However,
3647      tex.dimen["unknowndimen"] = d
3648    is still (and probably will remain) illegal 
3650 ==============================================================
3651 Luatex snapshot-20060908 was released 20060908
3652 ==============================================================
3654 * BIG CHANGE: \directlua now runs \scantokens internally.
3656   There is no longer a need to call scantokens yourself, the
3657   tex.print() output is now fed straight into a pseudo file.
3658   This is quite a bit faster as well as easier to use, but
3659   just in case you want it, the old behaviour is still present,
3660   under the new name
3662     \detokenizedlua
3665 * The texio library now has its own (partial) set of I/O commands,
3666   so that the standard lua io library is back to the distributed
3667   state (no more patched garbage collector)
3669   Note: This is really a very small change (it should not have any
3670   impact on wellbehaved input files), but I attempt to be complete
3671   in these notes, since there is no official documentation yet.
3674 * There is a new standard library available: kpse
3676   The most important function in that library is find_file:
3678     string = kpse.find_file(string filename
3679                             [,string type]
3680                             [,boolean mustexist])
3682   both "type" and "mustexist" are optional, so the function
3683   has from one upto three arguments.
3685   "type" is like the '-format' argument of kpsewhich. You can
3686      run 'kpsewich -h'  for a list. The default type is "tex".
3688   "mustexist" is like '-must-exist', and the default  is false.
3689      If you specify "true" (or a nonzero integer), then the kpse
3690      library will search the disk as well as the ls-R databases
3692   The new library also has three other functions that map
3693   straight to kpsewhich commandline options:
3695     string = kpse.expand_path(string)
3696     string = kpse.expand_var(string)
3697     string = kpse.expand_braces(string)
3699 * There is a second callback possibility:
3701     texio.show_error_hook(string message,
3702                           string|number indicator,
3703                           number lineno)
3705   This command is run from inside the TeX error function, and the
3706   idea is to allow you to do some extra reporting on top of what
3707   TeX already does (none of the normal actions are removed).
3709   "message" is the formal error message tex has given to the
3710      user (the line after the "! ")
3711   "indicator" is either a filename (when it is a string) or a
3712      location indicator (a number) that can means lots of different
3713      things like a token list id or a \read number.
3714   "lineno"  is the current line number
3716   This is an investigative item only, comments are welcome but do
3717   not take the syntax seriously.
3719   The final goal IMO is the total replacement of TeX's error
3720   handling routines, but that needs lots of adjustments
3721   in the web source because TeX deals with errors in a somewhat
3722   haphazard fashion (it needs unification first). The current
3723   hook is only for 'testing the water'.
3725 * It is now possible to use named items in the
3727     tex.count[]
3728     tex.dimen[]
3729     tex.toks[]
3731   subtables, so you can have
3733     tex.count.scratchcounter = 0
3734         local enormous = tex.dimen["maxdimen"]
3736   Luatex looks up the value for you on the fly. You have to use a
3737   valid \countdef (or \dimendef, or \toksdef), anything else will
3738   generate an error.
3740   In a normal TeX file, you don't do \dimen\maxdimen, but the
3741   lua syntax seems to be a bit cleaner to me. The intention is
3742   to evntually also allow \chardefs and macros that expand
3743   into a number (todo)
3746 * The tex table has also been extended with a large list of internal
3747   parameters (partially read/write). It is possible to access
3748   about every primitive that you can use after \the *and* is a
3749   single token. So there is
3751        integer   = tex.tracingcommands (\the\tracingcommands)
3752        integer   = tex.prevgraf        (\the\prevgraf)
3753        string    = tex.output          (\the\output)
3755   etc. for all of the internal parameters, but not the items
3756   that need extra arguments (like \the\scriptfont )
3758   The subset comprising simple integer and dimension registers
3759   are writable as well as readable (stuff like \tracingcommands
3760   and \parindent).
3762   The fact that both lists are still quite limited is a result of
3763   the very different types of things that can occur after \the and
3764   also on the LHS of an assignment. The remaining primitives will
3765   be filled in when there is a real need or implementation becomes
3766   simple, whichever comes first.
3770 ==============================================================
3771 Luatex snapshot-20060901 was released 20060901
3772 ==============================================================
3774 All changes are related to lua this time, and most are quite unstable
3775 / experimental. But first the things that are stabel/fixed bugs:
3777 * A VF loading bug that turned up in some of Hans' fonts
3778   has been fixed
3780 * A small series of bounds checking fixes to \ocplist has been
3781   added to prevent the system from crashing due to array indexes
3782   running out of bounds.
3784 * The Lua file searching paths are now fixed. The search path for lua
3785   script files now contains the following items (tried in order)
3786   1. the local directory:
3787        ./?.lua
3788     (for document-specific files)
3789   2. the items from the expansion of kpathsea's $TEXMFSCRIPTS variable,
3790     but only the parts containing 'lua' as a subpath:
3791        $TEXMFSCRIPTS<lua>/?.lua
3792        $TEXMFSCRIPTS<lua>/?/init.lua
3793      (for format-specific files)
3794   3. the $SELFAUTOPARENT sibling directory named 'lib'.
3795        $SELFAUTOPARENT/lib/lua/5.1/?.lua
3796        $SELFAUTOPARENT/lib/lua/5.1/?/init.lua
3797      (for files that are not related to tex)
3799   The search path for dynamic libraries has only
3800   1. the local directory:
3801        ./?.so
3802     (for document-specific files)
3803   2. and the $SELFAUTOPARENT sibling directory named 'lib'.
3804        $SELFAUTOPARENT/lib/lua/5.1/?.so
3806   (of course the extension is .dll on windows, but .dlls do not
3807    work at the moment so it will not do you much good)
3809 * There are two functions available within a new table called
3810   texio:
3811     texio.write (luastring)
3812     texio.write_nl (luastring)
3813   both write the luastring to the same location(s) TeX writes
3814   its stuff. So if \batchmode is on, it writes only to the
3815   log, inside a \write, it prints to the current write file,
3816   etc.
3818   A read|write interface to TeX's "file selector" will
3819   follow shortly.
3821 * At startup, luatex searches for a script named
3822     startup.lua
3823   in the path list I explained above. If such a file exists, it is
3824   loaded.
3826   This happens right before the first input file needs to be opened
3827   (that is after format loading, but before any \everyjob tokens).
3829   From within the script, you can check the value of
3831     tex.formatname
3833   that is the 'format identification' as used by TEX. When the variable
3834   is equal to nil, luatex in in 'initex' mode, otherwise it will be
3835   something like: " (format=plain 2006.9.1)"
3838 Now for the experimental portion: callbacks. Here is what I have done
3839 so far:
3841 * The main reason for wanting startup.lua is file (input) re-encoding.
3842   For this purpose, it is now possible to set up a callback for
3843   luatex to execute.
3845   If you attach a Lua function to
3847     texio.input_line
3849   then from the next input line onwards, luatex will run that
3850   function whenever it needs a new input line from a text file.
3852   Your function will receive a file handle as argument, and
3853   should return either a string or nil (with nil signalling that
3854   the end of file has occurred).
3856   The trivial case is simply this:
3858     function reader (f)
3859         return f:read()
3860     end
3861     texio.input_line = reader
3864   Warning: The implementation is not totally finished yet. For the
3865   moment the file handle ("f" in the example) is a normal lua file,
3866   with a simple but important restriction: you cannot alter its value.
3867   You cannot f:close() it, or assign it a different value. luatex
3868   will eventually close the file itself.
3870   The restriction is a side-effect of a synchronisation problem with
3871   the lua garbage collector. Because of this, it also was necessary
3872   to turn off the automatic file closing code for normal lua io
3873   files (In other words: you have to close yourself all the files
3874   you opened yourself, and you should not close any files you did
3875   not open yourself).
3877   In the near future, "f" will become a special 'texio' file object
3878   and the needed functionality from the normal io library will be
3879   reimplemented. Along with that change, there will also be a callback
3880   to open (i.e. find) files, and a simple interface to the compiled-in
3881   kpathsea to use within that callback. 
3884 ==============================================================
3885 Luatex snapshot-20060825 was released 20060825
3886 ==============================================================
3888 The main change in this snapshot is that it uses far less memory.
3889 luatex -ini on my linux machine went from 326Mb (last week) to
3890 93Mb (now), and "texexec luatex" now ends at 184Mb instead of
3891 over 1/2Gb.
3893 This is achieved by two big changes:
3895 * The \mathcode, \delcode, \catcode, \sfcode, \lccode and \uccode
3896    tables are now sparse arrays that are implemented in C. They
3897    are no longer part of the TeX "equivalence table" and because
3898    each had 1.1 million entries with a few memory words each, this
3899    makes a major difference.
3901    See mathcodes.c and textcodes.c if you are interested in the
3902    gory details, but be warned: the code is still extremely
3903    rough and ugly. In particular, the dump and undump routines
3904    are far from optimal, resulting in somewhat larger format files
3905    than before (approx 1.3Mb larger with unicode-letters loaded,
3906    10k without); and the assignments do not show up when using
3907    the etex tracing routines \tracingassigns and \tracingrestores
3908    (code simply not written yet)
3910 * Single-character commands are no longer "special" internally,
3911    they are stored in the hash just like the multiletter csnames.
3914 ==============================================================
3915 Luatex snapshot-20060818 was released 20060818
3916 ==============================================================
3918 The snapshot is up to par with Aleph-RC4 (from texlive devel)
3919 and the latest pdftex beta (even newer than 20060811). However,
3920 there are some differences, to summarize:
3922 * There is no pool file (all strings are embedded)
3924 * -8bit and -translate-file are silently ignored
3926 * There is no mltex nor enctex (conflicts with aleph)
3928 * The tex functionality is always present and enabled
3929   (but see below about TeXXeT), so the asterisk or
3930   -etex switch for initex is not needed
3932 * "plus 1 filllllllll" does not generate any errors from TeX
3934 * TeXXeT (from eTeX) is not present, so the primives
3935     \TeXXeTstate
3936     \beginR
3937     \beginL
3938     \endR
3939     \endL
3940   are missing
3942 * The experimental pdftex regex match operations are removed,
3943   because that feature does not make much sense when lua is
3944   available so the primitives
3945         \pdfmatch
3946     \pdflastmatch
3947   are missing
3949 * The input translations from Aleph are not implemented, the
3950   16 related primitives are all missing
3951      \DefaultInputMode
3952      \noDefaultInputMode
3953      \noInputMode
3954      \InputMode
3955      \DefaultOutputMode
3956      \noDefaultOutputMode
3957      \noOutputMode
3958      \OutputMode
3959      \DefaultInputTranslation
3960      \noDefaultInputTranslation
3961      \noInputTranslation
3962      \InputTranslation
3963      \DefaultOutputTranslation
3964      \noDefaultOutputTranslation
3965      \noOutputTranslation
3966      \OutputTranslation
3967   All file IO assumes UTF-8, except that all the low-ascii
3968   controls except TAB, CR en LF are written to the terminal
3969   using ^^  notation (even these are binary in the log file).
3971 * Input characters can use the full range of Unicode,
3972   but it probably only makes sense to use values above
3973   the base plane for \mathcode and \catcode assignments,
3974   since the fonts as well as the hyphenation patterns
3975   are strictly 16-bit still.
3977 * The primitives
3978      \pdfpagewidth and \pagewidth,
3979      \pdfpageheight and \pageheight,
3980      \fontcharwd and \charwd,
3981      \fontcharht and \charht,
3982      \fontchardp and \chardp,
3983      \fontcharic and \charic,
3984   are all aliases of eachother.
3986 * The new primitive
3987      \clearmarks<number>
3988   clears a marks class completely.
3990 * The experimental pdftex primitives
3991      \pdfprimitive
3992      \ifpdfprimitive
3993      \ifpdfabsnum
3994      \ifpdfabsdim
3995   and provided without the extra 'pdf' prefix, so they are
3996   simply called
3997      \primitive
3998      \ifprimitive
3999      \ifabsnum
4000      \ifabsdim
4001   instead.
4003 * I probably forgot to mention some things :-)