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.
-
guile-ares-rs - an Asynchronous Reliable Extensible Sleek RPC Server for Guile based on the nREPL protocol.
As you can see nREPL has implementations for many popular Lisp dialects, but it’s certainly not limited to Lisp dialects.