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