我以前经常更新 MiKTeX,可能是因为更新过程快速、方便和简单(与 TeX Live 相比)。但是我想知道为什么 MiKTeX 作者如此频繁地发布可执行文件的更新版本(通常约 90 个单元)。例如,上一次更新的日期是 4 月 20 日,最后一次更新的日期是 5 月 12 日。在我看来,TeX 核心非常稳定。那么如此频繁更新的原因是什么?
答案1
我查看了 MikTeX 源代码存储库(我尝试在 Windows 中使用 clang 对其进行编译)。我可能有一个答案。这是我基于数十年软件工程经验得出的观点。
MikTeX 源代码导入了数百个其他项目的源代码。然后维护者手动修改它们,使它们在 MikTeX 中工作。工作量是惊人的。仅CMakeLists.txt
手动编写的文件数量就达到 238 个。这意味着需要修改的其他文件数量可能达到数千个。当你进行如此多的手动修改时,你 100% 肯定会引入新的错误和问题。例如,在 Windows 中,MikTex 的LuaLaTeX
速度比 TexLive 慢一个数量级。在 Linux 中,全新安装的 MikTeX 存在语言包问题。内存中的包列表存在错误,有时它是空的,MikTeX 拒绝自动下载包。这些错误永远不会得到解决,因为维护者没有时间和资源来重现它们,只能进行修复。
考虑到 MikTeX 只有一名维护者,答案是始终存在很多重大问题,作者必须经常发布更新来修复这些问题。
从软件设计角度来看,MikTeX 就像是一挺威力强大的机关枪,射中了自己的腿(实际上,是两条腿,甚至更高)。这是一场自己造成的维护噩梦,没有留下任何改进和修复错误的余地。
在查看了 MikTeX 的源代码后,我在 Linux 和 Windows 中都切换到了 TeXLive,现在正在享受实时(双关语)。在 Linux 中,TexLive 的 LuaLaTeX 以火箭般的速度处理页面,在我的笔记本电脑上,13 秒就可以处理 100 页。