5

MikTeX provides access to the latest binaries through the miktex-nxt update channel. While being windows-only all these years, in 2018, it looks like Mr Schenk is extending his distribution to certain GNU/Linux distros. The problem is that I am not on one of the supported distros and therefore using TL2018 on my linux distro.

The question of updating TL binaries was asked before here for which no satisfactory answer was provided. The only answer there does not provide an actual answer to the OP's question, but instead simply says that the recommended way is to wait for next release of TexLive. The closest explanation for this comes from a comment by Joseph Wright, who says it is non-trivial and that drop-in binaries for non-Windows versions do not exist.

I find all this to be very confusing. There is certainly a binary available for GNU/Linux from the contextgarden/luatex development team here. What is the installation difficulty with this? Why is miktex able to do it while texlive cannot? I am looking for technical answers.

For example, as of today (31/Aug/2018), the latest luatex version is 1.09, but that included with TL 2018 is v1.07. Looking at the reference manual, luatex 1.09 does seem to indicate a performance boost. Furthermore, a new lightweight pdf library is promised. What is the recommended way to update if one does not want to wait until TL2019 is released (which will jump to luatex v1.10)?

I am asking because I have a large thesis with custom lua commands that takes nearly 7-8 minutes to compile on a fast machine and any performance boost to speed this up is welcome.

  • 4
    it;s not that hard to compile the binary from source and drop it into texlive or (I assume) you could use the one from context distrib and similarly copy it in to place. (I don't suppose it helps to know that when I started 10-15 minutes per page was quite common so 8 minutes for a thesis seems pretty fast:-) – David Carlisle Aug 31 '18 at 13:25
  • 3
    note there are good reasons why texlive doesn't update binaries mid-year or encourage users to do so, notably latex isn't extensively tested with the dev builds of luatex (at least the regression tests running on every checkin do not use that) so if (as is often the case) a major luatex update requires format changes to match, you may be "on your own" if you update luatex ahead of the main texlive update. – David Carlisle Aug 31 '18 at 13:27
  • 3
    Concentrate on writing your thesis (focus on the content) and don't waiste time hunting for minuscule performance increases of the tools you use. – Martin Schröder Aug 31 '18 at 13:36
  • 1
    The binaries for ConTeXt are the ones that go into TL (they are compiled by Mojca): you could just grab those if you are desperate. – Joseph Wright Aug 31 '18 at 14:05
  • 2
    programs know the name under which they are called (argv[0] in C speak) – David Carlisle Aug 31 '18 at 14:13
7

tl;dr Download LuaTeX 1.08.0 from the releases page of my LuaTeX repository on GitHub.

Setup Travis CI for your own fork of LuaTeX

It is very easy to build LuaTeX yourself using GitHub and Travis CI.

  1. First of all you will need a GitHub account and associate this account with Travis CI by visiting https://travis-ci.org/ and logging in with GitHub.

  2. Then you fork the official LuaTeX mirror: https://github.com/TeX-Live/luatex/fork

  3. Go to https://travis-ci.org/<your-username>/luatex and activate Travis CI for this repository.

  4. Generate a personal access token with visibility public_repo on https://github.com/settings/tokens

  5. Register the access token in the section Environment Variables on https://travis-ci.org/<your-username>/luatex/settings under the name GH_TOKEN.

  6. Tag a new releases on your LuaTeX fork https://github.com/<your-username>/luatex/releases/new. Travis CI will automatically build the release and deploy the binaries to GitHub.

Build LuaTeX locally using Docker

If you don't want to create a GitHub account, you can also build LuaTeX locally.

  1. Clone the GitHub repository.

    git clone --depth 1 --single-branch https://github.com/TeX-Live/luatex
    

    The repository is huge, so we only clone the latest commit and a single branch.

  2. Go to the cloned directory.

    cd luatex
    
  3. Execute these commands to avoid timestamping issues.

    find . -name \*.info -exec touch '{}' \;
    touch ./source/texk/web2c/web2c/web2c-lexer.c
    touch ./source/texk/web2c/web2c/web2c-parser.c
    touch ./source/texk/web2c/web2c/web2c-parser.h
    

    Otherwise the build will crash with makeinfo: command not found

  4. Run the build script. You need bash, gcc, g++, and make for that.

    ./build.sh --parallel --jit
    

    This will build LuaTeX and LuaJITTeX. The binaries will be generated in the subfolder build/texk/web2c.

    Alternatively, if you can build LuaTeX in Docker.

    docker run -e JOBS_IF_PARALLEL=`nproc --all` \
        -v `pwd`:/luatex -w /luatex -it --rm debian:jessie sh -c \
        "apt-get update; apt-get install -y --no-install-recommends bash gcc g++ make; ./build.sh --parallel --jit"
    

Using my experimental TeX Live repository

If you want to go bleeding edge and always have the latest version of LuaTeX to enjoy all the nice bugs and random crashes, you can use my personal luatex-dev repository for TeX Live. Instructions on how to install are given on the GitHub page:

https://github.com/hmenke/texlive-luatex-dev

  • thank you. I was able to get the latest binaries from the project's download area for linux x86_64 and regenerate the formats successfully using fmtutil. However, v1.08 is unable to compile even the simplest of hello world documents. See here for a very simple example and the problems reported in the log file. – Krishna Sep 1 '18 at 12:39
  • @Krishna yes that is a known issue, you need to install a forked version of luaotfload – David Carlisle Sep 1 '18 at 12:55
  • @DavidCarlisle Yup. Got it. I downloaded Ulrike's version of LuaOTFload and everything works now!. Is this documented anywhere? – Krishna Sep 1 '18 at 12:56
  • No (other than in Ulrike's fork) it will of course work "out of the box" by the time there is a supported release, but if you want to build untested development builds of lualatex you need to be ahead of the documentation sometimes. I really strongly recommend that you only use this for testing and not for any important documents. @Krishna – David Carlisle Sep 1 '18 at 12:59
  • 1
    @Krishna If you always want the latest LuaTeX you can also use my personal repository for experimental LuaTeX. I added a section about it to my answer. – Henri Menke Sep 16 '18 at 5:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.