Overview
CIDER is first and foremost a Clojure programming environment. Because all of its interaction with a running program goes through nREPL, it also works well with ClojureScript (see the ClojureScript section) and reasonably well with other Clojure-like languages that ship an nREPL server - babashka, nbb, Basilisp, ClojureCLR, scittle, joyride and so on.
This section covers those other Clojure-like runtimes. ClojureScript, being a much bigger and more deeply integrated story, has a section of its own.
Scope
CIDER is not a universal nREPL client. Its focus is Clojure and Clojure-like languages; supporting arbitrary nREPL runtimes (or other REPL protocols such as the Clojure socket REPL and prepl) is an explicit non-goal.
If you’re after a language-agnostic nREPL client, reach for Neat, a sibling project that came out of exactly this line of exploration. (For prepl there’s also Port, a minimalist prepl client.)
| This wasn’t always the case. Older versions of CIDER’s roadmap had a prominent "make CIDER somewhat Clojure-agnostic" goal, but that itch was ultimately scratched by Neat and Port. That left CIDER free to focus on what it’s always been best at: a deep, opinionated nREPL-based IDE for Clojure and Clojure-like languages. |
How much works
How much of CIDER lights up depends on what the runtime implements:
-
Clojure runs the full
cider-nreplmiddleware, so you get every advanced, tooling-heavy feature - the debugger, the inspector, the test runner, tracing, profiling, and so on. -
ClojureScript also runs
cider-nrepl, so it gets the editor-facing features (completion, documentation lookup, navigation, the test runner, macroexpansion), but the features that instrument or introspect a JVM at runtime have nothing to attach to in a JavaScript runtime. See the ClojureScript feature-support matrix for the specifics. -
Most other runtimes expose only core nREPL operations (evaluation, loading code, and sometimes completion). You get a solid interactive-programming experience, but the
cider-nrepl-powered features are unavailable - unless the runtime bundles a compatible middleware. Babashka, for instance, ships a curated subset ofcider-nrepl, so it lights up more of CIDER than a bare core-nREPL server would.
In short: the closer a runtime is to Clojure - and the more of cider-nrepl it
can run - the more of CIDER you get. When you invoke a command a runtime can’t
support, CIDER aims to tell you so rather than fail obscurely.
Supported runtimes
CIDER has dedicated support and documentation for the following Clojure-like runtimes:
| ClojureScript runtimes that happen to run on Node (like nbb) are reachable through the ClojureScript jack-in/connect commands as well; see the ClojureScript section. |