[luatex] Luatex primitive names

Javier Múgica javier at digi21.eu
Wed Mar 11 13:16:27 CET 2009

If we (well, not me, the LuaTeX team) states in bold, red, at the
first page, that "Absolutely nothing on the following pages is set in
stone. When the need arises, anything can (and will) be changed
without prior notice." is precisely to avoid starting this soon to
care about backward compatibility, and to be free to make changes that
seem worth making even if they brake previous version's code.

Somebody in this thread stated that he dind't care about absolute
backward compatibility before reaching version 1.0. Well, I would be
more radical and say that don't care about backward compatibility *at

>Then he wants to compile his document on his university's servers, or send him
>to a friend, still using and older TL.
>Please note that in the above scenario no one is using LuaTeX before it becomes
>stable. The only assumption made is that there will still be pre-0.5 versions
>around when 1.0 will be out. And I repeat: given the age of the TeX systems
>still being used today, this case will most certainly happen.

It is enough that somebody tell him that LuaTeX is a program from 2012
and so he cannot compile with older software. Indeed, he would most
likely ask the friend who suggested him the use of luatex what's the
problem and he will get the answer from him that he has to use a
recent Latex version.

So simply write \directlua. If you want to play with LuaTeX before
version 0.4 (or 0.5, whenever the syntax is changed) just write
\directlua0 meanwhile, but anybody writin packages for luatex versions
before 1.0 is liable to keeping  the code updated.

If I ever write a package for luatex, after version 1.0 is removed, I
will not attempt any single backward compatibily for versions that
still carry the warning "anything can (and will) be changed without
prior notice".

But I don't understand why package writters insist on testing for the
version instead of testing for the existence of the command they want
to use. For example, the package microtype has several of

  <some code using a new primitive>
  <some other code>

one of them test for version >1.5 (or 1.6) in order to use \pdfstrcmp.
Now this is wrong with luatex because the test for the version is true
but the primitive has been removed. It would be just as easy to
directly test the existence of \pdfstrcmp or that it equals
\pdfprimitive\pdfstrcmp (I have never used \pdfprimitive, so dont take
literally this code but read what I mean)

Javier A.

More information about the luatex mailing list