[Dev-luatex] next steps in development

Hans Hagen pragma at wxs.nl
Sun May 7 20:25:52 CEST 2006


Taco Hoekwater wrote:
> Hi,
>
> Hans Hagen wrote:
>>
>> (1) \luadef\cs
>>
>> goal: starts an lua instance
>> usage: \luadef\lua
>
> Expect the primitive syntax to be more like the internals of \toksdef,
> so the toplevel user command would be \newlua.
>
> There is a catch though: I want to reserve one number for internal
> use (callback functions that handle C functionality, like finding
> files). Maybe 255, since Tex uses 255 for various things anyway.
> WDYT?
ok, although we get an insert like \new* then, so how about just 
starting at zero and then advice (given a luadef); also, we've run out 
of alloc  counters, so we may as well implement newlua different anyway

\newlua \luacallback
\newlua \lua  

i.e.

\luadef \lucacallback 0
\luadef \lua 1

anyhow, since we cannot use \alloc@ , the 255 is also ok

\newcount\@@luainstances

\def\newlua#1%
  {\global\advance\@@luainstances \ifnum\@@luainstances=254 2\else 1\fi
   \luadef #1 \@@luainstances}
   
if we compare to boxes, counts etc, there is not something like \lua0 to 
use as scratch lua instance unless we also can reset such an engine 
which we need anyway (btw, lua instances are grouping transparent)

we can have a \luadispose (or do a redef) but then we alse need to be 
able to check if an \cs is representing a lua etc etc although we may 
assume sane usage

\def\newlua#1%
  {\ifx#1\undefined \global\advance\@@luainstances 
\ifnum\@@luainstances=254 2\else 1\fi \fi
   \luadef #1 \@@luainstances}

ok:

\newlua \temp % new instance
\newlua \temp % kill existing and create instance
\newlua \temp % kill existing and create instance

while:

\newdimen \temp

\newlua \temp % fails unless  we have an \iflua\cs as in:

\def\newlua#1%
  {\iflua#1\else \global\advance\@@luainstances 
\ifnum\@@luainstances=254 2\else 1\fi \fi
   \luadef #1 \@@luainstances}

\def \temp {whatever}

\newlua \temp % fails unless  we have an \iflua\cs as in:

of course this overload can also happen with registers but then we only 
loose some mem, while with lua we get pending engine *using up much mem)

>
>> (3) \immediate\luacs
>>
>> goal: feeds back into the token scanner (no need for scantokens, 
>> faster due to less parameter passing)
>> usage: \immediate\lua{tex.print("$x$")}
>
> This could be the normal behaviour of tex.print(), and if you do
> not want it, you could run \detokenize yourself. And we could have
> a separate function tex.write() for detokenized use.

I opt for two functions (no messing around with detokenization)
>
>> further, taco and i discussed a lua extension using a variant of 
>> strings using 32 bit entries, partly for the unicode chars and partly 
>> for the \cs etc pointers so that we can do stringlike thinsg with 
>> token lists
>
> I will write up some stuff about this later this week.
>
>> well, we discussed more, but i need to search my memory -)
>
> Amongst other things, we also talked about a new way to load
> and use fonts:  not letting TeX read .tfm and .vf files, but
> using a ruby library for the internal font loading. That library
> then has to return a table with a specified set of keys.
> That way, we could have reencoded and synthetic (virtual) fonts
> from all over the place without being tied to compiled code or
> font formats.
indeed; same for map files 

Hans 

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------



More information about the Dev-luatex mailing list