Liking cljdoc? Tell your friends :D

skeptic.worker.server

Worker-side nREPL server. Runs in the spawned JVM on the combined project-first launch classpath and answers host requests on demand. Project operations run on the clojure.main launch thread, so project code loads exactly as the project's own runtime loads it — Skeptic adds no reader-Var or loading machinery. Plan 2 Phase 1.5 adds the handle-table machinery: every Class operand on the wire is an opaque handle (integer for bootstrap-interned host-runtime classes; UUID-string for project classes). Worker is sole owner of Class/forName, .isAssignableFrom, instance?, and class equality.

Phase 5 adds the analyzer ops. The analyzer-execution glue lives in skeptic.worker.analyzer-clj / skeptic.worker.analyzer-cljs. No other skeptic.* namespace is required from this server: Skeptic's own analysis code and Plumatic Schema / Malli stay on the host (B3/B4).

nREPL is lazy-loaded inside start! from the worker JVM's single launch classloader (project-cp first, worker jars second). The ns form does NOT require any nrepl.* namespace at load time — projects pinning a different nrepl win their version via first-occurrence on the launch cp. The wrap-* dispatchers are let-bound inside start!, closing over locally resolved nrepl.transport/send, nrepl.misc/response-for, and nrepl.server/{start-server,unknown-op}. Descriptor metadata is dead code under the explicit handler thread and has been removed.

Worker-side nREPL server. Runs in the spawned JVM on the combined
project-first launch classpath and answers host requests on demand. Project
operations run on the clojure.main launch thread, so project code loads
exactly as the project's own runtime loads it — Skeptic adds no reader-Var
or loading machinery. Plan 2 Phase 1.5 adds the handle-table machinery: every Class
operand on the wire is an opaque handle (integer for bootstrap-interned
host-runtime classes; UUID-string for project classes). Worker is sole owner
of `Class/forName`, `.isAssignableFrom`, `instance?`, and class equality.

Phase 5 adds the analyzer ops. The analyzer-execution glue lives in
`skeptic.worker.analyzer-clj` / `skeptic.worker.analyzer-cljs`. No other
`skeptic.*` namespace is required from this server: Skeptic's own analysis
code and Plumatic Schema / Malli stay on the host (B3/B4).

nREPL is lazy-loaded inside `start!` from the worker JVM's single launch
classloader (project-cp first, worker jars second). The ns form does NOT
require any nrepl.* namespace at load time — projects pinning a different
nrepl win their version via first-occurrence on the launch cp. The
`wrap-*` dispatchers are let-bound inside `start!`, closing over locally
resolved `nrepl.transport/send`, `nrepl.misc/response-for`, and
`nrepl.server/{start-server,unknown-op}`. Descriptor metadata is dead
code under the explicit handler thread and has been removed.
raw docstring

*project-operation-thread*clj

source

-mainclj

(-main & _args)
source

run-worker!clj

(run-worker! announce-port!)

Start the worker and run the project-operation loop on this thread — the clojure.main launch thread the project's own boot set up, where lein's prep, :global-vars, and :injections already ran. Project code loads exactly as the project's own runtime loads it: Skeptic adds no reader-Var machinery, so every registration mechanism behaves as it does under the project's own clojure.main (observed in .scratch/reader-probes/). nREPL handler threads enqueue project operations onto this thread's queue. announce-port! is called with the bound port once the server is up: the owned Lein subprocess writes a port-file, direct launch prints the stdout handshake line.

Start the worker and run the project-operation loop on this thread — the
`clojure.main` launch thread the project's own boot set up, where lein's
prep, `:global-vars`, and `:injections` already ran. Project code loads
exactly as the project's own runtime loads it: Skeptic adds no reader-Var
machinery, so every registration mechanism behaves as it does under the
project's own `clojure.main` (observed in `.scratch/reader-probes/`).
nREPL handler threads enqueue project operations onto this thread's queue.
`announce-port!` is called with the bound port once the server is up: the
owned Lein subprocess writes a port-file, direct launch prints the stdout
handshake line.
sourceraw docstring

start!clj

(start! request-shutdown!)

Lazy-load nREPL, then start a server with an explicit handler chain. Every nREPL Var (t/send, response-for, srv/start-server, srv/unknown-op-equivalent) is resolved here from the worker JVM's launch classloader (project-first) so a project pinning a different nrepl wins via first-occurrence. Wrap-* dispatchers are let-bound inside this fn — they close over locally resolved t-send and resp-for, never reference a namespace-scoped alias. The shutdown callback is mandatory so a successful shutdown reply always corresponds to an actual server stop request.

Lazy-load nREPL, then start a server with an explicit handler chain. Every
nREPL Var (`t/send`, `response-for`, `srv/start-server`,
`srv/unknown-op`-equivalent) is resolved here from the worker JVM's launch
classloader (project-first) so a project pinning a different nrepl wins
via first-occurrence. Wrap-* dispatchers are let-bound inside this fn —
they close over locally resolved `t-send` and `resp-for`, never reference
a namespace-scoped alias. The shutdown callback is mandatory so a successful
shutdown reply always corresponds to an actual server stop request.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close