2 This file is in the public domain.
4 ==============================================================
5 Luatex beta-0.76.0 was released 20130405
6 ==============================================================
10 * Small patches from TeXLive 2013, as well as an update to the
11 latest libraries (libpng, poppler, etc.)
13 * Speed up printing (of TeX strings) to the terminal and log.
15 * New lua function node.end_of_math().
17 * Fixed a memory leak in the lua function pdfscanner.scan().
19 ==============================================================
20 Luatex beta-0.75.0 was released 20130301
21 ==============================================================
25 * New expandable primitive \Uchar.
29 * New version of lnodelib.c with speedups by Hans and Luigi.
30 Also added some extra sanity checks to the Lua node field
33 * Support 'umath' in tex.extraprimitives(), so that formats can
34 make the \Umath* primitives unprefixed, now that they will be
35 provided by XeTeX as well.
37 * Removed a bunch of deprecated primitives
38 * \AlephVersion, \Alephrevision, \Alephversion, \Alephminorversion
39 * \OmegaVersion, \Omegarevision, \Omegaversion, \Omegaminorversion
40 * \omathcode, \odelcode, \omathchardef, \omathchar, \omathaccent,
41 \odelimiter, \oradical
42 * \Umathbotaccent, \Umathaccents
44 * Fix large file support.
46 * Fix Lua's loadfile().
48 * Removed the cidmap callbacks again (let that be done by user lua
51 * Removed the fatal error on fonts where num_glyphs is too high,
52 as that problem is actually harmless.
54 * Some compilation issues under Win32 and Solaris resolved.
56 * Allow math extender objects to be zero width.
58 * The 'epdf' library has been extended to deal with finding and
59 saving embedded files (catalog:numEmbeddedFiles() and catalog:
60 embeddedFile, new EmbFile object).
62 ==============================================================
63 Luatex beta-0.74.0 was released 20121224
64 ==============================================================
69 There are no patches to the core Lua files; a future version
70 of luatex will switch to loading the regular lua 5.2 dynamic
71 library instead of depending on a statically compiled
74 * A bleeding-edge version of luasocket is included, as there
75 is no 5.2-compatible official release yet.
77 * A new lua extension is the two-argument version of
78 string.dump from Luajit:
80 string.dump(function f, [boolean strip])
84 * The implied existence of the following lua libraries is now
87 debug, unicode.*, luazip, lfs, lpeg, zlib, gzip, md5,
88 socket.*, profiler, epdf, fontloader, mplib, and
91 Future versions of luatex will load these modules on demand
92 from dynamic libraries.
94 Please update your sources to include a 'require' line for
95 each of the library modules mentioned.
97 * Two new callbacks: find_cidmap_file and load_cidmap_file
98 (used by the fontloader to discover .cidmaps)
100 ==============================================================
101 Luatex beta-0.72.0 was released 20121210
102 ==============================================================
106 * update various used libraries, including mplib 1.770,
107 poppler 0.21, libpng 1.5, and lpeg 0.10.2.
109 * new 'pdfscanner' lua library.
111 * various OpenType math fixes, including \Umathcharnumdef.
113 * improved placement of bottom accents.
115 * various other small fixes that have accumulated over the past
118 ==============================================================
119 Luatex beta-0.70.1 was released 20110519
120 ==============================================================
124 * fixed: recorder file location from TL (Akira).
126 * fixed: missing newline on 'No output' line.
128 * fixed: relative names in synctex file.
130 * fixed: 16bit png images in generated %!PDF-1.4.
132 * fixed: building with (installed) libpng < 1.5.0
134 * fixed: year in --version output.
136 * fixed: box output to synctex.
138 * fixed: FontDescriptor for non-embedded OpenType fonts has an
139 invalid FontFile3 entry (#654)
141 * fixed: crash on non-existent images.
143 * fixed: small memory leak in the ipc code.
145 * fixed: tex.print() and tex.sprint() don't recognize -2 as the
146 first argument (#659)
148 ==============================================================
149 Luatex beta-0.70.0 was released 20110506
150 ==============================================================
154 * fixed: various changes needed for libpng 1.5.2.
156 * fixed: node.fields() for nodes without subtype.
158 * fixed: non-argument use of os.execute().
160 * fixed: tex.[s|t|]print() with invalid catcode table arguments.
162 * fixed: recorder filename location with --output-directory.
164 * fixed: display alignment in TRT mode.
166 * luatex now uses the standard synctex files from Jérome Laurens.
169 ==============================================================
170 Luatex beta-0.66.0 was released 20110412
171 ==============================================================
175 * fixed: linebreak_filter doesn't do its default job when
176 tex.linebreak is used
178 * fixed: \escapechar ignored by \meaning
180 * fixed: wrong px default
182 * fixed: font kern attribute inheritance
184 * fixed: "nop" unrecognized in virtual fonts
186 * fixed: assertion failure in dviluatex when font ptmr8t used
188 * fixed: tex.settoks for with strings with embedded zeroes
190 * fixed: an indexing problem with nonexistent font glyphs
192 * fixed: some crashes and other bugs on the 'subtype' and 'prev'
193 fields (not all node types have those fields)
195 * fixed: crash on token.csname_id ("")
197 * fixed: initialize the statically allocated node's type ids
199 * fixed: fencepost error in math parameter counting
201 * fixed: math family numbers > 255 are allowed
203 * fixed: compilation failure on Hurd
205 * fixed: a small bug leading to displacements when reading
208 * fixed: \directlua followed by \pdfximage generates error if
211 * fixed: a problem with \vadjust pre in alignments
213 * fixed: a lua stack growing problem in the backend in 0.65.0,
214 resulting in an inability to create more than a few thousand
217 * fixed: inclusion of Scribus-generated pdfs
219 * adapt: the default form margin is now zero (was 1bp before)
221 * adapt: libpng 1.4.4, zzuplib 0.13.60, mplib 1.504
223 * adapt: small changes to the build system and new imports from
224 the texlive repository
226 * feature: new function node.currentattr() queries the current
227 active attribute list
229 * feature: Lua font loading; ignore unknown enumeration keys in
232 * feature: JPEG 2000 image support
234 * feature: continuing work on the 'epdf' library
236 * doc: the 'epdf' lua library is now documented
238 * doc: various other manual corrections
241 ==============================================================
242 Luatex beta-0.65.0 was released 20101213
243 ==============================================================
247 * The Aleph and Omega version primitives are deprecated.
249 * The Apple Snow Leopard Truetype font collections now work
252 * Libpng has been updated to 1.4.4, and zlib to 1.2.5.
254 * New lua functions node.next() and node.prev().
256 * The already deprecated for some time node.protrusion_skipable()
257 function has been removed.
259 * fontloader.apply_featurefile() and fontloader.apply_afmfile()
260 now return nil,<errortable> on failure.
262 * The various node list fields in the lua node interface have
263 been renamed from 'list' to 'head', e.g. tex.box[0].head,
264 and the 'list' name is deprecated. For now, the deprecation
265 is silent, as 'list' will stay for quite some time. Please
266 update your lua source as soon as possible, though.
268 * The call node.type(<node>) now returns "node". The existing
269 functionality is otherwise unchanged.
271 * Luafilesystem has been updated to 1.5.0. NOTE: there is an
272 incompatible change in the directory iterator method.
274 * The restriction on linebreak_filter has been eased: at least one
275 horizontal box should be returned, but that is not necessarily
276 the last node any more.
278 * Backward compatibility has been restored for \meaning\mathchar
280 * node.first_character() has been renamed to node.first_glyph()
281 to better match its actual functionality.
283 * The \Umathaccent primitive now supports both/bottom keywords,
284 and \Umathbotaccent / \Umathaccents are now deprecated.
286 * The \Umathaccent primitive now also supports the fixed keyword,
287 which supports non-growing math accents even if the font says
288 there are extensible variants.
290 * Ongoing work on the epdf library.
294 * Assignment to \dimen65535 was broken earlier.
296 * <box>.head.prev is now always initialized to null (0).
298 * luatex -lua=<script> '\relax' no longer exits immediately,
299 instead going into interactive mode as it should.
301 * The \jobname was initialized wrongly for input file names
302 with multiple dots in them.
304 * The synctex file is now written in the right place when
305 --output-directory is given.
307 * \letterspacefont could cause crashes, especially when combined
310 * Luatex would crash on linux32 systems if it was build in an
311 environment where LFS (>2GB files) was enabled by default.
313 * Node lists created by node.copy_list() could not be hyphenated
314 due to an assertion error.
316 * Synctex support was partially broken since 0.60.0.
318 * With OpenType math fonts, accents with multiple parts
319 (like the \vec arrow) forgot to include all parts if the
320 accentee was too narrow.
322 * With OpenType math fonts, accents over any class except 0 and 7
325 * kpse.lookup("plain", {all = true}) was broken in kpathsea
326 itself (no extension given as well as --all specified).
328 * A FontForge bug made Cambria Math accents look bad, and the
329 placement of math top accents did not allow a marker at the
330 origin (patches by Stefan Philipp)
332 * Cut&Paste from PDF was sometimes broken due to bad ToUnicode map.
334 * Many small manual improvements (thanks to Paul Isambert)
336 * An other bugfix to lpeg 0.9 (from Roberto Ierusalimsky)
338 * Some small fixes to writet1.w (from Han The Thanh)
340 * A build failure because of bad libz configuration on Win32
342 ==============================================================
343 Luatex beta-0.64.0 was released 20101112
344 ==============================================================
348 * New lua functions pdf.refobj(), pdf.maxobjnum() and pdf.objtype()
350 * New lua function node.is_node()
352 * The max_strings configuration variable's maximum value is
353 raised to be identical to texlive's maximum (2097151), and
354 same for param_size (32767).
356 * The embedded mplib is now 1.503.
358 * Minor cleanups in the output of fontloader.to_table():
360 - removed out-of-range altuni's from the output
361 - don't dump the extra encodings, just the actual font encoding
362 - export the encoding's name also as 'enc_name' at one level up
363 - no longer exporting unset macstyles, nor zero uniqueids
364 - fix creationtime and modification time
366 * Ongoing work on the epdf library
370 * Fix a bug where an explicit hyphen prevented hyphenation for the
371 whole rest of the paragraph
373 * Internal font copying forgot to copy the last font dimen
375 * os.selfdir() is now documented
377 * patch quad (\fontdimen6) in \letterspacefont to be compatible
380 * Multi-page pdf inclusion was very slow in 0.63.0
382 * Some extra checks added to the handling of glue_spec node
385 * Some node.prev pointers have been corrected (but this is not
388 * A small fix to lpeg 0.9.
391 ==============================================================
392 Luatex beta-0.63.0 was released 20100909
393 ==============================================================
397 * Drop tex.ht[], tex.wd[], tex.dp[].
399 * Drop OCP support (and associated primitives).
401 * Add tex.catcode[], tex.lccode[], tex.sfcode[], tex.uccode[],
402 tex.mathcode[] and tex.delcode[] and associated functions.
404 * Add CIDset tables to the output pdf where appropriate.
406 * Added a 'string' field to late_lua nodes on the lua side. This
407 field does not convert the assigned string to a tokenlist.
409 * The result of fontloader.open() now has some virtual accessors
410 (as well as fontloader.to_table).
412 * There is now a `short reference' in the manual folder
417 * Fix a crash on an empty font (bugreport #468).
419 * Fix a crash for extremely long pattern arguments.
421 * Fix a crash on bad virtual character arguments in lua.
423 * Fix hyphenation exceptions.
425 * Prevent linebreak between initial local_par paragraph whatsit
426 and a following skip (bugreport #437).
428 * Fix placement of scripts on textstyle big operators in MATH
429 fonts (bugreport #466).
431 * Fix a crash on the return value of MPlib's 'postscript'
434 * Fix a crash on \leftghost & \rightghost in math mode.
436 ==============================================================
437 Luatex beta-0.62.0 was released 20100823
438 ==============================================================
442 * LuaTeX now uses libpoppler (0.12.4) instead of xpdf.
444 * All backend functions now report what file they were searching
445 for whenever a file cannot be found.
447 * Input-ed lua files are now mentioned in the fls file if
448 the --recorder switch is specified on the command line.
450 * Paragraph indentation hlist nodes and hlist and vlist nodes
451 generated by alignment rows and cells now have a subtype
452 (3 for indent box, 4 for rows/columns, 5 for cells).
454 * The 'epdf' lib is in active development and still growing.
456 * The 'fontforge' table is finally removed (was deprecated
461 * A new mplib import fixes two bad bugs in mplib:
462 - string equality test was wrong
463 - type declarations could delete pre-existing variables
465 * PNG images with transparency could create random size
466 differences in the generated PDF.
468 * In some special cases, font expansion could cause wrong
469 spacing in the generated PDF.
471 * \letterspacefont was broken since a very long time.
473 * The node subtype of the \leftskip and \rightskip glues was
476 * Some memory leaks have been removed.
478 * Various manual fixes.
480 ==============================================================
481 Luatex beta-0.61.0 was released 20100728
482 ==============================================================
486 * New lua library 'epdf' for introspection of PDF inclusions,
487 see the manual for details.
489 * Mplib version 1.502 is now included (which is still beta,
492 * new "finish_pdffile" and "pre_dump" callbacks.
494 * new function pdf.pageref()
496 * In the lua 'tex' library: assignment to internal glue
497 parameters is now allowed.
499 * New lua function tex.error().
503 * Fix for crashes on fonts with bad Panose values.
505 * Fix for a box placement bug that could sometimes cause text
508 * Fix for a few small PDF/A1-a compatibility bugs.
510 * Fix \letterspacefont.
512 * Fix \Ustopdisplaymath in combination with aligned displays.
514 * In math delimiters, the last of a chain of predefined sizes
515 was always ignored if there were also extensible parts.
517 ==============================================================
518 Luatex beta-0.60.2 was released 20100701
519 ==============================================================
523 * Various small portability fixes, especially for non-gcc
526 * Updated synctex from Jerome Laurens.
528 * fix bug #406: \pdfliteral hinders hyphenation.
530 * fix pdf overprinting bug (related to \pdfliteral).
532 * patch from Akira Kakuto that ensures that only absolute commands
533 that are inside the %PATH% will be executed in win32's restricted
536 * fix a buffer overflow in luafontloader.
538 * fix cross-platform share-ability of generated formats.
540 * fix a few typos in the manual.
542 * fix trashing of the null glue spec by attribute reference code.
544 * documented the deprecated state and brokenness of otp processing.
547 ==============================================================
548 Luatex beta-0.60.1 was released 20100428
549 ==============================================================
553 * renamed node.skipable() to node.skippable().
555 * More git discovery patches in getluatexsvnversion.sh.
557 * Added --warnings=[no|min|yes|max|all] option to build.sh.
559 * While cross-compiling, build.sh now adds an extra linker switch
560 to allow win32 exes to use 3G instead of 2G of virtual memory.
564 * os.exec() & os.spawn() handled the environment differently from
565 os.execute() on Win32 (patch from Tomek)
567 * Builds with --enable-ipc were broken.
569 * Assigning and acquiring \fontdimen s from TeX code was broken.
571 * An initial attempt at fixing bug #372 (\predisplaydirection).
573 * An attempt to fix \eqno/\leqno placements in mixed direction
576 * Our local xpdf patch is reverted, it is not needed any more.
578 * The os.selfdir variable was not documented, as well as broken
581 * Fix "\input tikz hello \bye" bug, plus fix one sign error.
583 * Fix handling of lua script files with UNC names.
585 ==============================================================
586 Luatex beta-0.60.0 was released 20100404
587 ==============================================================
591 * os.name now knows about CYGWIN (from Elie Roux)
593 * Internal handling of direction specifiers is faster now.
595 * Each glyph node now has three new virtual read-only fields:
596 width, height, and depth (values in scaled points, of course)
598 * There are new functions node.protrusion_skipable() and
599 tex.badness() (useful for paragraph breaking in lua)
601 * Also new: tex.linebreak(). See the manual for details.
603 * All lua errors now report file and line numbers to aid in
606 * Import of metapost 1.211.
608 * pdf.pdfcatalog will be replaced soon by the new pdf.catalog
609 pdf.pdfinfo will be replaced soon by the new pdf.info
610 pdf.pdfnames will be replaced soon by the new pdf.names
611 pdf.pdftrailer will be replaced soon by the new pdf.trailer
613 * pdf.pdfmapfile and pdf.pdfmapline are replaced by the new
614 pdf.mapfile() and pdf.mapline() functions. (a function interface
615 fits these parameters better because they never return anything).
617 * New read-write lua variables: pdf.pageattributes, pdf.pageresources,
620 * getluatexsvnversion.sh now correctly detects git-svn and still
621 manages to find a valid SVN revision number (from Patrick Gundlach)
623 * Many of the source files have been converted to CWEB.
627 * GNU libtool is now used to solve the various technical issues with
628 dynamic loading of lua modules.
630 * Error detection in scan_integer_part was wrong due to missing
631 initialization of OK_so_far (spotted by Javier Mugica)
633 * Synctex was broken in 0.51-0.52.
635 * \lastlinefit was broken since ... well, nearly forever.
637 * Reading of binary files with length zero was broken.
639 * Trapping of unitialized rules (this was for sloppily created
642 * pdf.immediateobj('streamfile') was broken on 64-bit platforms.
644 * tex.linebreak did not take the given left and right skip, but
645 instead used the current TeX-side values (bug #356).
647 * the found 'MAKE' command in build.sh is now fed into configure to fix
648 problems with that not finding GNU make even when it is actually
651 * dofile(<nil>) and loadfile(<nil>) in batch mode now give an
652 error and continue instead of pointlessly waiting for user input.
654 * Reverted commit #3417 (the buildpage experiment) as it causes bad
655 things to happen when items are waiting during page breaks.
657 * Overrule loaders[4] in --safer mode, make require() behave
658 closer to normal lua 5.1, and add some nicer error messages
659 (based on an email and patches from Manuel Pegourie-Gonnard)
661 * Added an extra sanity check for GDEF loading in luafontloader,
662 based on a crash caused by Linux' AkaashNormal.ttf.
665 ==============================================================
666 Luatex beta-0.52.0 was released 20100316
667 ==============================================================
671 * Various small manual improvements.
673 * A better version of getluatexsvnversion.sh, from Tomek.
675 * node.copy_list() now allows the second (optional) argument to
678 * An import of the current state of the texlive repository
679 (kpathsea and build system).
683 * An attempt fix for bug #345 (math kerning is not perfect): when the
684 current math font is a new math font, check against \catcode <cur_c>
685 == 11 to suppress the italic correction, instead of looking at
686 the value of space(<cur_f>).
688 * There is a new <tfmtable> key: 'units_per_em' (defaults to 0).
689 This is part of a fix for bug #200 (Problem with CFF fonts having
690 em-size other than 1000): there is a special correction to the
691 embedded cff font itself and the font scale if the font to be output
692 is opentype or type1 in unicode encoding and the 'units_per_em
694 <tfmtable>.units_per_em has to be passed back to luatex from
695 the lua font loading code for this to work.
697 * A fix for bug #314 (problem with pk file).
699 * lua code can no longer change the internal preallocated glue_spec
700 nodes (as that resulted in weird spacing bugs). For this, glue_specs
701 now have a new field: 'writable'. If that field is false, a copy
702 has to be made of the glue_spec instead of doing an assignment
705 * Setting of \textdir inside the output routine could trash output
706 on following pages due to a lingering internal variable.
708 * \pdfthread crashed because the arguments were handled in reverse
711 ==============================================================
712 Luatex beta-0.51.0 was released 20100312
713 ==============================================================
717 * Various small manual improvements.
718 * The backend message "cannot open Type 1 font file for reading"
719 now reports which Type1 font it was looking for.
720 * Fontforge clears some font names at loading time that will be
721 refilled in at font generation time, but the fontloader should not
722 do that. Patch from Khaled Hosny.
723 * New synctex code imported from TeXLive.
724 * luamd5/md5.h is renamed to luamd5/luamd5.h to avoid confusion.
725 * Embedded mplib is now 1.209.
726 * Some experimental tweaking of buildpage_filter, see the manual
728 * Luatex now detects kfreebsd (from Alan Braslau)
729 * The new lua function tex.sp() converts a string to a number
730 representing scaled points.
731 * There is now support for revision numbers in the banner and stats
733 * The command line help and manual documentation page is extended.
734 * node.hpack() now also accepts "cal_expand_ratio" and "subst_ex_font"
736 * node.hpack() and node.vpack() now give back the badness of the box
737 as second return value.
738 * node.copy_list() now allows a second (stop) argument, this stopper
740 * new lua functions in lfs: lfs.readlink() and lfs.shortname().
741 * new lua function tex.tprint() that can combine multiple catcode
742 regime prints in one function call.
743 * new lua sub-table: tex.nest[] (read/write access to the semantic
745 * New lua functions in kpse: kpse.lookup() and kpse.version(). See
746 the manual for more details.
747 * New lua function tex.shipout().
751 * There problems in the pdf output for Type3 (pk) fonts.
752 * Fix a bug that allowed bad commandline quoting.
753 * Fix a bug that sometimes caused crashes when \pdfprotrudechars.
754 * The build script now exports CONFIG_SHELL to avoid problems with
756 * The was a bug in the generated /Image /ProcSet.
757 * status.font_bytes reported the wrong value.
758 * Lots of compiler warnings are removed (thanks Javier Mugica).
759 * Patch to fontloader.info() to accept filenames with embedded
761 * Fix a \write error with docstrip package.
762 * Fixed a crash on AdobeMyungjoStd-Medium.otf.
763 * Fix coco stack overflows, needed for lpeg.
764 * \pdfcompresslevel wasn't initialized for early immediate objects.
765 * Fix for slanted fonts when HZ was on (slant angle was multiplied).
766 * When concatenating content streams, put a space between them.
767 * Allow pfb lines to end with \r as well as \n (for msam10.pfb).
768 * Fix the internal string->scaled point conversion in the lua
770 * Memory leaks in the fontloader removed, thanks to patches from
772 * Fix a crash caused by the combination of coroutines and font.each().
776 * Support for Type3 .pgc files (nobody used them).
778 ==============================================================
779 Luatex beta-0.50.0 was released 20091224
780 ==============================================================
784 * Fonts now listen also to the 'extend' key in the lua font
785 metrics table, and the processing for this is done via de
786 pdf text matrix instead of via the font matrix, which means
787 it now works for all font types.
789 * The embedded Metapost library is now at version 1.209.
793 * It is no longer possible for fonts from embedded pdf files
794 to be replaced by / merged with the document fonts of the
795 enveloping pdf. This regression may be temporary, depending
796 on how the rewritten font backend will look after beta 0.60.
800 * Use of \middle confused the \mathstyle operation.
802 * \pdfcolorstack handling was broken.
804 * node.unset_attribute() had a bug whereby it inverted the
805 requested result in some cases (the node on which the unset
806 was called was sometimes the only node at the current level
807 that *kept* the attribute).
809 * During font expansion, the internal font copy had one character
810 information object less than the original, resulting in the
811 disappearance of a glyph in some fonts when font expansion
814 * Placement of operator scripts of OT MATH fonts is adjusted
815 to be conformant with Word's logic where the italic correction
816 is only used to tuck in the subscript and for nothing else.
818 * luafontloader.open() no longer writes directly to stderr in
819 case of internal font errors.
821 * Any <pdf_refobj_node>.objnum could not be assigned to.
823 * The lua 'pdf' table could not be assigned to.
825 * The lua 'md5' library was returning incorrect results on
826 64-bit architectures.
828 * Luatex now compiles on GNU Hurd systems.
830 * Fix segfault when embedding stream file object (these
831 backend segfaults were a side-effect of the string pool
834 ==============================================================
835 Luatex beta-0.47.0 was released 20091218
836 ==============================================================
840 * New read-write lua variables pdf.pdfcatalog, pdf.pdfnames,
841 pdf.pdfinfo, pdf.pdftrailer
843 * The horizontal mode nodes that are added to lines during line
844 breaking now inherit the attributes from the first and last node
845 inside the created line.
847 * The new function pdf.registerannot(<number>) registers an
848 annotation object number to be included in the current
851 * The variables <metrics>.Mathconstants.FractionDelimiterSize
852 and <metrics>.Mathconstants.FractionDelimiterDisplayStyleSize
853 are added to the font table. This allows proper setting of the
854 size parameters for TeX's ...withdelims math primitives.
856 * The internal representation of the string pool is reorganized
857 (the pool of string characters is now allocated dynamically),
858 and as a side-effect the lua variable status.init_pool_ptr
859 is deprecated and will be removed in a later version. Also,
860 status.pool_ptr now simply returns the current number of bytes
861 in use for string characters.
863 * There are new lua variables pdf.pdfmapline and pdf.pdfmapfile
864 (write-only strings that mimic \pdfmapline and \pdfmapfile).
866 * \pdfobj data and attribute are now stored as C strings instead
867 of as token lists (this should speed up cases with a lot of data).
869 * Artificially slanted fonts now work via the pdf text matrix
870 (instead of adjusting the actual font) so that it now also
871 works for non-Type1 fonts. The lua <metrics>.slant font key is
872 now obeyed in all cases.
874 * The lua function font.id(<string>) returns the internal font id
875 number belonging to a control sequence name.
877 * Pdf image inclusion is optimized such that objects from an
878 external pdf will now be included only once even if they are
879 referenced from multiple inclusions.
883 * Protrusion for non-TLT documents did not work properly for
884 the hyphenation character.
886 * \lastbox could not remove the paragraph indent box for non-TLT
889 * Pdf images (\pdfximage) are no longer kept open during the
890 whole run, but closed and reopened. An error is raised if
891 the file has changed between \pdfximage and \pdfrefximage.
892 This prevents the 'too many open files' error when lots of
895 * On Win32 Pdf image files are locked during the time that it is
896 open, to prevent unnoticed file changes by external sources.
898 * Compilation now again works on FreeBSD.
900 * Format sharing between 32-bit and 64-bit architectures was
903 * Unsetting attributes from lua could sometimes result in
904 the unset state persisting beyond the current group level.
906 * If something went wrong in the scanning of pdf action items,
907 the error message reported the current primitive name
910 * Luatex would crash on non-existant pdfs that were referenced
911 from map file entries.
913 ==============================================================
914 Luatex beta-0.46.0 was released 20091126
915 ==============================================================
919 * The build.sh script now has better support for new MacOSX-es
922 * Luatex now has experimental support for dynamic loading of
923 external compiled lua libraries. Building luatex and loading
924 external .so/.dll files is reported to work on Windows,
925 linux and osx, other platforms are still unknown.
927 * pdf.obj{type="stream"} no longer converts its argument to and
928 from a tokenlist. This allows the use of binary data in the
929 "string" argument. Such data does still have to hidden from
930 the normal file parser by putting the code in a dofile()
931 or by using string.char(), though.
935 * Luatex 0.45.0 was not able to find truetype nor opentype fonts
936 if there were no callbacks defined (patch from Pawel).
938 * 0.45.0 printed the user input instead of the full pathname
939 for \input-ed tex files.
941 * The TFM reader now rejects fonts with tfm names that are
942 longer than 255 characters because such font names cannot
943 be stored in a DVI file.
945 * The combination of \immediate\pdfxform followed by a later
946 \pdfrefxform could cause broken pdf output files because
947 the box used for the form could have been freed and even
948 reused already at that moment in time, sometimes resulting
949 in an invalid transformation matrix.
951 * The placement of super- and subscripts for displaystyle
952 \int's in CambriaMath is now better than before. It still
953 needs a tweak to the metrics though: in the current version,
954 the italic correction has to be substracted from the width
955 of the integral sign to get correct placement (context mkiv
956 does this). to be continued ...
958 ==============================================================
959 Luatex beta-0.45.0 was released 20091118
960 ==============================================================
964 * Loading big OTF fonts via lua is now much faster than before,
965 at the expense of a bit of precision loss in the calculated
968 * Two new token lists are provided: \pdfxformresources and
969 \pdfxformattr, as an alternative to \pdfxform keywords.
971 * \input and \openin now accept braced filenames.
973 * The \endlinechar can now be set to any value between 0 and 127.
975 * Luatex can now optionally use kpathsea to find lua require()
978 * The new primitives \aligntab and \alignmark are aliases for
979 the use of & and # in alignments.
981 * \pdfrefximage [width <dimen>] [height <dimen>] [depth <dimen>] <imageref>
982 overrules settings from \pdfximage for this \pdfrefximage call only
984 * The print precision for small numbers in lua code (tostring)
987 * Akira Kakuto suppled a patch that restricts writing to files
988 with names such as latex.bat etc. (on windows only)
990 * (un-feature): from now on luatex now only handles 4 direction
991 specifiers: TLT (latin), TRT (arabic), RTT (cjk), and LTL
992 (mongolian). The other directions now generate an error.
994 * (un-feature): xpdf's automatic lower- and uppercasing retry attempts
995 for nonfound image pdf files has been removed.
997 * The callbacks hpack_filter, vpack_filter and pre_output_filter
998 pass on an extra string argument for the direction, when known
999 (nil == use default).
1001 * The lua functions node.hpack(), node.vpack() and node.dimensions()
1002 now accept an optional direction argument (not given == use default).
1004 * \pdfrefxform [width <dimen>] [height <dimen>] [depth <dimen>] <formref>
1005 scales a form object; similar principle as with \pdfximage: depth alone
1006 doesn't scale, it shifts vertically.
1008 * A change to the relative ordering inside font name discovery for use
1009 by the backend: now it tries <f>.psname first, as that is much less
1010 likely to contain spaces.
1012 * For ttc fonts, now the used subfont name and its index id are printed
1013 to the terminal, and if the backend cannot find a ttc subfont, the
1018 * Prevent crashes for lua-loaded fonts without a (tfm) name.
1020 * Remove spurious newlines in the output pdf that could be the
1021 result of using \pdfximage for an included pdf figure too early.
1023 * Full font embedding for wide otf and ttf fonts now really
1024 works (older versions only pretended that it did work).
1026 * node.dimensions() sometimes continued past the 'stop' node.
1028 * Images inside virtual fonts were broken.
1030 * The processing of \language=-1 was wrong, resulting in
1031 hyphenation attempts even though there was no proper language
1034 * Fix for finding files in --output-directory.
1036 * Fix for handling of --file-line-error.
1038 * tex.box[] assingments are now checked to make sure the assigned
1039 node has the right id (hlist or vlist).
1041 * show_node_list (as in \showbox) produced spurious local_par
1042 whatsit prints in the output after direction nodes.
1044 * The handling of pdf literals has been sped up.
1046 ==============================================================
1047 Luatex beta-0.44.0 was released 20091027
1048 ==============================================================
1052 * libpng is now 1.2.40.
1054 * hlist nodes now have a subtype to distinguish hlists generated
1055 by the paragraph breaking, explicit \hbox commands, and other
1056 (as-yet-undefined) sources.
1058 * \pdfobj now has an extra optional keyword: 'uncompressed',
1059 which forces the object to be written to the PDF in plain
1060 text (see the manual for the exact details).
1062 * The lua file from the luamd5 library (which provides the
1063 md5.hexsuma() function) is now embedded in the executable.
1067 * \latelua now works in DVI mode again.
1069 * status.output_file_name could crash when used too soon.
1071 * In 0.43, rules were not output at all in DVI mode.
1073 * \leavevmode\penalty-10000\penalty-10000 crashed luatex.
1075 * the API of margin kern nodes to lua was using the wrong
1076 fields in the nodes.
1078 * A few fixes to the manual.
1080 * PDF Xref stream dicts were slightly non-conformant.
1082 * There was too much space between two consecutive math displays
1083 (this bug was inherited from Aleph)
1085 * Synctex was broken (thanks, Akira)
1087 * Font mark classes were handled incorrectly by the fontloader
1090 * There was a crash possible with certain types of named PDF
1093 * Math delimiters and large operators in new MATH fonts no
1094 longer apply the italic correction (this fixes placements
1095 of super- and subscripts on such items for those fonts).
1097 * The converter from lua strings to token lists (for the node
1098 interface) sometimes generated invalid tokens.
1100 * CFF (OpenType) fonts now listen to 'embedding="full"'. TTF
1103 * Font tables with 'embedding="no"' would cause luatex to crash.
1105 * \pdfobj file {} failed to find the file if there was no lua
1108 * An optimization in MS Mincho caused luatex to crash.
1110 ==============================================================
1111 Luatex beta-0.43.0 was released 20090819
1112 ==============================================================
1116 * There is a new allowed key in the table trhat is returned
1117 by lua-loaded fonts: <f>.psname. This value should be set
1118 to the original PostScript font name of the font. Fonts inside
1119 dfont and ttc collections are fetched using this field
1120 (if it is missing, <f>.fullname will be used instead).
1122 * It is now possible to use Apple dfont font files
1123 (those that contain at least one outline font).
1125 * \latelua is now allowed inside leaders.
1127 * There is a new callback: process_output_buffer, from Manuel
1128 Pégourié-Gonnard. This callback is called just before
1129 \write acts, so it can be used to alter the file encoding
1130 of text output files.
1132 * There is a new node.dimensions() function, which calculates
1133 the natural size of (part of) a list of nodes.
1135 * The new primitive \gleaders provides 'globally aligned'
1138 * The DVI and PDF backends now share much code internally.
1140 * The embedded MPlib is now 1.207.
1142 * libpng is now 1.2.39.
1146 * We fixed lots of anonymous bugs introduced in 0.42.0 (as expected)
1148 * fontloader.info() errors are no longer fatal, the function now
1149 just returns a nil,"error string" pair.
1151 * Automatically inserted kerns for \accents are now once again
1152 valid word ends, as in \TEX.
1154 * Fixed the placement of math displays in mixed direction
1157 * The \pdfcompresslevel is now dynamic again.
1159 ==============================================================
1160 Luatex beta-0.42.0 was released 20090717
1161 ==============================================================
1163 * There is a new node.tail() function
1165 * lua-loaded fonts now support a 'nomath' key to speed up
1166 loading the lua table.
1168 * A bugfix in the ttf reader for the inclusion backend, and
1169 (also in the backend) support for treating ttc files by
1170 pretending they are single ttf fonts (both patches from pdftex)
1172 * Add Khaled Hosny's man page to the repository
1174 * The \pdfcompresslevel is now effectively fixed as soon as
1175 output to the pdf file has occurred.
1177 * Patched status.filename so that it (nearly) always returns a
1180 * fix '\the\delcode' and disable '\the\odelcode', '\the\Udelcode',
1181 and '\the\Udelcodenum'
1183 * Handle jfifs where either xres or yres is 0 and the other
1184 res is != 0 (from pdftex)
1186 * The single-argument version of lang.hyphenate() was broken.
1188 * Get rid of the \directlua/\latelua number warning.
1190 * The Lua coroutine patch (coco) is now disabled on linux
1191 powerpc architectures (because it caused crashes)
1193 * Removed obsolete pdftex primitives:
1194 \pdfoptionalwaysusepdfpagebox
1195 \pdfoptionpdfinclusionerrorlevel
1199 * The loading speed of large fonts (especially ttf) via the
1200 fontloader library, and the inclusion speed for subsetting
1201 in the backend have both been improved.
1203 * The 'pdf' lua library has been enhanced with various new
1204 functions, see the manual for details.
1206 * BLT and BRT glyph position fixed.
1208 * Various fixes for synctex offsets.
1210 * Support for exotic font string encodings has been removed
1211 from the fontloader library.
1213 * The embedded MPlib is now 1.205.
1215 * libpng is now 1.2.38.
1217 ==============================================================
1218 Luatex beta-0.40.6 was released 20090625
1219 ==============================================================
1221 * Fix two string vs. toks bugs in the lua node interface:
1222 whatsit,annot and whatsit,startlink data assignments were
1223 made directly as strings instead of being converted to tokens.
1225 * Sometimes pdf.print() could be used before the proper structures
1228 * There was a bug in the type codes for the lua package filter
1229 callback: wrong extra info was passed to lua for the alignment
1232 * The math parameters \Umathlimitdownvgap, \Umathlimitdownbgap,
1233 and \Umathlimitdownkern have been renamed to \Umathlimitbelowbgap,
1234 \Umathlimitbelowvgap, and \Umathlimitbelowkern to be more
1235 consistent with the other parameter names.
1237 * The embedded MPlib is now 1.204.
1239 * Handling of UTF-8 hyphenation exceptions has been fixed.
1241 * There were a number of typos in the manual.
1243 ==============================================================
1244 Luatex beta-0.40.5 was released 20090610
1245 ==============================================================
1247 * One of the internal print functions accidentally encoded its
1248 argument string to UTF-8 even though it was already UTF-8.
1250 * Some of the log and terminal UTF-8 output was gibberish.
1252 ==============================================================
1253 Luatex beta-0.40.4 was released 20090609
1254 ==============================================================
1256 * \the\textfont0 returned a number instead of doing a font
1259 * The embedded MPlib is now 1.203.
1261 ==============================================================
1262 Luatex beta-0.40.3 was released 20090608
1263 ==============================================================
1265 * A set of portability fixes for the AIX compiler from Vladimir
1268 * A set of fixes to the synctex support.
1270 * A patch to the build script to prevent installed X11 headers
1271 from being required.
1273 * Some weave (web syntax) fixes from Manuel Pégourié-Gonnard.
1275 * A simplification in luatex.ch (it is now less verbose
1276 about the web2c-specific extensions) from Karl Berry.
1278 * A fix in the handling of UTF-8 (input) file names.
1280 * Hyphenation exceptions were case sensitive in 0.40.2.
1282 * libpng is now 1.2.37.
1284 ==============================================================
1285 Luatex beta-0.40.2 was released 20090603
1286 ==============================================================
1288 * Fix for a compilation warning under Cygwin.
1290 * A complicated bugfix by Hartmut for a rounding problem in the
1291 VF loading that resulted in 'character width mismatch in font
1292 XY.vf ignored' messages at large load sizes
1294 * The embedded MPlib is now 1.202.
1296 * The post_page_number callback was accidentally run when
1297 shipping out xforms as well as during actual pages.
1299 * When a math accent char doesn't have a bot_accent placer,
1300 luatex now uses the top_accent placer, if present.
1302 * A crash caused by \Uroot .. {<list>}{...} is fixed
1304 * A portability fix for solaris 8 sparc using sun studio
1305 compiler, and one for glibc > 2.9.90
1307 * luatex -ini now sets the \catcode of the BOM character to
1310 * Kpathsea is updated from TeXLive, giving four extra types of
1311 searchable files: 'font feature files','cid maps','mlbib',
1314 * libpng is now 1.2.36
1316 ==============================================================
1317 Luatex beta-0.40.1 was released 20090508
1318 ==============================================================
1320 * Vertical placement of root radicals and degrees is fixed.
1322 * The use of \pageleftoffset could deviate from \hoffset
1325 * LuaTeX now issues a warning if \pagedir !- \bodydir during
1328 * The previous crash in font.read_tfm() was still not quite
1331 * The Web2C version is now also printed in the --version
1332 and --credits output.
1335 * There is a new MPlib 1.200 release candidate with a few minor
1338 * The xpdf library is updated to patch level 3.
1340 * New imports to the build system, from texlive. In particular,
1341 there is now configure-level support for building with
1342 libpoppler and support for building under cygwin 1.7 is added.
1344 ==============================================================
1345 Luatex beta-0.40.0 was released 20090422
1346 ==============================================================
1348 * The embedded MPlib is updated to version 1.200.
1350 * Texlua would crash if run font.read_tfm() was used.
1352 * Luatex would crash on empty \patterns.
1354 * Lots of small C code cleanups.
1356 * \textdir inside a \hbox dir *** was wrong earlier.
1358 * 0.39.0 introduced a bug that would make luatex crash whenever
1359 font expansion was used.
1361 * Font tables returned by define_font can now have a key named
1362 'cache' that controls the internal lua font table caching.
1364 * There is no longer a need for an explicit --progname if there
1365 is no input file given.
1367 ==============================================================
1368 Luatex beta-0.39.0 was released 20090415
1369 ==============================================================
1371 * iniluatex will from now on start up with only the TeX82 primitives
1372 and \directlua, everything else has to be bootstrapped via
1373 tex.enableprimitives(). This change was planned for 0.40.0,
1374 but *now* is the time to test it.
1376 * A bugfix for \primitive in various expandable contexts,
1377 and \primitive now generates an error message when the
1378 argument is not actually a primitive's name.
1380 * There was a bug found in the math accent handling.
1382 * Large math operators are now treated like extensible characters
1383 in the sense that they can be composed of segments.
1385 * The extra assign- and restore tracing information from eTeX
1386 had a massive bug because of a dangling else in the pascal web.
1387 As a side-effect of fixing this bugs, all such potential errors
1388 in the pascal web have been fixed (for now).
1390 * The math parameters can now be set and queried from lua code
1391 via the new tex.setmath() and tex.getmath() functions.
1393 * Reflection in a \hbox was broken.
1395 * There was a leak of direction nodes in the paragraph builder.
1397 * The font backend now does a small peek to differentiate
1398 truetype and postscript style opentype fonts. This fixes
1399 the "Can't find CFF table" bug for otf's with truetype outlines.
1401 * Parameters and registers can now also be assinged to globally
1402 from lua (see the manual for details).
1404 * It is now possible to query the current math style while a
1405 formula is still being constructed by using the new read-only
1406 value \mathstyle. Associated is the new command \Ustack that
1407 is to be used as a prefix for {.. \over ..} and friends.
1408 See the manual for more information.
1410 * The embedded MPLib is brought up to date with the current
1411 metapost repository (version 1.110 and a few small patches).
1413 * Luatex can now handle two breakpoints inside a single ligature
1414 (like for the functional word of-f-ice). The solution is not
1415 perfect yet, but the chance of missed hyphenation points in
1416 actual documents should now be negligible.
1418 * Some speedups in the font loading code, and in the handling of
1419 pdf_literal nodes that are set from within Lua code.
1421 * Some source code and manual cleanup, as usual.
1423 ==============================================================
1424 Luatex beta-0.38.0 was released 20090410
1425 ==============================================================
1427 * tex.enableprimitives() had a bug were previously defined (but
1428 currently undefined) control sequences prevented the creation
1431 * The special calling format callback.register('name', false)
1432 not only disables the callback, but also the builtin code it
1433 is supposed to replace.
1435 * Empty \localleftbox and \localrightbox -es are now suppressed.
1437 * Support for <f>.MathConstants.SubscriptShiftDownWithSuperscript
1438 was added, to solve the lack of "sub2" in OpenType math.
1440 * Luatex now supports horizontal super- and subscript placement
1441 corrections via the OpenType MATH mathkern table. See the
1444 * node.write() no longer copies its argument node list before
1447 * There are six new primitives that are verbose forms
1448 of one and two byte special tokens:
1449 \Usuperscript \Usubscript
1450 \Ustartmath \Ustopmath
1451 \Ustartdisplaymath \Ustopdisplaymath
1453 * The attribute node leaks in math mode and alignmetns have been
1456 * The 11 simple math noads are now combined into a single "noad"
1459 * Static linking against libstdc++ is working once again.
1461 * There is a small fix in the keyword scanner to solve the
1462 problem of 'Runaway ... while scanning ???' that could happen
1463 for some primitives.
1465 * Lua now also has the "architecture independent bytecode"
1468 * Lua is updated to version 5.1.4 with coco patches 1.1.5, and
1471 * Some TRT/TLT backend bugs are fixed.
1473 * Various manual updates.
1475 ==============================================================
1476 Luatex beta-0.37.0 was released 20090331
1477 ==============================================================
1479 * Luatex now implements shell_escape = 'p', a new feature
1480 in web2c that intends to make \write18 more secure. As
1481 a side-effect, if luatex is used for typesetting, it will
1482 now also apply shell_escape = 'p' and shell_escape = 'f'
1483 to the lua functions io.popen(), os.execute(), os.exec(),
1485 Nothing has changed for the case where luatex is used as
1486 a script interpreter.
1488 * Attributes can now have negative values. The special value
1489 for 'unset' is lowered to -0x7FFFFFFF (it used to be -1).
1491 * The lua 'kpse' library now has an object-oriented interface
1492 as companion to the procedural interface. This is useful for
1493 e.g. controlling the discovery of mplib files.
1495 * The new internal integer parameter \outputbox allows setting
1496 of the output box number (default: 255, max: 65535)
1498 * The new primitives \Udelimiterunder and \Udelimiterover
1499 complete the set of 'StretchStacks' for OpenType Math.
1501 * Fixed a bug in font string conversions on the Macintosh that
1502 resulted in warnings about 'unaligned pointers being freed'.
1504 * Khaled Hosny spotted a bunch of manual errors.
1506 * There was bug in the width of math_accent objects when
1507 there were super- or subscripts attached to the accentee.
1509 * In PDF mode, TRT \leaders were bugged.
1511 * The source tree now uses the new texlive build system that
1512 Peter Breitenlohner created.
1514 * There is now a single build.sh instead of four separate
1515 ones. It has a few options:
1516 --make : only make, no make distclean; configure
1517 --parallel : make -j 2 -l 3.0
1518 --nostrip : do not strip binary
1519 --mingw : crosscompile for mingw32 from i386-linux
1520 --ppc : crosscompile for ppc osx on intel osx
1522 Note: --parallel still sometimes causes crashes due to
1523 timing errors, so use that option with care.
1525 * Many compiler warnings have been removed (but not all yet).
1527 ==============================================================
1528 Luatex beta-0.36.0 was released 20090323
1529 ==============================================================
1531 * The included fontforge code is stripped considerably, and
1532 the lua table to access the code is renamed to 'fontloader'.
1533 The old name ('fontforge') will remain present for a while,
1534 but will eventually go away.
1536 * New lua functions: tex.primitives(), tex.extraprimitives,
1537 tex.enableprimitives(). This is a prelude to a big change
1538 in the next beta: iniluatex will from now on start up with
1539 only the TeX82 primitives and \directlua, everything else
1540 has to be bootstrapped via tex.enableprimitives().
1541 See the manual for more details.
1543 * Support for multiple lua states has been removed, and at the
1544 same time support for adding name ids to lua chunks has been
1545 added. See the manual for more details.
1547 * More changes to the PDF backend to make it support non-latin
1548 directions (form and image placement, vertical typesetting,
1551 * The kpathsea library is updated. Highlights: cleaner build
1552 process (thanks to Peter Breitenlohner), cleaner mingw32
1553 (cross)compilation support, and a new reentrant API.
1555 * Some possible endless loops within extended delimiters in
1556 math mode are now trapped.
1558 * Movements inside VF font characters were considerably off
1559 due to a wrong conversion routine.
1561 * Error handling for \outer has been reinstated, but can be
1562 suppressed via the new primitive \suppressoutererror.
1564 * The new primitives: \suppresslongerror and \suppressifcsnameerror
1565 that can be used to suppress errors for \par in non-long macros
1566 and for non-expandable objects inside \ifcsname ... \endcsname,
1569 * New lua function: node.vpack() via a patch from Khaled Hosny
1570 that also improves error handling in node.hpack().
1572 * Fix the typo that caused \charic (instead of \charit)
1573 to be defined as a primitive.
1575 * Suppression of hyphenation via \hyphenchar\font=-1 now works
1578 * The lua functions tex.print(), tex.sprint(), tex.write() now
1579 accept an array of strings as well as vararg list of strings
1582 * A change to be build process: luatex.p is no longer split
1583 int smaller pieces before running the C compiler.
1585 * Melissa O'Neill contributed a bugfix to the Type1 font
1588 * A bunch of smaller bugfixes and cleanups (as usual).
1590 ==============================================================
1591 Luatex beta-0.35.0 was released 20090224
1592 ==============================================================
1594 * The math handling portions of LuaTeX are converted to C code,
1595 and extended to support Unicode math. There are a great many
1596 related changes, see the new Math chapter in the manual for
1599 * A nasty bug in the paragraph breaking routine was fixed.
1600 (All lines except the first one were believed to be wider then
1601 they really were. This affected which nodes were considered
1602 as active breakpoints)
1604 * Various changes to the PDF backend to make it support non-latin
1607 * Fixed the behaviour of the page offsets. Placement of the output
1608 on the physical page should now work correctly in all directions,
1609 both in DVI and PDF.
1610 There now are \pageleftoffset and \pagetopoffset primitives,
1613 * fontforge.apply_featurefile() was broken since 0.31.0
1615 * The lua profiler library is added.
1617 * The included lua filesystem library is now 1.4.1.
1619 * Reading of pk files fixed.
1621 * An optional space afer a <direction specifier> for \textdir c.s.
1622 is ignored from now on.
1624 * \bodydir and \pagedir can now be (re)set even after the first
1625 page has been output.
1627 * The new callback mlist_to_hlist can be used to intercept the
1628 normal conversion of math lists to horizontal lists.
1630 * The programs ttf2afm and pdftosrc are removed from the luatex
1631 distribution (these belong to pdftex).
1633 * fontforge.open() now uses much less memory when opening large
1636 * The included libpng is now 1.2.35.
1638 * Quite a lot of smaller bugfixes and cleanups (as usual).
1641 ==============================================================
1642 Luatex beta-0.31.3 was released 20081229
1643 ==============================================================
1645 This release has a bunch of updates from the development trunk
1646 (#1657-1670,1677,1678,1680,1685,1687).
1648 * Closing of files opened by \externalocp.
1650 * Fix for a locale-related bug that make PDF generation fail
1651 with a "Parsing CFF Dict failed" message when including
1654 * The included metapost is now version 1.102.
1656 * PDF rules in vertical modes in RL direction where output
1657 in the wrong direction
1659 * Fix for a crash on Apple fonts that contain a 'bsln' table.
1661 * The handling of the second argument to fontforge.open() was
1664 * The included libpng is now 1.2.34
1666 * Handling of ttc files on Windows was broken
1669 ==============================================================
1670 Luatex beta-0.31.2 was released 20081209
1671 ==============================================================
1673 Besides fixing building issues, this release has
1675 * A small fix for a crash that could happen when using
1678 * A fix in the format of fontforge.to_table output.
1679 (In 0.31.1 <font>.lookups was near-empty; the lookups
1680 were accidentally output as part of the gpos table).
1682 ==============================================================
1683 Luatex beta-0.31.1 was released 20081209
1684 ==============================================================
1686 fixed a bunch of compilation errors on various platforms, but
1687 with no other visible changes.
1690 ==============================================================
1691 Luatex beta-0.31.0 was released 20081205
1692 ==============================================================
1694 This is just an intermediate release so that some testing can be
1695 done on the updated fontforge embedding.
1697 * There are new fields being generated by fontforge.to_table(),
1698 and one or two old ones have been removed. These fields are /
1699 will be documented in the manual, but very briefly:
1701 - MATH table and associated information are now exported
1702 (the main reason for the new fontforge code)
1703 - Baseline data is now exported
1704 (perhaps usable in lua code)
1705 - Multiple Master / Glyph variation data is now exported
1706 (but useless, for now)
1707 - Mac Feature (AAT) information is now exported
1708 (perhaps usable in lua code)
1709 - If (lookup) names were saved via the PfED table, these
1710 will the exported instead of the default, generated names.
1711 (as requested by Yannis)
1713 * dfont is now treated as an archive format just like ttc
1714 when it comes to fontforge.info(). NOTE: that does not mean you
1715 can actually use them, because the backend doesn't know
1716 yet how to embed dfont fonts in the PDF, that is on the
1717 TODO list for the next big beta (0.40.0).
1719 * The executables are a lot larger than before. That is because
1720 much more of fontforge is included than before. Likely this
1721 will stay this way, because this makes upgrading the ff code
1722 much easier, and it means that luatex/FF potentially
1723 understands more font formats (after upgrading the backend,
1727 ==============================================================
1728 Luatex beta-0.30.3 was released 20081128
1729 ==============================================================
1731 This release fixes a really big bug, a few smaller ones,
1732 and has updates of png and mplib:
1734 * All hyphenation patterns that were anchored at the start or
1735 end of a word were ignored in luatex versions 0.25.X and 0.30.X
1736 (and possibly even earlier).
1738 * Repeated use of \language=-1 could result in "There is not room
1739 for another language".
1741 * The lua true coroutines patch (Coco) is now disabled on OpenBSD
1742 running on non-intel platforms.
1744 * The lua socket library is patched so that it will now compile on
1747 * Luatex now has libpng 1.2.33 and mplib 1.100
1749 ==============================================================
1750 Luatex beta-0.30.2 was released 20081020
1751 ==============================================================
1753 * The Lua coco change from 0.30.1 is reverted as it gave
1754 trouble on MacOSX. Lua coco on non-intel OpenBSD platforms
1755 is now explicitly turned off.
1757 * The lua file reading speedup in 0.30.1 broke reading of
1758 files larger than 100MB.
1760 * Reading of font-related files was broken when there was a find
1761 callback, but no read callback.
1763 * The texmf.cnf array size setup values were ignored whenever
1764 --lua was given on the commandline (instead of only when
1765 texconfig.kpse_init is set to false).
1767 * glyphs with negative widths resulted in incorrect horizontal
1768 placement (overlapping) of the string in the output PDF.
1770 * Using \latelua could sometimes result in an invalid output PDF,
1771 and the argument token list was expanded too early
1773 * There was a read buffer overrun in the mapfile parser
1775 * There are two new variables in the status table:
1776 status.callbacks and status.indirect_callbacks (execution counts).
1778 ==============================================================
1779 Luatex beta-0.30.1 was released 20081009
1780 ==============================================================
1782 * Invalid return values from the linebreak_filter callback
1783 are now handled gracefully (was crashing)
1784 * a preinstalled ctangle is no longer needed except when
1786 * In 0.30.0, the .notdef fix was incorrectly applied to
1787 truetype / opentype fonts.
1788 * A bunch of all memory leaks is fixed
1789 * In lua, f:read('*a') now uses signicantly less memory
1790 * The number of \catcodetables is now limited to 64KB
1792 * Luatex could crash if there were PDF images with and
1793 without page /Group included on the same page
1794 * Lua coco now always uses setjmp (for OpenBSD compatibility)
1795 * The embedded mplib is updated to the latest svn version
1796 * # marks (characters with catcode 6) are no longer doubled
1798 * Handling the nul character (U+0000) with catcode 13
1800 * Luatex could crash on win32 with an access violation
1801 because there was one predefined language too few
1802 (the one matching \language=-1)
1804 ==============================================================
1805 Luatex beta-0.30.0 was released 20080930
1806 ==============================================================
1810 * Readable \tex internal params that are counts, attrs, or dimens are
1811 now returned as numbers instead of strings, and skips as node objects.
1812 Read-write access to tex's skip registers added: tex.skip[0] etc.
1813 * new callback: 'linebreak_callback' to replace the internal paragraph
1815 * the tex table now supports more readable 'convert' values:
1816 tex.fontname, tex.pdffontname, tex.pdffontobjnum, tex.pdffontsize,
1817 tex.uniformdeviate, tex.number, tex.romannumeral, tex.pdfpageref,
1818 tex.pdfxformname (each takes a number as argument)
1819 * new readable parameter: tex.fontidentifier(number) returns the
1820 \csname associated with that font id
1821 * luatex now outputs \FONT<nr> instead of \^^@ in Overfull/Underfull
1822 messages if the font's id text is zero (like for expanded fonts) (#77)
1823 * luatex --version is split into --version and --credits
1824 * There is now (again) an svn revision number in luatex --version (#91)
1825 * Add support for more read-only internal access from lua:
1826 tex.lastpenalty, tex.lastkern, tex.lastskip, tex.lastnodetype,
1827 tex.inputlineno, tex.badness, tex.pdftexversion, tex.pdflastobj,
1828 tex.pdflastxform, tex.pdflastximage, tex.pdflastximagepages,
1829 tex.pdflastannot, tex.pdflastxpos, tex.pdflastypos, tex.pdfrandomseed,
1830 tex.pdflastlink, tex.luatexversion, tex.Alephversion,
1831 tex.Omegaversion, tex.Alephminorversion, tex.Omegaminorversion,
1832 tex.eTeXminorversion, tex.eTeXversion, tex.currentgrouplevel,
1833 tex.currentgrouptype, tex.currentiflevel, tex.currentiftype,
1834 tex.currentifbranch, tex.pdflastximagecolordepth (#81)
1835 * the old --src-specials are replaced by --synctex (#63)
1836 * the \expanded primitive is backported from pdftex 1.50 (#43)
1837 * luatex now comes with libpng 1.2.32
1838 * experimental: tex.definefont(string, number) associates a
1839 csname string with a font id number
1841 Bugs fixed compared to 0.29.0:
1843 * dashes were exported wrongly by MPlib
1844 * multi-item \discretionaries were broken in various ways (#78, mailinglist)
1845 * read_font_info was sometimes called recursively from lua-loaded
1847 * do_vf was sometimes called on lua-loaded fonts that where
1848 already known to be virtual
1849 * trailing junk in tfm files is now ignored (needed for ecrm fonts)
1850 * pdf_ignored_dimen was initialized too late, breaking \prevdepth
1851 handling and causing output lines to overlap eachother (#72)
1852 * pdf.immediateobj() had a printf-related bug
1853 * the fontname terminal logging is fixed for strange font file names
1854 * lua tex array assignments now listen to the globaldefs setting
1855 (tex.count[0] etc) (#92,partial)
1856 * \parshape was broken (#70)
1857 * there is no longer a ".tex" extension forced on very input file (#74)
1858 * eof() for mapfiles was true one byte too soon (#76)
1859 * out of range \lefthyphenmin and \righthyphenmin settings now actually
1860 disable hyphenation (#90)
1861 * tex.unset_attribute() looked too far ahead when a to-be-unset
1862 attribute id not only did not exist in the node, but was also
1863 higher than the highest set attribute on the node. (#65)
1864 * the parameters attr and page_name of read_image() were swapped
1865 (this broke \pdfimage with attributes)
1866 * tex filenames with spaces in them on the command line are now
1868 * sometimes pfb fonts were included multiple times without valid
1870 * some parts of the pdftex 1.40.9 PNG transparancy hack were still
1871 present and caused transparant png handling to fail
1872 * \localinterlinepenalty and \localbrokenpenalty were broken
1873 * special case catcode tables are now handled better (#23)
1874 * the handling of missing .notdef charstrings in old pfb fonts
1877 ==============================================================
1878 Luatex beta-0.29.0 was released 20080718
1879 ==============================================================
1884 * The embedded pdftex is now 1.40.9 (forthcoming) except for the
1886 - the png transparancy fix is skipped because it is in conflict
1887 with a macro-based solution offered by context mkiv.
1888 - LFS (PDF files > 2GiB) is not working yet.
1889 - Synctex is still missing
1891 * libpng, xpdf, and zlib are updated to their pdftex 1.0.9 levels
1893 * MPlib is updated to 1.090
1895 * The syntax of buildpage_filter is changed to avoid confusion
1896 (and crashes). See the manual for the new calling convention.
1898 Bugs fixed compared to 0.28.0:
1900 * The previous bugfix for \languages skipping numbers was wrong.
1902 * Various compile-time warnings are suppressed
1904 * \pdfsetmatrix was broken
1906 * \pdfsave and \pdfrestore were broken
1908 * Valid user_defined whatsits nevertheless were generating errors.
1911 ==============================================================
1912 Luatex beta-0.28.0 was released 20080630
1913 ==============================================================
1915 There is one new feature:
1917 There is now experimental support for non-trivial discretionaries
1918 following explicit hyphens. In analogy to \prehyphenchar and
1919 \posthyphenchar, there are two new parameters \preexhyphenchar en
1920 \postexhyphenchar. Both new parameters default to zero (nothing).
1921 When set to a nonzero value, the parameter is added to either the
1922 pre- or post- break text. Note that this is *in addition to* the
1923 hyphen already in the input. Testing and comments are very welcome.
1925 Here is a short example (no idea what is says):
1929 \postexhyphenchar=`-
1931 pudesse t\^e-lo mantido como amigo, mas por
1932 mais bem-intencionado que eu fosse, n\~ao
1938 Bugs fixed compared to 0.27.0:
1940 * Words that started off with a character with a zero \lccode
1941 were never hyphenated at all.
1943 * There was a bug in the new active characters code that prevented
1944 the latex format from being built (with Invalid character error).
1946 * There is a temporary fix for the sometimes appearing "Font has a
1947 bad FontBB" message from Acrobat.
1949 * \leaders did not actually stretch enough (the last bit of glue
1950 that has to line up the line endings was never output to the PDF).
1952 * Bad paragraph-related callbacks could result in luatex crashing.
1954 * The pre_linebreak and post_linebreak filters were never called
1955 when \output was active (this was a leftover of a superceded
1958 * 'skipping' language codes when setting up \patterns c.s. did not
1959 work (it used the next empty slot instead of the actual value of
1962 * Using multiple 'attr' keywords on box items could cause random
1965 * Calling lang.hyphenate() with one argument (without specifying a
1966 tail node) could crash.
1968 * The luatex pdf banner and version reporting is cleaned up a bit.
1970 * Conflicting patterns inside \patterns now give an error:
1971 ! Conflicting pattern ignored.
1972 (duplicate identical patterns are ignored without error).
1974 ==============================================================
1975 Luatex beta-0.27.0 was released 20080624
1976 ==============================================================
1978 Bugs fixed compared to 0.25.3:
1980 * Unicode reencoding support for non-standard (i.e. older)
1981 Type1 fonts is now somewhat less broken than it was (#25)
1983 * .vf fonts using specials crashed luatex
1985 * luatex would crash on --\par (#33)
1987 * An attempt is made to get a sane default value for StemV in
1988 the created pdf (#32)
1990 * We can now guarantee that %PDF-1.* header is printed before
1991 the first pdf.print() output
1993 * lang.hyphenate() was broken
1995 * insert_before(a,a,b) was broken (#37)
1997 * argv[0] is now cleaned up before being used as a default for
1998 mem_name and prog_name (#28).
2000 * luatex would crash on loading extended fonts (fonts loaded
2001 via lua callbacks) from a format file.
2003 * The fix for pdftex bug #799 is backported from pdftex 1.40.4.
2005 * slnunicode had a bug in the unicode.utf8.gmatch iterator.
2007 * Queries of nonexisting fontdimens could cause a crash.
2009 * luatex would crash on {\textdir TLT\pardir TLT x\break\par }
2011 * Fixed wrong placement of lines in mixed-direction paragraphs
2012 that could happen in some situations.
2015 * Luatex now includes luasocket (#35)
2016 See http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/
2018 There is a new commandline option: --nosocket to disable this,
2019 and that is also implied by --safer.
2021 NOTE to the binary builders: there are some unfixed configure
2022 problems when you need to add a specific library to get socket
2023 support on your platform. You probably will have to edit the
2024 generated Makefile by hand (search for 'socketlib').
2026 * There is ongoing development to the 'img' and 'mplib' libraries.
2027 See the reference manual for details.
2029 * The 'character commands' in virtual fonts now support image
2030 inclusion. See the reference manual for details.
2032 * Lua error messages now include the call stack.
2034 * \directlua and \latelua have been extended to accept a 'name'
2035 keyword. The argument is a token list that is used as the lua
2036 name of this chunk in lua error messages and call stack prints.
2039 * The lua chunk names can be interfaced via a new virtual
2040 table called lua.instancename, the values in that function as
2041 defaults in the absence of 'name' keywords.
2043 * The 2-plane limit on active character range is removed (#12).
2045 * Subsetted TTF fonts in the PDF now retain the cmap table.
2047 * There is a new Lua variable os.selfdir. This contains the
2048 full absolute pathname of the directory that the executable
2049 resides in (with symlinks resolved)
2051 * There is a new function os.uname() this returns a lua
2052 table containing various platform information items.
2054 * The node library now uses text strings for direction specifiers
2055 instead of numbers. See the reference manual for details.
2057 * The 'E' (edit) as error response functionality is now a noop.
2059 * Adding luatex 0.25.3 to texlive resulted in a few minor backports,
2060 in particular: Support for mktexfmt is added, and luatangle now
2061 identifies itself as such (instead of calling itself otangle).
2063 * We fixed a whole series of portability problems (but
2064 we probably introduced new problems as well).
2066 * Most (all?) files now have a corrected Copyright header,
2067 and link in $Id$ and $URL$ into the object file.
2069 * Some unnecessary files were removed from the distribution.
2071 ==============================================================
2072 Luatex beta-0.25.3 was released 20080418
2073 ==============================================================
2076 * Pdftex bug no. 936 (sarovar) regarding vertical
2077 positioning of embedded PDF files if depth parameter is given.
2078 * Luatex gave bogus lua return values for the tex.wd/hd/dp
2079 values of void boxes
2080 * A few bugfixes in mplib (square pens caused hangs, elliptical
2081 pens caused confused output)
2082 * Hyphenation of uppercase words (\uchyph) was broken
2083 * Output image placements corrected for all 8 transform cases
2084 also when artbox etc. is used
2085 * There were missing maketexstring() calls in error messages
2086 * Math display contents were sometimes prematurely freed during
2087 the placement of the equation number
2088 * Setting \language=-1 could cause crashes due to an array
2089 index going out-of-bounds
2092 * build.sh.ppc is added to the source distribution. This is a
2093 script that crosscompiles osx ppc binaries from osx intel
2094 * tex.box[<chardef name>] is now supported (but still experimental)
2095 * a bunch of compiler warnings are removed
2096 * The fontforge library now dump AAT feature tags as and
2098 * The new function font.nextid() predicts the next assigned font id
2099 * Some source code changes are backported from texlive
2101 ==============================================================
2102 Luatex beta-0.25.2 was released 20080410
2103 ==============================================================
2105 * Updated to MPlib 0.40
2106 * Bugfixes and cleanup in the lua img table code
2107 * Fix \pdflastximagepages bug from pdftex
2108 * Fix for very large tex.print strings
2109 * Update to Lpeg 0.8.1
2110 * &D Bugfix for Type1 fonts when out-of-range characters
2111 are marked as 'used'
2113 ==============================================================
2114 Luatex beta-0.25.1 was released 20080321
2115 ==============================================================
2117 * Updated to MPlib 0.30 (that is now becoming usable)
2118 * The build requirement for a pre-installed ctangle is gone
2121 ==============================================================
2122 Luatex beta-0.25.0 was released 20080311
2123 ==============================================================
2128 This version features an embedded MP interpreter whose output
2129 can be directly accessed from lua code (mplib), without calls
2130 to an external "mpost" command. Of course it has bugs and
2131 limitations (makempx does not work, for example) but keep in
2132 mind that it is only an initial attempt.
2133 See the manual for more details.
2135 ** img.immediatewrite() is added
2136 ** images now accept a 'transform' key
2137 ** widths etc. can now be given as width="100mm"
2141 * \parshape handling was completely broken since 0.20.0+
2142 * when \pdfprotrudechars was in effect, an assertion failure
2143 could happen when embedded \hboxes in the paragraph appeared
2144 at the end of a line.
2145 * import of otf fonts with contextual lookups has been debugged,
2146 thanks to a patch by GW himself.
2147 * compiling with gcc 4.2.3 is now supported
2148 * if you want to build from source, you need a pre-installed ctangle.
2151 ==============================================================
2152 Luatex beta-0.22.1 was released 20080227
2153 ==============================================================
2155 * The macnames.c source file for building ttf2afm is restored.
2156 * "make depend" in luatexdir now works again
2157 * luatex sometimes crashed because it attempted to expand an
2158 already expanded font
2159 * luatex aborted when --progname was given but no format name.
2160 It now sets the format name to the given progname in that case
2161 * sometimes paragraphs with near-empty lines could cause a crash
2162 * img.supportedtypes() had a bug causing it to crash
2163 * img.supportedtypes() has been renamed to img.types for consistency
2164 * img.boxes() added, returns strings representing bounding boxes
2165 * img.node() added, returns a whatsit node cf. \pdfrefximage
2166 * node.write() now accepts multiple arguments
2167 * the program_name_set switch was not set automatically from C,
2168 causing errors unless lua code called kpse.set_program_name()
2170 * kpse.set_program_name() can now be called more than once
2172 * os.spawn{...} and os.exec{...} could cause crashes because of
2173 a memory allocation error
2175 ==============================================================
2176 Luatex beta-0.22.0 was released 20080215
2177 ==============================================================
2179 * We now have an official bug tracker: http://tracker.luatex.org
2180 * A new lua library (img) is added that allows a direct
2181 interface to the image handling of luatex. You can use this
2182 to include images from lua code instead of via the more
2183 traditional \pdfximage cs. See the manual.
2184 * An optional equal sign after \{pre,post}hyphenchar is now
2186 * os.exec() has been extended, and os.spawn() added. These
2187 functions have support for quoted strings, and they
2188 also accept a table with preseparated command arguments.
2189 * New string constants os.type and os.name are provided.
2190 * node.last_node() is added. This pops and returns the last
2191 node from luatex's 'current list'
2192 * node.write() is added. This appends a node to the end of
2193 luatex's 'current list' (experimental).
2194 * The strict check on unicode compliance in pattern files
2195 is dropped. Patterns files still have to be in proper UTF-8
2196 encoding, but the error for non-Unicode character values
2197 (like 0 - 31 and 127 - 159) is dropped.
2198 * \pdfadjustinterwordglue, \prependkern, \appendkern
2199 and associated \XXXXcode arrays are gone.
2200 * The rest of the pdftex font arrays are now merged into
2201 the new luatex font data structure. This means that you
2202 can now set up font expansion from lua code, and that a few
2203 font-related limits are gone.
2204 * The 'top_skip' field in 'insert' nodes is renamed to 'spec',
2205 for improved consistency.
2206 * kpse.show_path() added. This behaves just like
2207 $ kpsewhich --show-path
2208 * The unicode.utf8 functions now also accept values in the range
2209 1.114.112 - 1.114.367 that is used by LUATEX for raw byte output.
2213 * Better node memory (de)allocation error tracking and messages
2214 * Compilation on MacOSX 10.5 was broken
2215 * There was a bug in node.insert_after
2216 * Use of \{pre,post}hyphenchar was broken
2217 * lfs.permissions was leaking memory
2218 * Some warning and error messages are improved a bit
2219 * A set of bugs in character protrusion, this seems to be working
2221 * Also, a set of bugs in font expansion. This now works in most
2222 cases but is not quite bugfree yet (problematic files for testing
2224 * The functions in the kpse library would crash luatex if
2225 kpse.set_program_name() was not yet called. gives an error now.
2226 * Alignments with spanned columns could cause crashes
2227 * A patch is added for problems with filename parsing on the
2228 "first input line" (by Jonathan Kew)
2229 * The hpack_filter and vpack_filter were only called for lists longer
2231 * Luatex is now more forgiving about font subsets being smaller
2232 than their expected size (issues a warning instead of aborts now)
2233 * A "double-free ignored" error for paragraphs with lines starting
2234 with discarded items was fixed.
2236 ==============================================================
2237 Luatex beta-0.20.2 was released 20071217
2238 ==============================================================
2240 * some portability fixes to the build scripts
2241 * a fix for multi-\span in alignments causing unbreakable
2243 * manual improvements from Jonathan Sauer
2244 * fix for undefined csnames in \directlua if
2245 web2c's hash_extra is nonzero
2246 * fix for LR text inside of a RL document
2247 * fix for open_read_file callback not being called
2248 unless find_read_file was also registered
2249 * removed the ocp status message when \ocps are not
2251 * "unicodeenc" in the fontforge to_table renamed to
2252 "unicode" for improved consistency
2254 ==============================================================
2255 Luatex beta-0.20.1 was released 20071207
2256 ==============================================================
2258 * texlua was broken on Solaris because the some C header
2259 files were loaded in the wrong order.
2260 * os.tmpdir() now accepts an argument, making it easier
2261 to use. It now generates more unique filenames when
2262 it is called repeatedly in one run.
2263 * The --luaconly commandline switch is now documented
2265 * The new extended hyphenation exceptions were severely
2267 * \pdfprotrudechars could cause luatex to abort with an
2269 * There was a bug in the \span code that could cause endless
2271 * The simple forms of \leaders were messed up on windows
2272 because a variable was not properly initialized.
2273 * Non-grouped \textdir commands created invalid output.
2274 * e-TeX's pseudo files were not closed properly in ini mode.
2275 * The luatex.web now weaves properly again.
2276 * I made some small improvements to the manual.
2278 ==============================================================
2279 Luatex beta-0.20.0 was released 20071205
2280 ==============================================================
2282 News compared to the last beta (0.11.2) is as follows:
2284 * Completely overhauled hyphenation and ligkern application,
2285 including the addition of a new "lang" table in lua to
2286 interface to the language parameters, some extra functions
2287 in the "node" table, and a few extra callbacks ("hyphenate",
2288 "ligaturing", "kerning", "post_linebreak_filter").
2290 There is a new chapter in the manual to document all the
2291 changes to the hyphenation and line breaking algorithms,
2292 it is simply too much to list here.
2294 * the interface of the pre_linebreak_filter,hpack_filter,
2295 vpack_filter, and pre_output_filter has changed slightly.
2297 * boxes can now get explicit attributes different from the
2298 currently active set, using a syntax like
2300 \hbox attr2=12 attr3=-1 to 12pt {Hi!}
2302 * lpeg is now at version 0.7
2304 * a whole series of exotic bugs and compiler warnings are
2305 fixed, mostly thanks to the watchful eye of Fabrice.
2307 * texio.print now accepts multiple strings as arguments.
2309 * the lua functions os.sleep(), os.times(), os.gettimeofday()
2310 and os.tmpdir() have been added.
2312 * lua now comes with the coroutine (coco) patches from the
2313 luajit project applied.
2315 * the banner line no longer claims to be TeX.
2317 * a bunch of bugs reported on the mailing list have been
2318 fixed (I hope all of them).
2320 * (internal) we found lots of small ways to speed up lua
2323 * (internal) the node (de)allocation functions have been
2324 rewritten, so that absolutely all nodes now have a type,
2325 even the ones with variable sizes.
2328 ==============================================================
2329 Luatex snapshot-20071029 was released 20071029
2330 ==============================================================
2332 * Completely overhauled hyphenation and ligkern application.
2334 There is a new chapter in the manual to document all the
2335 changes to the hyphenation and line breaking algorithms,
2336 it is simply too much to list here.
2338 * the interface of the pre_linebreak_filter,hpack_filter,
2339 vpack_filter, and pre_output_filter has changed slightly.
2341 * lpeg is now at version 0.7
2343 * a whole series of exotic bugs and compiler warnings are
2344 fixed thanks to the watchful eye of Fabrice.
2346 * texio.print now accepts multiple strings as arguments.
2348 * The lua function os.sleep() is added
2350 ==============================================================
2351 Luatex beta-0.11.2 was released 20070918
2352 ==============================================================
2354 * Pdf inclusion and subsetting of CID-based opentype fonts
2355 now works as it should.
2357 ==============================================================
2358 Luatex beta-0.11.1 was released 20070918
2359 ==============================================================
2361 A quick list of what is new and fixed since beta 0.10.2:
2364 * pfb+afm fonts can now be used in 'wide' (encodingbytes=2) mode
2365 * searching in PDFS using 'wide' fonts now works reasonably well
2366 (based on the tounicode feature)
2367 * related to that, tounicode information can now be passed
2368 on inside the font metrics table
2369 * font subsetting is now supported for CID-based OpenType fonts
2370 (however, there is a known bug with KpozMinProVI-Regular.otf)
2371 * fontforge's warning and error messages are now intercepted
2372 and passed on to the lua code as a second return value of
2373 the fontforge.open() function
2374 * the new primitive \suppressfontnotfounderror can suppress
2375 the TeX error for "Font not found"
2376 * The lua function font.current can now be used to set TeX's
2380 * set_attribute(-1) is now the same as unset_attribute()
2381 * OpenType lookups with glyph classes would crash luatex
2382 * luazlib would not compile on debian (fix from Norbert)
2383 * CID-based fonts would crash luatex
2384 * Bare CFF should be read in binary mode (fix from Akira)
2385 * VF processing did not process packets containing zero bytes properly
2386 * the truetype collection (.ttc) handling is fixed, so that all
2387 of the fonts inside a collection can now be used reliably
2388 * application segfaults and stack overflows are intercepted
2389 so that luatex can quit a bit more gracefully
2390 * an assertion failuer on systems with signed chars (linux-powerpc)
2392 * a crash on AMD64 linux was fixed
2393 * the lua "pdf" table code was wrong
2394 * \ifcsname did not work properly for UTF-8 characters
2395 * Use of the math-related functions using make_fraction (like \atop)
2397 * \handling of \if\noexpand was wrong
2398 * applied a patch that cleans up XForm and page calculations
2399 * "autoconf" support from zziplib is stripped
2401 ==============================================================
2402 Luatex beta-0.10.2 was released 20070814
2403 ==============================================================
2407 * the primitive \span was completely broken
2408 * \pdfexpandfont (font expansion) misbehaved if it was used more
2410 * virtual fonts: sometimes they used the wrong internal font id,
2411 loading vf fonts via fonts.read_vf() was impossible, and sometimes
2412 virtual fonts created segfaults
2413 * while dumping formats, the last font parameter for each font was not
2415 * zziplib was always compiled with pre-installed zlib headers, instead
2416 of the ones in the build tree
2417 * lua 5.1.2 has trouble quoting ^Z characters etc, the tentative patch
2418 for lua 5.2 from Luiz fixes that, hopefully
2419 * fontforge.font('font.pfb') now properly parses AFM boundingboxes
2420 * non-existing files in the argument for fontforge.open() or
2421 fontforge.info() could cause segfaults, now it generates an error
2423 * fontforge.open() did not return character widths for vertical fonts
2425 * on Windows, fontforge believed that ttc files (TrueType Collections)
2426 were actually directories. ttc processing is still not 100% correct,
2427 but it is getting better
2428 * the build system used explicit 'make' sometimes
2429 * the auto-growing string pool was not used everywhere
2430 * there were some typos in the documentation parts of the pascal web
2431 * use of \parshape could easily exhaust all available memory
2436 * support for applying Adobe Feature files (.fea) and Adobe Font
2437 Metrics (.afm) is added to the fontforge library
2438 * fontforge.info() will now return an array of tables for the contents
2440 * support for a 'texluac' personality was added, to replace the 'luac'
2441 command from the official Lua distribution
2443 ==============================================================
2444 Luatex beta-0.10.1 was released 20070719
2445 ==============================================================
2447 This was a hotfix because beta-0.10.0 was completely broken.
2449 ==============================================================
2450 Luatex beta-0.10.0 was released 20070718
2451 ==============================================================
2453 The latest version of the manual is included in the package, and I
2454 am not going to repeat all of that. There were some minor changes
2455 compared to the previous snapshot, but mostly just bugfixes and
2456 documentation improvements.
2458 ==============================================================
2459 Luatex snapshot-20070626 was released 20070626
2460 ==============================================================
2462 * Integrated the lua library lzlib, this defines tables with
2463 bindings for zlib (including eazy-to-use gzip support)
2464 * Updated to slnunicode version 1.1
2465 * Some small cleanups in the sparse array handling
2466 * Moved the raw byte support out of the valid unicode range
2467 * Fixed a bug in the OFM font reader
2468 * Removed the pdftex snap nodes (and associated primitives)
2471 ==============================================================
2472 Luatex snapshot-20070622 was released 20070622
2473 ==============================================================
2475 Not a lot of news, but it fixes a few important bugs in the lua
2476 node processing. Also a few utility functions are added:
2479 rounds and bounds checks a lua number to make sure it is
2480 a valid tex integer.
2482 multiplies a number (or the numeric values in a table)
2483 with a fixed quantity, and calls tex.round() on the result.
2485 Test if a node has a specified field name
2487 removes a node from a nodelist, while keeping the list intact
2488 * node.insert_before()
2489 inserts a new node into a nodelist, just before a specified
2491 * node.insert_before()
2492 inserts a new node into a nodelist, just after a specified
2495 packages a nodelist into a hlist node
2498 ==============================================================
2499 Luatex snapshot-20070619 was released 20070619
2500 ==============================================================
2502 * The lua node processing interface is completely reworked.
2503 It is now completely based on userdata, and uses a new lua table
2504 called 'node' to hold the methods. More detailed information
2505 is in the manual (of course).
2507 * There is a fifth node processing callback:
2509 this is executed just before the packaging of \box 255.
2511 * The hpack_filter and pre_linebreak_filter callbacks now
2512 receive an extra argument indicating the number of top-level
2513 glyphs in the node list.
2515 * Virtual fonts can now contain a 'node' key in the glyph
2516 commands: the value should be a hlist node (i.e.: a horizontal
2517 box), and that will then be output for each character access
2520 * A new set of registers is added, called \attribute. These are
2521 values that will be automatically attached to nodes created in
2522 their scope. More information in the manual.
2524 * Direct read/write access to TeX's box registers is addded to
2525 the lua 'tex' table.
2527 * TeX's main memory now grows dynamically, and the (de)allocation
2528 routines have been rewritten completely.
2530 * The 'kpse' table is extended with extra interface functions, to
2531 allow texlua to be used as a scripting engine.
2533 * The \pdftexversion command now returns 200, not 140.
2535 * The displayed banner and --version screens are cleaned up.
2537 * The format file is now RLE compressed. Not as small as before,
2538 but unpacking is much faster.
2541 ==============================================================
2542 Luatex snapshot-20070426 was released 20070426
2543 ==============================================================
2545 This past month I have been busy with nodes and lists of nodes,
2546 so the big new feature in this release is that there are four
2547 callbacks that operate on node lists:
2550 pre_linebreak_filter
2554 The preliminary documentation for these is in the manual, but the basic
2555 idea is that you can filter a node list just before LuaTeX starts doing
2556 something with it (like line breaking). This functionality is not stable
2557 yet: the node presentation of the various node types is pretty much OK
2558 now, but keep in mind the following:
2560 * math noads and math typesetting are not handled at all (yet)
2561 * not all hpacks and vpacks are intercepted (yet)
2562 * the nested node list handling will probably change
2563 * A conversion tool for nodes to/from dictionaries is planned,
2566 The other changes in this snapshot are various bugfixes (for builds
2567 on various platforms as well as font issues) and speedups (in the
2568 execution of callbacks and the creation of lua font representations).
2571 ==============================================================
2572 Luatex snapshot-20070322 was released 20070322
2573 ==============================================================
2575 * I have changed the token_filter callback quite rigorously,
2576 mostly because of speed issues. The raw speed of trivial
2577 lua token handling is now only about 20 times slower than
2578 the native handling. Not bad at all, considering it has to move
2579 between interpreted and compiled code for each and every
2580 token. If you do not run the token filter inside \output,
2581 the effective run speed difference should not be much more
2584 Two big differences: you have to call token.get_next()
2585 yourself, and the token table is now a three-item array
2586 instead of a five-key hash. The minimal example changes to
2589 callback.register('token_filter', function ()
2590 return token.get_next()
2594 more details are in the manual.
2596 * I've fixed a few bugs in the handling of Opentype TTF, and added
2597 a new key in the font definition table:
2599 f.encodingbytes = (1|2)
2601 The default is 2 for opentype and truetype format, 1 otherwise.
2602 Later on, it will become possible to have a type1 font in 2-byte
2603 (CID) encoding or a truetype font in traditional encoding (1-byte),
2604 but I have not covered all cases yet.
2608 ==============================================================
2609 Luatex snapshot-20070309 was released 20070309
2610 ==============================================================
2612 * The OCP debug information is removed again.
2614 * There is a new callback that I am quite excited about myself:
2618 A bit of text from the reference manual:
2619 --------------------
2620 This callback allows you to change the modify any lexical token that
2621 enters the \type{main_control} function before \LUATEX\ executes the
2624 Note: not all tokens can be intercepted yet, only those that are `seen'
2625 by \LUATEX's main control function. Supplemental tokens like the bodies
2626 of macro definitions and the right-hand side of register assignments
2627 are not seen. For now, this is intentional.
2630 function (table <token>)
2631 return table <token>
2635 Calling convention for this callback is bit more complicated then for
2636 most other callbacks. Initially, lua function will be called with the
2637 next token from \type{get_next()} as argument, represented as a small
2638 lua table. The function should either return a lua table representing
2639 a valid to-be-processed token, or something else like nil or an empty
2642 If your lua function does not return a table representing a valid
2643 token, it will be immediately called again with yet another token
2644 from \type{get_next()} as argument, until it eventually does return
2647 But if the function does return a usable token, then that token will
2648 be processed by \LUATEX. Afterwards, the function will be called
2649 again, but now without an argument. This is repeated until it stops
2650 returning tokens. Then processing reverts back to the other branch.
2652 The point behind that roundabout calling convention is that it
2653 allows the lua function to buffer tokens for various uses. That in
2654 turn makes it possible to do some really advanced things like
2657 Now about that table. The table that the function will receive
2658 contains four fields:
2660 \starttabulate[|l|i|p|]
2661 \NC Key \NC type \NC Explanation \NC\FR
2662 \NC cmd \NC string \NC A representation of \LUATEX's internal
2664 \NC chr \NC number \NC The command code modifier\NC\NR
2665 \NC cs \NC string \NC If the token came from a csname, this
2666 is that csname\NC\NR
2667 \NC mod \NC character \NC A single character string representing
2668 the current processing mode. One of {\bf v}ertical, {\bf h}orizontal,
2669 display {\bf m}ath, {\bf n}o, internal {\bf V}ertical,
2670 restricted {\bf H}orizontal, or inline {\bf M}ath mode.\NC\LR
2673 If you modify the table before returning it, then it is wise to return
2674 either a (\type{cmd}, \type{chr}) pair, or a \type{cs} string. That is
2675 because if both options are present, the pair has precedence and the
2676 string is ignored. On the return table, {\bf mod} is ignored always.
2679 I have no long example code yet and it is not as complete as one
2680 would want it to be because it is not intercepting everything that
2681 comes in, only the bits that are triggered by the main control
2684 I decided to do a fast snapshot release for two reasons:
2686 * It is one of the easier extensions to get started with if you want
2687 to learn a bit about lua programming
2689 * I would welcome feedback on the token interface, because it will
2690 be needed in other places as well, soon. I am still not sure
2691 whether converting the command to/from strings is worth it, for
2692 example. And maybe it would be less confusing if you could return
2693 a list of tokens instead of being called repeatedly?
2695 Here is the trivial example to get you started:
2698 callback.register('token_filter', function (t) return t end)
2702 ==============================================================
2703 Luatex snapshot-20070307 was released 20070307
2704 ==============================================================
2707 * Non-CID PostScript-based Opentype fonts are now combined over
2708 the entire document, and properly subsetted. The code is
2709 borrowed from xdvipdfmx with some minor adjustments
2711 Adding support for CID-keyed OpenType fonts would not be hard
2712 but at the moment I lack example input (and incentive).
2714 * A small extension to the virtual fonts structure: you can use
2716 f.fonts[1] = { 'id' = 38}
2718 to do a backreference to a previously defined font. This saves quite
2721 * There was a bug in the handling of \leaders in the output whereby
2722 it's width was taken to be twice what it should be while writing
2723 to the PDF, fixed now.
2725 * The font inclusion code is cleaned up a bit by Hartmut.
2727 * Some compilation problems were fixed.
2729 * There is (quite a bit of) debugging information printed out when
2730 OTPs are in use, because I am tracking down a bug reported by Idris.
2732 The input of each and every OTP step is shown on the terminal in
2735 [57902][1568][58423][1568][58408][1568][58921]
2737 those are the decimal values of ocp i/o characters. If you don't
2738 need them, don't worry about it.
2740 ==============================================================
2741 Luatex snapshot-20070302 was released 20070302
2742 ==============================================================
2744 * The 'snapshot version' banner is now calculated dynamically
2745 at build time. This aids in figuring out what binary people
2746 are actually running, but it can possibly break the build on
2747 systems that do not have a `date` command.
2749 * The do_vf() function that checks for virtual font existance
2750 is now run immediately after the font definition instead of
2751 being postponed until characters are output.
2753 * The 'define_font' callback interface has changed a little.
2755 retval = function (name,size,fontid)
2757 where fontid is the internal font number of the font that
2758 is currently being defined, and retval can be either a table
2759 (as before) or a different, previously defined fontid. This is
2760 useful if a previous definition can be reused instead of
2761 creating a whole new font structure.
2763 * The internal font data structure has been redone. Glyph index
2764 inside a font is now handled by a sparse array, so that use
2765 of e.g. 0xFB01 (fi-ligature) no longer creates a 64000+ entries
2768 * The internal cache-ing of font metric information is turned
2769 off completely, because it was based on the assumption that
2770 name + size were a unique identifier for a font. This can no
2771 longer be guaranteed.
2773 * word boundary processing now works OK again, thanks to the
2774 introduction of two virtual characters in the font table
2775 definition. Besides the normal numeric entries in the
2776 f.characters table, there can now also be two string keys:
2777 "left_boundary" and "right_boundary". The ligatures and kerns
2778 of the 'left_boundary' character are used for the pre-word
2779 boundary processing, ligatures and kerns between characters
2780 and 'right_boundary' are used for the post-word processing.
2782 * Lua font table references are no longer cached by the
2783 executable ,in order to preserve memory. (the only downside
2784 is that font.fonts[] access is now slower because of the need
2785 to recreate the lua table).
2787 * There are other some small changes to the font table formats.
2788 Please see the manual for details.
2790 * A 'real' font can now still have virtual characters if they
2791 are loaded via lua. Just set the 'commands' section and/or
2792 the 'fonts' array to your liking, and it should work out.
2794 If you have created no 'fonts' array at all, then the default
2795 font (indentifier '1') is the current font, so that you
2796 can create virtual duplicates of already existing characters.
2798 Note: this does not work the other way. There can not be
2799 'real' characters in a virtual font!
2801 * Truetype-based opentype fonts no longer require Acrobat 7
2802 t(hey are now written out as if they are normal truetype).
2804 * A lua init script can now set 'texconfig.formatname' and/or
2805 'texconfig.jobname'. If ther is no file or format specified
2806 on the commandline, then, if, one of those keys is present,
2807 that key will be used instead of simply quitting with an
2810 * Placement of boxes and rules in right-to-left mode is debugged,
2811 and now seems to work ok.
2813 * Virtual font loading is debugged.
2815 * Some memory leaks are resolved
2817 * HZ font expansion should work ok again, but is not tested.
2819 * a few of the warning during opentype loading have been removed
2820 because the problems are rather harmless and turned out to be
2821 triggered by almost every font.
2824 ==============================================================
2825 Luatex snapshot-20070218 was released 20070218
2826 ==============================================================
2828 * The pdftex stuff is now updated to 1.40.3
2829 (and on top of that, it still has those extra patches announced in
2832 * The virtual font parser is debugged and now appears rather stable.
2834 * There is one extra virtual command:
2837 {"slot", 1, 97}, -- place character 97 'a' in local font 1.
2840 This is just a shortcut for {"font",1}, {"char", 97}
2842 * Some small memory leaks have been fixed. Luatex does not leak big
2843 time, but I'd like to get back to valgrind reporting '0 out of 0',
2844 instead of the current 800 bytes or so (that is a slow process).
2846 * You can read a truetype or opentype font from within lua code
2847 using font.read_ttf() or font.read_otf(), respectively.
2849 This feature uses a fair bit of the fontforge code, making the
2850 binary rather a bit larger than before. Just so you know.
2852 Apple (AAT, as well as encoding) support is still largely missing,
2853 and bitmap-only and old Multiple-Master truetype fonts are not
2854 supported at all (and never will be).
2856 The output format is (shadily) documented in the reference manual.
2857 At the moment, it very closely resembles the internal font stucture
2858 that is used by fontforge.
2860 * LuaTeX can now write wide OpenType fonts to the PDF file.
2862 There is no subsetting support yet, and a ToUnicode CMap is also
2863 still missing, but nevertheless it is already somewhat useful. The
2864 rule is very simple: if a font uses code points above 255, then it
2865 is considered to be a `wide' font, and it will be written out as
2866 a Type0 CID-keyed font to the PDF.
2868 Caveat: Getting suitable metrics into LuaTeX can be a bit of problem
2869 right now, because font.read_otf() does not produce anything that
2870 can be fed back into define_font without extra processing. Hans has
2871 some experimental Lua code for ConTeXt (of course :-)) and that is
2872 how I know it works. You can expect a nicer interface soon,
2873 hopefully next week, in the form of a simplistic table conversion
2876 * I have started work on supporting Aleph's bidi typesetting in PDF
2877 mode as well, simple text seems to be largely ok. More complicated
2878 documents will no doubt still show some bugs, but fixing those will
2879 be easy (once they are discovered). Exactly what happens with specials
2880 is not yet investigated.
2882 * Omega's (16-bit) wide virtual fonts now work OK in PDF mode. This
2883 means that many Aleph files can now be run in PDF mode directly.
2884 (the documents that use UTF-8 input encoding)
2887 ==============================================================
2888 Luatex snapshot-20070202 was released 20070202
2889 ==============================================================
2892 * The pdftex stuff is now updated to 1.40.2, and on top of that, it has
2894 - an extra patch from Han The Thanh that adds a primitive to control
2895 the merging of fonts from external pdf images (\pdfreplacefonts),
2896 and a bugfix for virtual font handling.
2898 - an extra patch by Hartmut Henkel that removes a number of malloc()s
2899 and free()s from the calls to the compression library, thereby
2900 making luatex run a bit faster.
2902 * luatex now happily accepts the following low-level syntax:
2904 \font\myfont = <general text> <at specifier>
2906 It feeds the <general text> to either kpathsea or a lua script for
2907 further processing after stripping the braces.
2909 In itself, this is not all that useful, but the reason for this
2910 syntax extension is that it paves the road for a macro package
2911 to do something like this:
2913 \font\myfont = {font="Times New Roman", color="\darkred",
2914 encoding="ec", features="liga", size=10bp}
2916 without having to resort to system-specific quoting mechanisms.
2917 Macro (and other) expansion takes inside the braced argument.
2919 (I am considering adding this extension to \input as well).
2921 * It is now possible to define a font into the font.fonts[]
2922 directly from lua, but becayse use is limited, I am only
2923 mentioning it to be complete.
2926 <number> id = font.define(<table> font)
2928 * There is a (not very reliable yet) virtual font parser accessible
2932 <table> vfdata = font.read_vf(<string> name, <number> size)
2934 The interpreter tries to give a reasonable representation of a
2935 virtual font file (the .vf file). Besides a few simple top-level
2938 designsize -- in scaled points
2940 name -- the file name
2941 checksum -- the vf checksum
2942 header -- the header comment (if any)
2944 it also has a top-level array 'fonts' wherein each item is a mini-
2945 array describing one of te mapped fonts. An example makes this
2948 "fonts" = { {"ptmr8a",655360}, {"psyr", 600000} }
2950 says that the first referenced font (index 1) in this virtual font
2951 is ptrmr8a.tfm loaded at 10pt, and the second is psyr.tfm loaded
2952 at a little over 9pt. These index numbers are used by the character
2953 command definitions that follow.
2955 At top level, there is a 'characters' array, just as for a normal
2956 font, except that each item has only two keys:
2958 "width" -- the tfm width (as stored in the .vf)
2959 "commands" -- an array of virtual font commands for a character.
2961 each of the items in the 'commands' array is itself a tiny hash.
2963 Each of those mini-hashes represents a single character packet
2964 command. Here is a 'commands' entry that contains every possible
2968 {"push"}, -- remember where we are
2969 {"right", 5000}, -- move right 0.08pt
2970 {"font", 1}, -- select the fonts[1] entry
2971 {"setchar", 97}, -- place character 97 'a'
2972 {"pop"}, -- go all the way back
2973 {"down", -200000}, -- move *up* about 3pt
2974 {"special", "pdf: 1 0 0 rg"} -- switch to red color
2975 {"rule", 500000, 20000} -- draw a bar
2976 {'special',"pdf: 0 g"} -- back to black
2980 * But the big news is that you can now define your own virtual fonts
2981 on the fly, by adding a few statements to the table returned to
2982 the 'define_font' callback.
2984 There are a few requirements:
2986 - The table has to have a top-level key 'type', and it's value
2989 The presence of this key with the specific value 'virtual'
2990 will trigger handling of the rest of the special virtual font
2991 fields in the table, but the mere existance of 'type' is
2992 enough to prevent luatex from looking for a virtual font
2995 Therefore, this also works 'in reverse': if you are absolutely
2996 certain that a font is not a virtual font, assigning the value
2997 'base' or 'real' to 'type' will inhibit tex from looking for a
2998 virtual font file, thereby saving you a disk search.
3000 - There must be a top-level 'fonts' array, as explained above.
3001 Any fonts that are not yet known to luatex at that moment,
3002 will be loaded automatically (Warning: do not ever use a font
3003 in 'fonts' with the same name you will return in the table you
3004 are defining right now!).
3006 - Each and every character in the fonts needs to have a 'commands'
3007 key, as explained above.
3009 The main point behind these restrictions is that a font is
3010 *either* a base font *or* a virtual font. It cannot be both
3014 ==============================================================
3015 Luatex snapshot-20070126 was released 20070126
3016 ==============================================================
3019 * Underscores in pascal identifiers are now retained.
3021 This took quite a bit of work. The web2c conversion tools
3022 needed only small adjustments, but most of the existing C
3023 code depended on the removal of the underscores. I had to
3024 go through changing many lines. 99% of all identifiers are
3025 now written the same on the pascal side as on the C side.
3026 This makes writing interface code quite a bit less confusing.
3028 Not everything is completely clean yet, because I did
3029 not want to change the web2c-specific C files. I often
3030 took the other approach and removed the underscores
3031 from the web2c options (like 'parsefirstlinep') in the
3032 change file instead. Ugly, but predictable.
3034 There is about a dozen or so of #defines left, that map
3035 memoryword -> memory_word
3039 * The virtual font parsing and interpreting is now done in C.
3040 (this is because it needs to be interfaced with the lua-based
3043 * I am in the process of merging: the VF stuff; the TFM stuff;
3044 the lua font loading; and the pdftex font backend into one
3045 interface, so there were some smallish changes relating to
3046 that as well. Nothing worth mentioning just yet except that
3047 luatex now will read "ovf" files as well as "vf" files.
3049 * There are a few really small bugfixes for bug reports I received
3050 on this list and by email.
3052 ==============================================================
3053 Luatex snapshot-20070119 was released 20070119
3054 ==============================================================
3056 The largest new bit is the existence of a font.fonts array, that you
3057 can use to query/adjust the internal defined tex fonts. See the manual
3060 Two small new lua extensions are added as well:
3062 * os.setenv() -- to change the environment
3063 * os.exec() -- a non-returning os.execute()
3065 And a bit of cleanup in the commandline processing.
3068 ==============================================================
3069 Luatex snapshot-20070117 was released 20070117
3070 ==============================================================
3072 * the pdftex core is updated to 1.40.1, and web2c to 7.5.6
3074 * the pdftex-specific documentation is removed
3076 * lua lpeg library updated to 0.4
3077 ( http://www.inf.puc-rio.br/~roberto/lpeg.html )
3079 * the C part of the lua md5 library is added to the binary
3080 ( http://www.inf.puc-rio.br/~roberto/md5/md5-5/md5.html )
3082 * --luaonly now puts the script itself at arg[0], and
3083 preceding commandline items in the negative indices
3084 (instead of starting the count at zero).
3085 This new approach is compatible with the standalone lua
3089 ==============================================================
3090 Luatex snapshot-20070107 was released 20070107
3091 ==============================================================
3093 Hot on the heels of 20070105, a new snapshot. It turns out
3094 that using the callback to define a font broke all ligatures.
3095 This snapshot fixes that, and it has a few minor updates to
3096 the manual. Next shapshot will be after the inclusion of
3099 ==============================================================
3100 Luatex snapshot-20070105 was released 20070105
3101 ==============================================================
3103 * the calculations that converted lua strings into tex units
3104 were horrendously wrong, this was discovered by Pawel.
3106 * io.lines() was still using the old, line ending sensitive,
3107 code from the lua core distribution
3109 * The main font memory is allocated as needed^(1) instead of
3110 statically pre-allocated.
3112 * ligatures and kerns are separated completely from each other,
3113 so use of \noligatures no longer inhibits kerning as well
3115 * Metrics can be loaded using a callback: 'define_font'.
3116 The value returned should be a lua table representing a tfm
3119 * there is a new lua table: font. It has one function:
3120 font.read_tfm() that returns a table reprentation of the tfm
3121 contents, for use with the above mentioned callback
3123 * I dropped suppport for "Level 1" OFM files. I would like
3124 to have a try at those extended font files, but I lack
3125 examples (fonts nor documents). I am not even sure such
3126 fonts have ever existed in the 'real world'.
3130 ==============================================================
3131 Luatex snapshot-20061208 was released 20061208
3132 ==============================================================
3134 * There is a new switch: --safer. This disables a number of lua
3135 functions that are more or less dangerous (a detailed list is
3138 * Two longstanding bugs have been fixed: \latelua works once
3139 again (patch by Hartmut) and a bug that caused mysterious crashes
3140 turned out to be a problem inside the paragraph builder
3141 (reconstitution of ligatures)
3143 * Six new string iterators have been added to the string library:
3144 string.characters (one 1-letter string)
3145 string.bytes (one byte)
3146 string.characterpairs (two 1-letter strings)
3147 string.bytepairs (two bytes)
3148 string.utfcharacters (a one-character utf-8 string)
3149 string.utfvalues (a unicode code point number)
3151 * The top 256 values of the unicode range (starting at hex
3152 value "10FF00) are now reserved for byte output. Characters
3153 in that range will be written by luatex after substracting
3154 that offset. The net result is that \char"10FFA9 is written
3155 as byte value hex A9 = decimal 169 = copyright sign in latin1
3157 This trick allows byte-oriented output to \pdfliterals and
3158 \specials, but should be considered very experimental.
3160 * There is a new callback called 'process_input_buffer' that can
3161 be used to mutate the line buffer just before LuaTeX actually
3162 starts looking at it.
3164 * The statistics table now has readable items
3166 statistics.lasterrorstring
3167 that represent TeX's current input id and the last error string
3169 * The show_error_hook callback no longer receives any arguments
3170 * There is a new switch: --safer. This disables a number of lua
3171 functions that are more or less dangerous (a detailed list is
3174 * Two longstanding bugs have been fixed: \latelua works once
3175 again (patch by Hartmut) and a bug that caused mysterious crashes
3176 turned out to be a problem inside the paragraph builder
3177 (reconstitution of ligatures)
3179 * Six new string iterators have been added to the string library:
3180 string.characters (one 1-letter string)
3181 string.bytes (one byte)
3182 string.characterpairs (two 1-letter strings)
3183 string.bytepairs (two bytes)
3184 string.utfcharacters (a one-character utf-8 string)
3185 string.utfvalues (a unicode code point number)
3187 * The top 256 values of the unicode range (starting at hex
3188 value "10FF00) are now reserved for byte output. Characters
3189 in that range will be written by luatex after substracting
3190 that offset. The net result is that \char"10FFA9 is written
3191 as byte value hex A9 = decimal 169 = copyright sign in latin1
3193 This trick allows byte-oriented output to \pdfliterals and
3194 \specials, but should be considered very experimental.
3196 * There is a new callback called 'process_input_buffer' that can
3197 be used to mutate the line buffer just before LuaTeX actually
3198 starts looking at it.
3200 * The statistics table now has readable items
3202 statistics.lasterrorstring
3203 that represent TeX's current input id and the last error string
3205 * The show_error_hook callback no longer receives any arguments
3207 * The statistics table now has readable items
3208 statistics.luabytecodes
3209 statistics.luastates
3210 statistics.luabytecode_bytes
3211 statistics.luastate_bytes
3212 for memory statistics reporting
3215 * The statistics table now has readable items
3216 statistics.luabytecodes
3217 statistics.luastates
3218 statistics.luabytecode_bytes
3219 statistics.luastate_bytes
3220 for memory statistics reporting
3223 ==============================================================
3224 Luatex snapshot-20061204 was released 20061204
3225 ==============================================================
3227 * The LuaTeX interpreter can now be run as a standalone lua script
3228 processor, by using a commandline like this:
3230 luatex --luaonly=luatools.lua
3232 * Luafilesystem (http://www.keplerproject.org/luafilesystem/ ) is
3235 * There are a total of eight new file discovery callbacks:
3244 this enhances the orthogonality of the callback system, nothing
3245 fundamental is changed.
3247 * There is a new callback called 'process_input_buffer' that can
3248 be used to mutate the line buffer just before LuaTeX actually
3249 starts looking at it.
3251 * The 'reader' and 'close' functions from 'open_read_file' now
3252 receive the table they are defined in as a function argument,
3253 that can be used as a per file localized data store.
3255 * Updated the Lua to the latest 5.1.1, with all known bug patches
3256 from the website applied as well
3258 * Runtime autoloading of lua .so files is now off on all platforms.
3260 * The statistics table now has readable items
3262 statistics.linenumber
3263 that represent TeX's current file name and line number
3265 * The support for user-defined type3 font .pgc files and the
3266 associated 'read_miscfonts_file' callback has been removed.
3267 (nobody used it anyway)
3269 * General cleanups to the source tree and build process.
3271 ==============================================================
3272 Luatex snapshot-20061023 was released 20061023
3273 ==============================================================
3275 * there was a missing callback: find_font_file
3276 * program_invocation_name was not set
3277 * buf_size could not be more that 300k
3280 ==============================================================
3281 Luatex snapshot-20061013 was released 20061013
3282 ==============================================================
3284 Last friday I uploaded a new snapshot and today I finally
3285 finished updating the manual to go with it. The changes all
3286 relate to startup, file i/o, and callbacks. The main achievement
3287 is: you can now run luatex without it *ever* initializing kpathsea.
3289 Because I am lazy, I have checked in the pdf of the manual
3290 as well, so that I can say: Please look at
3292 https://foundry.supelec.fr/plugins/scmsvn/viewcvs.php/manual/
3293 /luatexref-t.pdf?root=luatex&rev=148&view=log
3295 for all the details. :-)
3297 ==============================================================
3298 Luatex snapshot-20061002 was released 20061002
3299 ==============================================================
3302 * Some infrastructure changes:
3304 libs/slnunicode-0.9.1/ renamed to libs/slnunicode/
3308 (zziplib is using a different version of autofoo. I know I have
3309 messed up something in the build process, but the bit we need
3310 compiles ok so I've postponed attempting to fix it)
3312 * The callback logic has changed quite a bit.
3314 - all callbacks are now only possible in lua state 0.
3316 - The callback 'input_line' has disappeared, and is replaced by
3317 'open_read_file'. One of the return values of that callback
3318 is a table that defines a 'reader' function for line reading.
3320 See the manual for further information on this.
3322 - There are some new callbacks for the reading of various binary
3323 files. The current ones are:
3325 "read_ocp_file", "read_vf_file", "read_data_file", "read_font_file",
3328 The rest of the file types will follow soon (fonts, enc files, and
3331 - There are also some new callbacks that 'find' a file's pathname:
3333 "find_truetype_file", "find_type1_file", "find_image_file"
3335 here too, more will follow later.
3337 - the functions from io. that were copied to texio have been removed
3338 again. The new callbacks do not pass file pointers around, so
3339 they ere not longer needed
3341 - the 'open_write_file' is temporarily unavailable
3343 * startup.lua is now always loaded into lua state 0
3345 * The luazip library from kepler is linked in, so there the table 'zip'
3346 is accessible from all lua states.
3348 ==============================================================
3349 Luatex snapshot-20060922 was released 20060922
3350 ==============================================================
3352 * The texio table has gained a new function:
3354 tex_file = texio.open(filename)
3356 returns a file handle of a type that luatex can use
3357 internally (the return of io.open is unusable in callbacks
3358 because it will be garbage-collected at a random time)
3361 * In related news, there are two new callbacks you can define:
3363 callback.register('open_read_file', f)
3364 callback.register('open_write_file', f)
3366 where your function should have the following conventions:
3368 function f (number id_number, string asked_name)
3369 return boolean success, string actual_name, tex_file filep
3372 id_number: zero for the log or \input files or TeX's \read
3373 number incremented by one (\read0 becomes 1).
3374 asked_name: the user-supplied filename
3376 success: return false for error, true otherwise.
3378 The remaining two items are only looked at if you return true:
3380 actual_name: the true filename used (with extension!)
3381 filep: a file object opened though texio.open()
3384 * The tex.print function has an extra optional parameter:
3386 tex.print(ctt_id n, strings ...)
3388 This prints the strings using the catcode regime defined by
3389 \catcodetable n (assuming n is valid, see below)
3391 * The new function tex.sprint has the same lua conventions as
3392 tex.print, but behaces slightly different on the tex side:
3394 ** tex does not switch to the 'new_line' state (this implies
3395 that leading spaces are not ignored)
3396 ** no \endlinechars are inserted
3397 ** trailing spaces are not removed from the argument
3399 * Catcode tables are a completely new feature, that allows
3400 you to switch the current catcode regime in one simple
3403 \catcodetable <count>
3405 Switches to the use of a different set of catcodes (table),
3406 that is stored under the number <count>. Such a table has to
3407 be previously created using one of the two command below, or
3408 the number 0 (which is pre-inititialized)
3410 This command obeys normal grouping rules.
3412 \initcatcodetable <count>
3414 creates a new, global, independent catcode table with catcodes
3415 matching the code that are predefined by initex (tex -ini).
3417 This allocation is global
3419 \savecatcodetable <count>
3421 copies the current set of catcodes to a new, global, table
3422 with id number <count>. The definitions in this new table
3423 are all treated as if they were made in the outermost level.
3425 This allocation is global
3427 At the end of each grouping level, items within all existing
3428 catcodetables are restored, regardless of which one is the
3429 currently active table.
3431 Catcode table numbers cannot be larger than 0xFFFFFFF (228-1)
3433 * There is a new lua table: lua. It contains three read-only
3436 lua.id -- the id number of the instance
3437 lua.version -- a luatex version identifier string
3438 lua.startupfile -- the full filename (+path) of startup.lua
3440 and it also contains a read/write array:
3442 lua.bytecode[] -- lua executable bytecode
3444 This array can be used to save and restore lua functions
3445 across lua states. The accepted values are for assignments
3446 are functions and nil. Likewise, the retrieved value is
3447 either a function or nil.
3449 The contents of the lua.bytecode array is stored inside the
3450 format file, so it can also be used to preload lua code.
3453 * The format files are quire a bit smaller than before
3456 ==============================================================
3457 Luatex snapshot-20060915 was released 20060915
3458 ==============================================================
3460 * There is a new TEX primitive: \formatname. It is similar
3461 to \jobname (read-only). In initex, the expansion is empty,
3462 otherwise the expansion is the same as the \jobname from
3465 * the lua "tex" table has been expanded with a few of the 'convert'
3466 codes (read-only). The supported ones at this moment are:
3473 tex.pdfnormaldeviate
3480 This list looks haphazard, but it really is not. These are
3481 all the cases of the 'convert' internal command that do not
3482 require an argument.
3484 * The metatables of the subtables like tex.dimen[] etc. are now
3485 adjustable from lua (not that I recommend doing that;-)).
3487 * On the lua side, there is a new global value: "luaid"
3488 It holds the internal id number of this \directlua instance.
3490 * There is a new lua table, "callback", that has the single function
3491 "callback.register", used to register callbacks. This replaces
3492 the previous concoction (see my message about snapshot 20060901).
3495 callback.register(<callback name>,function (f) ... end)
3497 where the <callback name> is for the moment, either "input_line"
3498 or "show_error_hook".
3500 This function internalizes the callback function in such a way
3501 that you no longer have to worry about \luacallback (which has
3502 been removed), nor does it matter if you redefine a function
3505 The internal testing for callback presence is also quite a bit
3506 faster, thanks to this change. Callback assignments are global
3507 and the "input_line" always takes effect starting on the next
3508 input line to be read from an actual file.
3511 * \detokenizedlua has been removed. It is functionally replaced by
3512 the new function call tex.write("").
3514 Each argument to each call of tex.write () counts as an input
3516 ** all catcodes on that line are either 'space' (for " ") or
3517 'character' for all others.
3518 ** there is no \newlinechar appended.
3520 * The implementation of tex.print() has changed as well:
3522 ** the very last tex.print() line from a \directlua
3523 will no longer have a trailing \newlinechar
3524 (this is very convenient when \directlua is used
3526 ** tex.print() is quite a lot faster than before, and the total amount
3527 of returnable text from a \directlua is now only limited by
3528 available system RAM. However, each separate tex.print ()
3529 argument has to fit in TeX's input buffer.
3531 * The new primitive \luastartup can be set inside the format file
3532 to specify the lua instance number in which a possible runtime
3533 startup.lua script is executed (initex always uses 0)
3535 * There is a new primitive \scantextokens. Differences with
3536 eTeX's \scantokens are:
3538 ** the last line (usually only) from \scantextokens
3539 does not have a \newlinechar
3541 ** \scantextokens never raises an eof error.
3543 This means things like
3546 {\scantextokens{\ifnum1=1 true}\else false\fi}
3548 are legal input (but potentially dangerous!).
3551 local d = tex.dimen["unknowndimen"]
3552 'd' will now become "nil" instead of raising an error
3555 tex.dimen["unknowndimen"] = d
3556 is still (and probably will remain) illegal
3558 ==============================================================
3559 Luatex snapshot-20060908 was released 20060908
3560 ==============================================================
3562 * BIG CHANGE: \directlua now runs \scantokens internally.
3564 There is no longer a need to call scantokens yourself, the
3565 tex.print() output is now fed straight into a pseudo file.
3566 This is quite a bit faster as well as easier to use, but
3567 just in case you want it, the old behaviour is still present,
3573 * The texio library now has its own (partial) set of I/O commands,
3574 so that the standard lua io library is back to the distributed
3575 state (no more patched garbage collector)
3577 Note: This is really a very small change (it should not have any
3578 impact on wellbehaved input files), but I attempt to be complete
3579 in these notes, since there is no official documentation yet.
3582 * There is a new standard library available: kpse
3584 The most important function in that library is find_file:
3586 string = kpse.find_file(string filename
3588 [,boolean mustexist])
3590 both "type" and "mustexist" are optional, so the function
3591 has from one upto three arguments.
3593 "type" is like the '-format' argument of kpsewhich. You can
3594 run 'kpsewich -h' for a list. The default type is "tex".
3596 "mustexist" is like '-must-exist', and the default is false.
3597 If you specify "true" (or a nonzero integer), then the kpse
3598 library will search the disk as well as the ls-R databases
3600 The new library also has three other functions that map
3601 straight to kpsewhich commandline options:
3603 string = kpse.expand_path(string)
3604 string = kpse.expand_var(string)
3605 string = kpse.expand_braces(string)
3607 * There is a second callback possibility:
3609 texio.show_error_hook(string message,
3610 string|number indicator,
3613 This command is run from inside the TeX error function, and the
3614 idea is to allow you to do some extra reporting on top of what
3615 TeX already does (none of the normal actions are removed).
3617 "message" is the formal error message tex has given to the
3618 user (the line after the "! ")
3619 "indicator" is either a filename (when it is a string) or a
3620 location indicator (a number) that can means lots of different
3621 things like a token list id or a \read number.
3622 "lineno" is the current line number
3624 This is an investigative item only, comments are welcome but do
3625 not take the syntax seriously.
3627 The final goal IMO is the total replacement of TeX's error
3628 handling routines, but that needs lots of adjustments
3629 in the web source because TeX deals with errors in a somewhat
3630 haphazard fashion (it needs unification first). The current
3631 hook is only for 'testing the water'.
3633 * It is now possible to use named items in the
3639 subtables, so you can have
3641 tex.count.scratchcounter = 0
3642 local enormous = tex.dimen["maxdimen"]
3644 Luatex looks up the value for you on the fly. You have to use a
3645 valid \countdef (or \dimendef, or \toksdef), anything else will
3648 In a normal TeX file, you don't do \dimen\maxdimen, but the
3649 lua syntax seems to be a bit cleaner to me. The intention is
3650 to evntually also allow \chardefs and macros that expand
3651 into a number (todo)
3654 * The tex table has also been extended with a large list of internal
3655 parameters (partially read/write). It is possible to access
3656 about every primitive that you can use after \the *and* is a
3657 single token. So there is
3659 integer = tex.tracingcommands (\the\tracingcommands)
3660 integer = tex.prevgraf (\the\prevgraf)
3661 string = tex.output (\the\output)
3663 etc. for all of the internal parameters, but not the items
3664 that need extra arguments (like \the\scriptfont )
3666 The subset comprising simple integer and dimension registers
3667 are writable as well as readable (stuff like \tracingcommands
3670 The fact that both lists are still quite limited is a result of
3671 the very different types of things that can occur after \the and
3672 also on the LHS of an assignment. The remaining primitives will
3673 be filled in when there is a real need or implementation becomes
3674 simple, whichever comes first.
3678 ==============================================================
3679 Luatex snapshot-20060901 was released 20060901
3680 ==============================================================
3682 All changes are related to lua this time, and most are quite unstable
3683 / experimental. But first the things that are stabel/fixed bugs:
3685 * A VF loading bug that turned up in some of Hans' fonts
3688 * A small series of bounds checking fixes to \ocplist has been
3689 added to prevent the system from crashing due to array indexes
3690 running out of bounds.
3692 * The Lua file searching paths are now fixed. The search path for lua
3693 script files now contains the following items (tried in order)
3694 1. the local directory:
3696 (for document-specific files)
3697 2. the items from the expansion of kpathsea's $TEXMFSCRIPTS variable,
3698 but only the parts containing 'lua' as a subpath:
3699 $TEXMFSCRIPTS<lua>/?.lua
3700 $TEXMFSCRIPTS<lua>/?/init.lua
3701 (for format-specific files)
3702 3. the $SELFAUTOPARENT sibling directory named 'lib'.
3703 $SELFAUTOPARENT/lib/lua/5.1/?.lua
3704 $SELFAUTOPARENT/lib/lua/5.1/?/init.lua
3705 (for files that are not related to tex)
3707 The search path for dynamic libraries has only
3708 1. the local directory:
3710 (for document-specific files)
3711 2. and the $SELFAUTOPARENT sibling directory named 'lib'.
3712 $SELFAUTOPARENT/lib/lua/5.1/?.so
3714 (of course the extension is .dll on windows, but .dlls do not
3715 work at the moment so it will not do you much good)
3717 * There are two functions available within a new table called
3719 texio.write (luastring)
3720 texio.write_nl (luastring)
3721 both write the luastring to the same location(s) TeX writes
3722 its stuff. So if \batchmode is on, it writes only to the
3723 log, inside a \write, it prints to the current write file,
3726 A read|write interface to TeX's "file selector" will
3729 * At startup, luatex searches for a script named
3731 in the path list I explained above. If such a file exists, it is
3734 This happens right before the first input file needs to be opened
3735 (that is after format loading, but before any \everyjob tokens).
3737 From within the script, you can check the value of
3741 that is the 'format identification' as used by TEX. When the variable
3742 is equal to nil, luatex in in 'initex' mode, otherwise it will be
3743 something like: " (format=plain 2006.9.1)"
3746 Now for the experimental portion: callbacks. Here is what I have done
3749 * The main reason for wanting startup.lua is file (input) re-encoding.
3750 For this purpose, it is now possible to set up a callback for
3753 If you attach a Lua function to
3757 then from the next input line onwards, luatex will run that
3758 function whenever it needs a new input line from a text file.
3760 Your function will receive a file handle as argument, and
3761 should return either a string or nil (with nil signalling that
3762 the end of file has occurred).
3764 The trivial case is simply this:
3769 texio.input_line = reader
3772 Warning: The implementation is not totally finished yet. For the
3773 moment the file handle ("f" in the example) is a normal lua file,
3774 with a simple but important restriction: you cannot alter its value.
3775 You cannot f:close() it, or assign it a different value. luatex
3776 will eventually close the file itself.
3778 The restriction is a side-effect of a synchronisation problem with
3779 the lua garbage collector. Because of this, it also was necessary
3780 to turn off the automatic file closing code for normal lua io
3781 files (In other words: you have to close yourself all the files
3782 you opened yourself, and you should not close any files you did
3785 In the near future, "f" will become a special 'texio' file object
3786 and the needed functionality from the normal io library will be
3787 reimplemented. Along with that change, there will also be a callback
3788 to open (i.e. find) files, and a simple interface to the compiled-in
3789 kpathsea to use within that callback.
3792 ==============================================================
3793 Luatex snapshot-20060825 was released 20060825
3794 ==============================================================
3796 The main change in this snapshot is that it uses far less memory.
3797 luatex -ini on my linux machine went from 326Mb (last week) to
3798 93Mb (now), and "texexec luatex" now ends at 184Mb instead of
3801 This is achieved by two big changes:
3803 * The \mathcode, \delcode, \catcode, \sfcode, \lccode and \uccode
3804 tables are now sparse arrays that are implemented in C. They
3805 are no longer part of the TeX "equivalence table" and because
3806 each had 1.1 million entries with a few memory words each, this
3807 makes a major difference.
3809 See mathcodes.c and textcodes.c if you are interested in the
3810 gory details, but be warned: the code is still extremely
3811 rough and ugly. In particular, the dump and undump routines
3812 are far from optimal, resulting in somewhat larger format files
3813 than before (approx 1.3Mb larger with unicode-letters loaded,
3814 10k without); and the assignments do not show up when using
3815 the etex tracing routines \tracingassigns and \tracingrestores
3816 (code simply not written yet)
3818 * Single-character commands are no longer "special" internally,
3819 they are stored in the hash just like the multiletter csnames.
3822 ==============================================================
3823 Luatex snapshot-20060818 was released 20060818
3824 ==============================================================
3826 The snapshot is up to par with Aleph-RC4 (from texlive devel)
3827 and the latest pdftex beta (even newer than 20060811). However,
3828 there are some differences, to summarize:
3830 * There is no pool file (all strings are embedded)
3832 * -8bit and -translate-file are silently ignored
3834 * There is no mltex nor enctex (conflicts with aleph)
3836 * The tex functionality is always present and enabled
3837 (but see below about TeXXeT), so the asterisk or
3838 -etex switch for initex is not needed
3840 * "plus 1 filllllllll" does not generate any errors from TeX
3842 * TeXXeT (from eTeX) is not present, so the primives
3850 * The experimental pdftex regex match operations are removed,
3851 because that feature does not make much sense when lua is
3852 available so the primitives
3857 * The input translations from Aleph are not implemented, the
3858 16 related primitives are all missing
3864 \noDefaultOutputMode
3867 \DefaultInputTranslation
3868 \noDefaultInputTranslation
3871 \DefaultOutputTranslation
3872 \noDefaultOutputTranslation
3873 \noOutputTranslation
3875 All file IO assumes UTF-8, except that all the low-ascii
3876 controls except TAB, CR en LF are written to the terminal
3877 using ^^ notation (even these are binary in the log file).
3879 * Input characters can use the full range of Unicode,
3880 but it probably only makes sense to use values above
3881 the base plane for \mathcode and \catcode assignments,
3882 since the fonts as well as the hyphenation patterns
3883 are strictly 16-bit still.
3886 \pdfpagewidth and \pagewidth,
3887 \pdfpageheight and \pageheight,
3888 \fontcharwd and \charwd,
3889 \fontcharht and \charht,
3890 \fontchardp and \chardp,
3891 \fontcharic and \charic,
3892 are all aliases of eachother.
3896 clears a marks class completely.
3898 * The experimental pdftex primitives
3903 and provided without the extra 'pdf' prefix, so they are
3911 * I probably forgot to mention some things :-)