launcher要用到lib3rdparty.dll,于是会动态链接lua5.4。因为包含miktex,会静态链接lua5.3。 那能不能做到只用一个lua?理论上可能,现实中不能。升级miktex中的lua从5.3到5.4,这链接的最后有说可能的难度。总之,不要自个升级lua,等官方升。
这意味着,必须接受launcher得存在多个lua版本的现实。这就要解决两个问题。
一、确保lualatex调用的是lua5.3,其它的是lua5.4
lualatex需要包含lua5.3目录中头文件。
lua5.4编译成c++函数,lua5.3保持官方的c。这样两版lua实现的是同名但不同类型的函数,要是lua5.3没编译,luatex会报没定义函数。
二、.减少链接开销
MiKTeX中lua_load调用开销问题,这里叙述了链接开销这怎么回事。大致来说,luatokencall是lualatex实现的函数,要调用lua_load,从luatokencall开始调用、到lua_load开始执行,中间花了9860微秒,deepseek认为这是链接歧义导致的开销。这开销有近10毫秒,很大了。相比如果没有歧义,而且是静态链接,这个开销<1微秒。