[Dev-luatex] Snapshot 20060915

Taco Hoekwater taco at elvenkind.com
Fri Sep 15 16:39:39 CEST 2006


Hi,

Here we go again. The new snapshot has the following
changes compared to 20060908:

* There is a new TEX primitive: \formatname. It is similar
   to \jobname (read-only). In initex, the expansion is empty,
   otherwise the expansion is the same as the \jobname from
   the initex run.

* the lua "tex" table has been expanded with a few of the 'convert'
   codes (read-only). The supported ones at this moment are:

   tex.eTeXVersion
   tex.OmegaVersion
   tex.AlephVersion
   tex.pdftexrevision
   tex.pdftexbanner
   tex.pdfnormaldeviate
   tex.jobname
   tex.formatname
   tex.eTeXrevision
   tex.Omegarevision
   tex.Alephrevision

   This list looks haphazard,  but it really is not. These are
   all the cases of the 'convert' internal command that do not
   require an argument.

* The metatables of the subtables like tex.dimen[] etc. are now
   adjustable from lua (not that I recommend doing that;-)).

* On the lua side, there is a new global value: "luaid"
   It holds the internal id number of this \directlua instance.

* There is a new lua table, "callback", that has the single function
   "callback.register", used to register callbacks.   This replaces
   the previous concoction (see my message about snapshot 20060901).
   Syntax is :

   callback.register(<callback name>,function (f) ... end)

   where the <callback name> is for the moment, either "input_line"
   or "show_error_hook".

   This function internalizes the callback function in such a way
   that you no longer have to worry about \luacallback (which has
   been removed), nor does it matter if you redefine a function
   accidentally.

  The internal testing for callback presence is also quite a bit
  faster, thanks to this change. Callback assignments are global
  and the "input_line" always takes effect starting on the next
  input line to be read from an actual file.


* \detokenizedlua has been removed. It is functionally replaced by
   the new function call tex.write("").

   Each argument to each call of tex.write () counts as an input
   line, but:
   ** all catcodes on that line are either 'space' (for " ") or
      'character' for all others.
   ** there is no \newlinechar appended.

* The implementation of tex.print() has changed as well:

   ** the very last tex.print() line from a \directlua
      will no longer have a trailing \newlinechar
      (this is very convenient when \directlua is used
      within an \edef)
   ** tex.print() is quite a lot faster than before, and the total amount
      of returnable text from a \directlua is now only limited by
      available system RAM. However, each separate tex.print ()
      argument has to fit in TeX's input buffer.

* The new primitive \luastartup can be set inside the format file
   to specify the lua instance number in which a possible runtime
   startup.lua script is executed (initex always uses 0)

* There is a new primitive \scantextokens. Differences with
   eTeX's \scantokens are:

   ** the last line (usually only) from \scantextokens
      does not have a \newlinechar

   ** \scantextokens never raises an eof error.

   This means things like

   \edef\testone
         {\scantextokens{\ifnum1=1 true}\else false\fi}

   are legal input (but potentially dangerous!).

* If you say
      local d  = tex.dimen["unknowndimen"]
   'd' will now become "nil" instead of raising an error

    However,
      tex.dimen["unknowndimen"] = d
    is still (and probably will remain) illegal

Have fun, Taco


Downloading and installation details:

If you go to

      https://foundry.supelec.fr/frs/?group_id=10

you will see that there are two new released files:

* luatex-snapshot-20060915.tar.gz
      This is the source tree.

* luatex-snapshot-20060915-win32.zip
      A cross-compiled (mingw) windows binary. This is a web2c
      based binary, so it needs a texmf.cnf file (It will NOT
      work if you have only miktex installed).

      This executable cannot run dynamically loaded lua dlls. Perhaps
      that can be fixed but I do not know how.



More information about the dev-luatex mailing list