jolt/test/integration
Dmitri Sotnikov 6cace3db90
cgen: single-binary native build via jolt cgen-build (jolt-a7ds) (#150)
Fuse an app's native-compiled numeric-leaf fns plus its source into one
static executable: no sidecar .so, no toolchain on the target. The AOT path
(#148) already produced a prebuilt module + manifest; this links them into
the jpm-built exe so the app ships as a single file.

`jolt cgen-build -m NS -o OUT` stages a build dir (src/jolt-core symlinks
into the jolt tree, a generated cg.c of the hot fns, an uberscript bundle of
the app, and an entry that bakes the runtime, installs the native fns as var
roots, and runs -main), then runs `jpm build` there — declare-native builds
cg.a and declare-executable static-links it (jpm's create-executable marshals
the module cfns and calls its static entry at startup).

Build needs cc + jpm; the result needs neither. Mechanics that bit, codified
in cgen_build.janet: stdlib_embed slurps .clj cwd-relative so the build runs
in a repo-mirroring dir; jpm hardcodes ./project.janet and sets syspath=modpath;
the executable's dofile imports cg and static-links cg.a, neither ordered nor
release-built by default, so deps are wired explicitly; cleanup must lstat (the
tree symlinks must not be followed); the inner build runs --workers=1 so it
doesn't starve siblings in the parallel gate.

test/integration/cgen-build-test.janet builds the mandelbrot fixture, runs it
from a clean dir with no src/ and no cg.so, and checks the total at native
speed. Closes jolt-a7ds.

Co-authored-by: Yogthos <yogthos@gmail.com>
2026-06-16 20:34:10 +00:00
..
aot-test.janet Compiler research (#10) 2026-06-09 07:30:25 +08:00
api-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
app-scope-wholeprogram-test.janet Scope whole-program optimization to app namespaces (jolt-87e) (#126) 2026-06-15 18:02:54 +00:00
bootstrap-fixpoint-test.janet Compiler research (#10) 2026-06-09 07:30:25 +08:00
cap-record-type-test.janet Keep record :type through depth-capping (jolt-3ko) (#131) 2026-06-16 08:21:40 +08:00
cgen-aot-test.janet cgen: build-time AOT — native fns without a toolchain on the target (jolt-a7ds) (#148) 2026-06-16 18:09:22 +00:00
cgen-build-test.janet cgen: single-binary native build via jolt cgen-build (jolt-a7ds) (#150) 2026-06-16 20:34:10 +00:00
cgen-pipeline-test.janet cgen: install native fns into the compile path under JOLT_CGEN (jolt-ihdp) (#146) 2026-06-16 17:12:48 +00:00
cgen-test.janet cgen: content-address and cache the compiled .so (jolt-ihdp) (#147) 2026-06-16 17:37:35 +00:00
cli-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
clojure-stdlib-suite-test.janet edn: fix strict-map? regression in edn->value; apply EDN built-in tags 2026-06-10 12:25:45 -04:00
clojure-test-suite-test.janet core: zero?/pos?/every? to 00-syntax, char? to the overlay; fix rest/next over sets and maps 2026-06-11 13:24:51 -04:00
compile-mode-test.janet errors: unresolved symbols error with Clojure's message (jolt-2o7.3) 2026-06-12 10:07:48 -04:00
config-lib-test.janet core: java shims for yogthos/config + three conformance fixes 2026-06-11 00:11:04 -04:00
conformance-test.janet feat: run the real clojure.tools.logging (defmacro/syntax-quote/ns + host shims) 2026-06-13 18:50:53 -04:00
cross-ns-hints-test.janet Record type hints resolve across namespace boundaries (fields and params) 2026-06-14 12:40:14 -04:00
ctx-image-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
deps-aliases-test.janet deps: aliases, user config merge, tools.deps conflict semantics 2026-06-10 23:13:46 -04:00
deps-cache-args-test.janet Fix -m arg drop under whole-program cache (jolt-4mui) + RFC 0003 sync (#138) 2026-06-16 13:34:08 +00:00
deps-conflicts-test.janet deps: aliases, user config merge, tools.deps conflict semantics 2026-06-10 23:13:46 -04:00
deps-conformance-test.janet regex: \p{...} property classes; interop: the String method surface (cuerdas is green) 2026-06-10 21:29:22 -04:00
deps-loader-test.janet test: fall back to /tmp when TMPDIR is unset (Linux CI) 2026-06-05 23:07:20 -04:00
deps-merged-cli-test.janet Fold jolt-deps into the jolt binary (#133) 2026-06-16 10:30:28 +08:00
deps-resolve-test.janet deps: :jpm/module coordinates; the janet.* bridge autoloads jpm modules 2026-06-11 20:58:43 -04:00
deps-tasks-test.janet deps: global gitlibs-style clone cache + :tasks runner 2026-06-10 23:22:36 -04:00
devirt-test.janet Direct-link + whole-program by default for program runs; open for the REPL 2026-06-14 15:44:01 -04:00
direct-linking-test.janet Fix record field-reorder redefine (jolt-wf4) and builtin-shadowing local names (jolt-fjb1) (#124) 2026-06-15 16:46:00 +00:00
dispatch-cache-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
embedded-stdlib-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
fallback-zero-test.janet test: fallback-zero uses a resolvable multifn for get-method/methods 2026-06-13 16:11:27 -04:00
features-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
inline-sra-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
ir-passes-test.janet Refactor phase 3a: one map-ir-children combinator for the IR rewrite walks (jolt-26dm) 2026-06-15 04:57:42 -04:00
ir-try-shape-test.janet Refactor phase 3b: keep :try IR nodes structs, not phms (jolt-26dm) 2026-06-15 05:09:02 -04:00
jank-conformance-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
lazy-infinite-test.janet core: staged recompile for early defns; keys/vals/empty? leave the seed (jolt-4j3) 2026-06-10 16:16:23 -04:00
macro-expansion-test.janet core: staged recompile for early defns; keys/vals/empty? leave the seed (jolt-4j3) 2026-06-10 16:16:23 -04:00
mutable-deftype-test.janet Support mutable deftype fields under shapes (jolt-c3q) (#125) 2026-06-15 17:45:29 +00:00
namespace-test.janet core: close the compile-path gaps that broke uberscripting Selmer + config 2026-06-11 01:31:50 -04:00
nrepl-test.janet ci: fix the one red test on CI runners; document the gate + porting gotchas 2026-06-10 16:59:12 -04:00
phint-propagation-test.janet Propagate declared record hints through the whole-program fixpoint (jolt-3ko) (#134) 2026-06-16 03:38:03 +00:00
predicate-fold-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
record-declared-shape-test.janet Records are not vectors: vector?/sequential? false for shape-recs (jolt-14k) 2026-06-14 17:45:30 -04:00
record-shape-test.janet type-aware record equality + assoc extension + record-shape test (jolt-t34 R3) 2026-06-13 20:40:50 -04:00
scalar-replace-record-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
sci-bootstrap-test.janet core: close the compile-path gaps that broke uberscripting Selmer + config 2026-06-11 01:31:50 -04:00
sci-runtime-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
self-host-test.janet core: staged recompile for early defns; keys/vals/empty? leave the seed (jolt-4j3) 2026-06-10 16:16:23 -04:00
selmer-test.janet core: java.time + java.io shims — Selmer renders end to end (jolt-ea7) 2026-06-10 22:29:53 -04:00
shape-transparency-test.janet feat: general shape-record mechanism — consistent representation + transparency (jolt-t34 R1) 2026-06-13 20:40:50 -04:00
sorted-rbtree-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
staged-bootstrap-test.janet Compiler research (#10) 2026-06-09 07:30:25 +08:00
struct-hint-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
suite-worker.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
systematic-coverage-test.janet core: AOT context image — init-cached recovers the bootstrap cost across processes 2026-06-10 13:57:37 -04:00
type-check-test.janet feat: negative/never types — calling a non-function, wrong-arity (jolt-wwy) 2026-06-13 14:48:14 -04:00
type-infer-phase1-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
type-infer-phase2-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
type-infer-phase3-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
type-infer-test.janet Parallelize the test gate; cache cold-init tests, drop the benchmark from it (#139) 2026-06-16 14:23:02 +00:00
uberscript-dce-test.janet Dead-code elimination in jolt uberscript (jolt-atg) (#130) 2026-06-15 22:25:44 +00:00
uberscript-test.janet deps phases 3-4: uberscript bundling + conformance harness 2026-06-05 23:36:40 -04:00
whole-program-test.janet Direct-link + whole-program by default for program runs; open for the REPL 2026-06-14 15:44:01 -04:00