Some further testing, and a clarification of my earlier message to tex-live.
The following happens on the Mac, when typesetting a file with content
% !TEX TS-program = LuaLaTeX
\documentclass{article}
\begin{document}
Hello
\end{document}
having removed beforehand the directories ~/Library/texlive/{2023,2024},
equivalent to ~/{.texlive2023,.texlive2024} on Unix.
Using TeX Live 2023, with luaotfload at version 3.28: everything OK, the file
is typeset successfully and the directory tree
~/Library/texlive/2023/texmf-var/luatex-cache and the font cache inside are
created in the process.
Using TeX Live 2024, same luaotfload version 3.28: things don't work, any
attempt to typeset the file gives
This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)
restricted system commands enabled.
(./luaotfload-test.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>
luaotfload | load : FATAL ERROR
luaotfload | load : × Failed to load "fontloader" module "basics-gen".
luaotfload | load : × Error message:
luaotfload | load : ×
"...024/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:301: system : no
writeable cache path, quiting".
stack traceback:
...ive/2024/texmf-dist/tex/luatex/luaotfload/luaotfload.lua:200: in
local 'load_fontloader_module'
...024/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:303: in
upvalue 'init_main'
...024/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:590: in
function 'luaotfload-init.lua'
...ive/2024/texmf-dist/tex/luatex/luaotfload/luaotfload.lua:322: in
field 'main'
[\directlua]:1: in main chunk
[...]
and no ~/Library/texlive/2024 is created.
Running "luaotfload-tool --update" in Terminal (with zsh the default shell on
the Mac) creates ~/Library/texlive/2024/texmf-var/luatex-cache and the font
cache inside it, without any problem; afterwards the file typesets OK. But the
same does not happen when ~/Library/texlive/2024 does not exist and LuaTeX
launches luaotfload-tool during its run.
Using "luaotfload-tool --cache=show" as a diagnostic tool is misleading,
because this creates an (empty) hierarchy
/Library/texlive/2024/texmf-var/luatex-cache/generic/names, and the next time
the file is typeset LuaTeX has no problem generating the cache inside this
hierarchy.
I tried replacing version 3.28 of luaotfload by version 3.26 in TeX Live 2024:
the problem remains the same. It looks like it's been there all along the
pretest, and I had missed it from the beginning. Sorry for that! Only switching
back to the version of LuaTeX in TeX Live 2023 solves the problem, as others
have said.
Bruno Voisin