jetc: rename --shared build output convention from .so to .jtc

Purely a naming-convention change per user request, not a format
change - the output is still a real ELF shared object (-shared -fPIC),
still dlopen()-able exactly as before. .jtc ("jet compiled") marks it as
an APIServer-loadable content module rather than a generic library.

build-shared.sh: usage text and STEM derivation
(basename "$OUTPUT" .so -> .jtc) both updated - the STEM change is the
one functional piece here, everything else in this commit is comments/
usage strings. Doc comments in jetc.cpp/JetCodegen.h/host_test.cpp/
api_test.cpp updated to match.

Verified live: rebuilt jetc and all five demo*.jtc modules, reran
api_test/host_test against demo3.jtc (still resolves jetc_api_demo3/
jetc_render_demo3 and renders correctly) - the extension is purely
cosmetic to dlopen(), as expected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Brad ArantandClaude Sonnet 5 committed 2026-08-25 11:41:44 -07:00
1 parent 3f273b0a95
commit 9bbb95cc57
6 files changed
+28 -22

No files matched your search

+3 -3
View File
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
// is stripped - a plain directive line, not a new tag/attribute concept,
// since jetc's parser has no existing notion of the enclosing <jet> tag's
// attributes to hang this off of. Each becomes one route this template
// wants to serve once loaded as a .so (see JetCodegen's apiRoutes).
// wants to serve once loaded as a .jtc (see JetCodegen's apiRoutes).
std::vector<jetc::ApiRoute> apiRoutes;
while (src.rfind("#api ", 0) == 0) {
size_t nl = src.find('\n');
@@ -88,8 +88,8 @@ int main(int argc, char **argv) {
jetc::Codegen codegen;
// Both symbols are derived from the input filename (not the output
// path) so they stay stable and predictable for whatever builds and
// dlsym()'s the resulting .so - unique per template, so multiple
// compiled templates' .so's can coexist in one process even under
// dlsym()'s the resulting .jtc - unique per template, so multiple
// compiled templates' .jtc's can coexist in one process even under
// dlopen(..., RTLD_GLOBAL) instead of requiring isolated handles.
std::string baseIdent = sanitizeIdent(baseNameNoExt(inputPath));
std::string symbol = "jetc_render_" + baseIdent;