jolt/test/integration
Dmitri Sotnikov bffb492c1c
cgen: build-time AOT — native fns without a toolchain on the target (jolt-a7ds) (#148)
Splits native codegen into a build phase (needs cc) and a deploy phase (none):

- gen-c-module/compile-module compile MANY numeric-leaf fns into ONE native
  module (the AOT shape), generalizing the one-fn-per-.so JIT path.
- Backend :cgen-collect? records each numeric-leaf defn's IR while the app loads
  as bytecode; cgen/aot-build compiles them into one module and write-manifest
  persists {sopath, [{ns name sym}]}.
- Backend :cgen-prebuilt + cgen/load-aot: the deploy run loads the prebuilt .so
  (via the native builtin, no cc) and installs each cfunction as the var root
  with the same timing as the JIT path, so callers direct-link to native code.
- toolchain-available? no longer crashes when cc is off PATH (os/execute raises
  on a missing exe) — a toolchain-less target now gets false.

Proven end-to-end in two processes (spike/native/aot-demo.janet): build with cc,
then deploy with cc removed from PATH -> count-point still native, mandelbrot
3288753 at 12.4ms (full 18x). Test: test/integration/cgen-aot-test.janet. Default
path unchanged; the modes are opt-in. Gate green (118 files).

Remaining for a literal single binary: fuse the .so + manifest into the jpm exe.

Co-authored-by: Yogthos <yogthos@gmail.com>
2026-06-16 18:09:22 +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-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