Beyond Clojure
As mentioned earlier the nREPL protocol is language-agnostic and can be leveraged for many languages that have the ability to evaluate code at runtime.
Alternative Server Implementations
Those server implementations are developed and maintained by third-parties (as opposed to nREPL’s team), and their maturity might vary.
Certain nREPL clients may make Clojure-specific assumptions which will cause bugs when used with other servers, while other clients are designed with language-agnosticism in mind. Usually the nREPL servers would mention in their documentation which clients are known to work well with them. |
-
HyREPL - an nREPL for the Hy programming language
-
Chicken NREPL - an nREPL server for Chicken Scheme
-
cl-nrepl - an nREPL server for Common Lisp
-
cljs-noderepl - an nREPL server for ClojureScript running on Node.js
-
R-nREPL - an nREPL server for R
-
nrepl-python - an nREPL server for Python
-
nREPL CLR - an nREPL server for ClojureCLR. A 1:1 port of the reference Clojure nREPL. Unfortunately it has been abandoned a long time ago.
-
Arcadia nREPL - an nREPL server implemented in C# for Arcadia. An actively maintained alternative of nREPL CLR.
-
nREPL Prototype - a simple nREPL implementation in Clojure. Used as the basis of the
babashka
implementation. -
Babashka nREPL - an nREPL server bundled with babashka
-
nrepl-cljs - a native ClojureScript nREPL server implementation
-
nrepl-cljs-sci - a native Node.js nREPL server implementation using SCI.
As you can see nREPL has implementations for many popular Lisp dialects, but it’s certainly not limited to Lisp dialects.