wrap-sideloader
middleware.clojure.main/repl
.session
middleware handle all dynamic bindings.eval
handler shorter. (this makes stacktraces easier to understand)print
middleware to have tidier stack and use Java classes instead of proxies.Thread.stop()
(needed by the interrupt
op) on JDK20+.
libnrepl
agent.nrepl.bencode
implementation to be more performant and use Clojure 1.7 features.ClassCastException
on re-connect to Unix socket.--interactive
option work when starting a server on a filesystem socket with --socket PATH
.completions
op by switching internally to compliment-lite
. The change is mostly transparent, but should result in more accurate completion results..jar
files on Windows.-s/--socket PATH
on the
command line or (start-server ... :socket PATH)
whenever the JDK
is version 16 or newer or
junixsocket is
available as a dependency.base64-decode
.java.net.URL
.cider-nrepl
and Java 8.nrepl.util.print
).completions
op.lookup
op.greeting-fn
.interrupt
on the thread, waits 100ms for the thread to respond and return messages, then waits 5000ms for the thread to terminate itself. A hard .stop
is only called if it fails to do so.:read-cond
option when evaluating code.nrepl.cmdline
.nrepl.middleware.pr-values
with nrepl.middleware.print
.
nrepl.middleware.print
for configuring the print
middleware at the REPL.:requires
set contains
#'pr-values
should instead use #'wrap-print
.nrepl.middleware.caught
, provides a hook called when eval, read, or print
throws an exception or error. Defaults to clojure.main/repl-caught
.
Configurable by the dynamic var nrepl.middleware.caught/*caught-fn*
.send-ack
at cmdline
ns works with the correct transport.nrepl.bencode
namespace.send-ack
.tools.logging
dependency.pr-values
, enabling pretty-printed REPL results.--transport/-t
).*1
, *2
, *3
and *e
in cloned session.*print-namespace-maps*
.nrepl.middleware.interruptible-eval/set-line!
.ctrl-d
in an interactive REPL.ThreadDeath
exception thrown by interrupt.127.0.0.1
instead of to ::
(this turned out to be a security risk).nrepl.version
).nrepl.core/version
.nrepl.core/version-string
..nrepl-port
file on server startup.--connect
command-line option allowing you to connect.
with the built-in client to an already running nREPL server.-v/--version
command-line option.--help
command-line option.--bind
command-line option.--handler
and --middleware
command-line options. Extremely useful when starting nREPL using
clj
and tools.deps
, as this allows you to inject middleware trivially without the need for
something like lein
or boot
.clj
to start your server.nrepl.server/start-server
no longer contains the
legacy key :ss
from the days of nREPL 0.0.x. If someone was using it
they should switch to :server-socket
instead.nil
port as 0
(which assigns a random port).version.txt
).clojure.tools.nrepl
is now nrepl.core
,
the rest of the namespaces were renamed following the pattern
clojure.tools.nrepl.*
-> nrepl.*
.clojure.tools.nrepl.middleware.session
for :unknown-session
error and clojure.tools.nrepl.middleware.interruptible-eval
for
:no-code
error, the correct response of :status :done
is now
being returned.[org.clojure/tools.nrepl "0.2.13"]
, but released under
nrepl/nrepl
coordinates as part of the migration out of
clojure-contrib https://github.com/nrepl/nreplclojure.tools/logging
is now a normal dependency (it used to be an
optional dependency).start-server
is not provided with a :bind
hostname, nREPL will default
to binding to the ipv6 ::
(as before), but will now always fall back to
localhost
. Previously, the ipv4 hostname was only used if ::
could not be
resolved; this change ensures that the localhost
fallback is used in
networking environments where ::
is resolved successfully, but cannot be
bound.0.2.13
:
start-server
now binds to ::
by default, and falls back to localhost
,
avoiding confusion when working in environments that have both IPv4 and IPv6
networking available. (NREPL-83)0.2.11
:
clojure.tools.nrepl.middleware.interruptible-eval
now accepts optional
file
, line
, and column
values in order to fix location metadata to
defined vars and functions, for more useful stack traces, navigation, etc..cljc
files
containing reader conditionals has always worked transparently)0.2.10
:
clojure.tools.nrepl.middleware.pr-values
will not print the contents of
:value
response messages if the message contains a :printed-value
slot.default-executor
and queue-eval
in
clojure.tools.nrepl.middleware.interruptible-eval
are now public.0.2.9
:
clojure.tools.nrepl.middleware.interruptible-eval
now defines a default
thread executor used for all evaluations (unless a different executor is
provided to the configuration of
clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval
). This
should aid in the development of interrupt
-capable alternative evaluation
middlewares/handlers.0.2.8
:
clojure.tools.nrepl.server/start-server
is
now localhost
, not 0.0.0.0
. As always, the bind address can be set
explicitly via a :bind
keyword argument to that function. This is considered
a security bugfix, though technically it may cause breakage if anyone was
implicitly relying upon nREPL's socket server to listen on all network
interfaces.ServerSocket
created as part of
clojure.tools.nrepl.server/start-server
is now configured with
SO_REUSEADDR
enabled; this should prevent spurious "address already in use"
when quickly bouncing apps that open an nREPL server on a fixed port, etc.
(NREPL-67)"describe"
operation
via an optional :describe-fn
function provided via their descriptors.
(NREPL-64):ns
component of the response to "load-file"
operations is now elided,
as it was (usually) incorrect (as a result of reusing interruptible-eval
for
handling load-file
operations) (NREPL-68)0.2.7
:
interruptible-eval
no longer incorrectly clobbers a session's *ns*
binding
when it processes an eval
message containing an ns
"argument"0.2.5
:
*in*
with an empty :stdin
value (NREPL-65):version-string
is now included in response to a describe
operation (NREPL-63)java.version
information in response to a
describe
operation (NREPL-62)0.2.4
:
*out*
bindings are properly preserved
(NREPL-45)clojure.tools.nrepl.middleware.interruptible-eval/evaluate
so that a
custom eval
function can be provided on a per-message basis (NREPL-50)clojure.tools.nrepl.server/start-server
(NREPL-51)java.version
system property is now included in the response
to a describe
operation (NREPL-57)*e
, *1
, etc) are now set in time for nREPL
middleware to access them in the case of an exception being thrown (NREPL-58)0.2.3
:
*in*
, to avoid intermittent failures due to
prior use of PipedReader
/Writer
. (NREPL-39)*print-level*
and *print-length*
when
generating the clojure.lang.Compiler/load
expression (NREPL-41)0.2.2
:
clojure.tools.nrepl/code*
for pr-str
'ing expressions (presumably
for later evaluation)clojure.tools.nrepl/combine-responses
0.2.1
:
Writer.write()
and
StringBuilder.append()
APIs (NREPL-38)0.2.0
:
Top-to-bottom redesign
0.0.6
:
Never released; initial prototype of "rich content" support that (in part) helped motivate a re-examination of the underlying protocol and design.
0.0.5
:
0.0.4
:
clojure.test
output when clojure.test
is
initially loaded within an nREPL sessionCan you improve this documentation? These fine people already did:
Bozhidar Batsov, Oleksandr Yakushev, Chas Emerick, Shen Tian, Michael Griffiths, Eero Helenius, Tijs Mallaerts, tijsmallaerts, Arne Brasseur, pfeodrippe, Artem Solomatin, Paulo Rafael Feodrippe, Ivar Refsdal, Finn Völkel, Mike Martin, Moritz Heidkamp, Rob Browning, Dominic Monroe, Chance Russell, Eric Dallo, Colin Fleming, Jason, ikappaki, Vincent Pizzo, Александар Симић, Greg Look, Alexander Yakushev, Chris Zheng & JayEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close