From c908e996c32fe3640ca81db93909e0df7b2fbdb0 Mon Sep 17 00:00:00 2001 From: Yogthos Date: Tue, 23 Jun 2026 15:52:34 -0400 Subject: [PATCH] docs: note direct-linking in release/optimized builds --- docs/tools-deps.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/tools-deps.md b/docs/tools-deps.md index 05781c8..ed6f9e4 100644 --- a/docs/tools-deps.md +++ b/docs/tools-deps.md @@ -96,6 +96,12 @@ a C compiler; `JOLT_CHEZ_CSV` overrides the auto-detected `csv/` dir. `--opt` turns on the inference/flatten/scalar-replace passes; the default `release` mode is const-fold only. +`release` and `--opt` are closed-world: a call between the app's own functions +binds to its target directly, skipping the var lookup and generic dispatch a +runtime call pays. That assumes app vars are final — mark one `^:redef` (or +`^:dynamic`) to keep it redefinable and indirect. `--dev` keeps everything +indirect/open. Calls into `clojure.core` stay indirect in every mode. + ## Limitations - Pure `clj`/`cljc` only — JVM interop, host classes, and unimplemented