You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(build.mcpp): a missing mcpp:: API now says the engine may be too old
A package that adopts a new typed directive cannot be used by an older mcpp,
and until now the only thing the reader saw was
error: 'runner' is not a member of 'mcpp'
which reads like the package author's typo rather than the reader's engine
being out of date. The wire protocol's own answer (protocol_error names
`mcpp self update`) never reaches this case: it needs the program to have
compiled first.
The package cannot solve it either. Measured:
if constexpr (requires { mcpp::runner("qemu"); }) // hard error
A requires-expression over a qualified name that does not exist is ill-formed,
not `false`, so there is no in-language feature probe.
So the compile failure carries the hint, matched across all three frontends'
spellings and anchored on our namespace so an ordinary error does not get it.
This covers every future typed-API addition, not just `runner`.
Also corrects docs/07 (both languages), which still claimed an unknown
directive "can only be a typo" within one protocol version — the engine's own
diagnostic was corrected away from that when link-script landed: the protocol
number is stamped by whichever mcpp compiled the program, so two matching
numbers say nothing about whether the key is from the future.
0 commit comments