The C and C++ compiler helper: one program, one compiler, one protocol.
codehelion never links a compiler. This program does — through libclang's
stable C interface, loaded when it starts rather than built into it — and
talks to the tool over the length-prefixed protocol in codehelion-helper.
A compiler that is not installed, will not load, or takes forever costs a
scan its semantic answers about C and C++ and nothing else.
When there is no Clang to load
The program says which library is missing on its standard error and stops.
That is the whole diagnosis: the client keeps what a helper printed before
it went and reports it, so doctor shows the sentence naming what to
install rather than a program that mysteriously would not talk. Answering
the handshake and then refusing everything would be worse — it would look
installed and working right up until a scan came back empty.
Control-flow graph evidence
libclang does not expose Clang's own CFG. When a fixed clang executable
is installed, the helper separately invokes it in syntax-only mode with
Clang's debug.DumpCFG checker. The compilation database supplies only
arguments that have passed a read-only filter; it never supplies an
executable, plugin, response file, or output path.
It also runs nothing out of a project, at any permission, and offers no execution class at all. A C++ project without a compilation database has one because a configure step would write it, and running that is running the project's own program — so this helper reports the files it cannot speak for rather than producing the database it would need.