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