Malli value objects for the REPL-backend translation layer.
One vocabulary spans both transports: a caller names a VERB and a BACKEND, and a backend PROFILE says which RPC that verb becomes. Everything here is data — no protocol, no function, appears in a schema.
Malli value objects for the REPL-backend translation layer. One vocabulary spans both transports: a caller names a VERB and a BACKEND, and a backend PROFILE says which RPC that verb becomes. Everything here is data — no protocol, no function, appears in a schema.
A transport identifier. :cider drives an nREPL connection through CIDER, :slynk drives a Common Lisp image through SLY.
Deliberately any keyword rather than an enum of the two: a backend becomes real by being registered, and closing this would make the registry's swap point unreachable from outside this namespace.
A transport identifier. :cider drives an nREPL connection through CIDER, :slynk drives a Common Lisp image through SLY. Deliberately any keyword rather than an enum of the two: a backend becomes real by being registered, and closing this would make the registry's swap point unreachable from outside this namespace.
One resolved RPC: callee plus positional arguments, ready for the boundary. Closed — a plan is internal, so an unexpected key is a defect.
One resolved RPC: callee plus positional arguments, ready for the boundary. Closed — a plan is internal, so an unexpected key is a defect.
Why a request could not be planned or executed. :unsupported-verb means the backend's profile has no op for it; :timeout means the transport gave up, which on Slynk is the expected shape of an unresolvable callee.
Why a request could not be planned or executed. :unsupported-verb means the backend's profile has no op for it; :timeout means the transport gave up, which on Slynk is the expected shape of an unresolvable callee.
Source dialect of an :eval request. :cl is a Common Lisp form evaluated as is; :clojure is Clojure source needing a reader/compiler wrapper before the host can evaluate it.
Source dialect of an :eval request. :cl is a Common Lisp form evaluated as is; :clojure is Clojure source needing a reader/compiler wrapper before the host can evaluate it.
A format template turning source of one Lang into a form the backend can
evaluate. %s is the source. Absent means the source needs no wrapping.
A format template turning source of one Lang into a form the backend can evaluate. `%s` is the source. Absent means the source needs no wrapping.
How one verb becomes one call on one backend.
:op/args names the request keys to pass, positionally. :op/defaults supplies values for keys the caller omitted. :op/shape labels the delivered result so a decoder can be chosen without re-inspecting the value.
How one verb becomes one call on one backend. :op/args names the request keys to pass, positionally. :op/defaults supplies values for keys the caller omitted. :op/shape labels the delivered result so a decoder can be chosen without re-inspecting the value.
A key an op may draw its RPC arguments from.
A key an op may draw its RPC arguments from.
The full effect a request translates to: modules to ensure, then the call. The boundary executes it; nothing here performs an effect.
The full effect a request translates to: modules to ensure, then the call. The boundary executes it; nothing here performs an effect.
The measured behaviour of one backend. Swapping a backend is registering one of these — no code above the registry changes (DIP/OCP).
:profile/prelude are modules the transport must load before its ops resolve; on Slynk an op whose package is not yet loaded does not error, it hangs.
The measured behaviour of one backend. Swapping a backend is registering one of these — no code above the registry changes (DIP/OCP). :profile/prelude are modules the transport must load before its ops resolve; on Slynk an op whose package is not yet loaded does not error, it hangs.
A caller's intent, before any backend is consulted. Modelled permissively: MCP hands every param through as a string.
A caller's intent, before any backend is consulted. Modelled permissively: MCP hands every param through as a string.
A package-qualified callee. For :slynk the package qualification is load bearing and must be the one verified in the running image, not the one the source tree suggests.
Carries its own generator: the qualification is too sparse in random strings for such-that to find it.
A package-qualified callee. For :slynk the package qualification is load bearing and must be the one verified in the running image, not the one the source tree suggests. Carries its own generator: the qualification is too sparse in random strings for such-that to find it.
Registry entries for the REPL translation vocabulary.
Registry entries for the REPL translation vocabulary.
(valid-profile? x)Does X conform to Profile?
Does X conform to Profile?
The verb vocabulary, shared by every backend. A backend that cannot serve a verb omits it from its ops map rather than defining a failing handler.
The verb vocabulary, shared by every backend. A backend that cannot serve a verb omits it from its ops map rather than defining a failing handler.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |