will.anderson 8ce8656de2
El SDK CI - dev / build-and-test (pull_request) Successful in 7m33s
epm: declare cross-module callees as extern fn so strict compilers accept generated C
epm's sibling modules (registry/install/update) call functions defined in other
modules and in the El runtime (config, read_installed, registry_find,
manifest_deps, manifest_name, registry_latest_version, registry_token,
install_vessel, installed_version) without importing them, so elc emits no C
prototype for those calls. gcc<=13 treated the resulting implicit declarations
as warnings; gcc>=14 and clang reject them as hard errors, which is why the
"Build epm" CI step fails and blocks the whole dev/stage pipeline.

Add `extern fn` forward declarations -- El's own separate-compilation mechanism
-- for each cross-module callee at the top of registry/install/update. This
gives elc the correct C prototype in every generated translation unit, so the
calls compile cleanly and still resolve at link time. Simply suppressing
-Wimplicit-function-declaration would be unsafe: an implicit int return
truncates the 64-bit pointer returns of config/registry_find into a latent
crash, so declaring the true signatures is the correct fix. Localized to epm;
touches neither elc nor the runtime.
2026-07-15 10:14:43 -05:00
S
Description
The Engram programming language — types as knowledge nodes, quantum-sealed prod target
147 MiB
2026-07-15 21:41:18 +00:00
Languages
Emacs Lisp 74.6%
C 21.9%
HTML 1.5%
Objective-C 0.6%
Shell 0.6%
Other 0.8%