BUILT.md gains the section on the third target and corrects the claim it already carried: emscripten_set_main_loop had the browser fact right and drew the wrong conclusion, because asyncify answers the same fact without cutting main in half. NEXT.md gets the four holes. sand.flan has no web build, and the proximate cause is that vendor/agent/flan_agent.c:426 uses struct timeval without pulling in sys/time.h, which glibc gives it transitively and emscripten does not; sand's main calls agent/start unconditionally so Reach cannot prune it. Beneath the include is the decision worth making rather than patching around: the agent is a socket server and the browser has no sockets, so the honest fix is to refuse vendor:agent on a web target the way --dev is refused. Assets are two questions and only the easy one is about emscripten. --embed-file is a linker argument and so already expressible as an @web line. The hard one is that the file doing (rl/load-texture "brush.png") is structurally the one file that cannot say so: Load hands out lflags only for a directory package, and main is not exported, so a program can never be one. No flag was invented for it. And nothing has been opened in a browser, asyncify's cost is quoted rather than measured, and audio and threads on web are untried.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%