Replies: 9 comments 36 replies
-
StacktracesCurrent nREPL only communicates error message, but not its stacktrace. Would be great to have platform-independent stacktrace representation as a data structure. Another ideas:
|
Beta Was this translation helpful? Give feedback.
-
Parallel evalA way to eval next form while previous one is still executing (e.g. long-running process). I think protocol has everything for that, but implementation does not allow it. |
Beta Was this translation helpful? Give feedback.
-
Report
|
Beta Was this translation helpful? Give feedback.
-
Option to auto-close sessionsA way to specify “close this session as soon as connection is broken”. Because otherwise you might not have a change to close it properly and it will leak resources staying open forever.
|
Beta Was this translation helpful? Give feedback.
-
Do not capture *out*Right now, everything your eval prints with Motivation: for nREPL clients with inline eval only, there’s no place to display async stdout messages. But because nREPL captures them, they are not visible in normal System.out output too. Could be specified on session creation, e.g. |
Beta Was this translation helpful? Give feedback.
-
Auto-require namespace if not loadedMight seem controversial, but when I send
this code breaks if E.g. |
Beta Was this translation helpful? Give feedback.
-
Better specify completion informationCurrently the doc states:
This is pretty minimal information. The doc makes some vague references to possible extra metadata, but doesn't specify them at all. There's lots of extra info that would be useful to put in completions:
I'm not sure if we would want to specify ahead of time all the types that might be returned and the specific information for each one - I'm open to suggestions on that. But I'd like to see a lot more information returned in general. |
Beta Was this translation helpful? Give feedback.
-
A small thing that I would like to see is the addition of an optional key/value pair in the |
Beta Was this translation helpful? Give feedback.
-
Should the Nrepl protocol have some concept of "tagged literals / collections" in order to represent values in the source language that don't have an equivalent in the client or message transporting protocol? This comes from some sort of impedance mismatch I've noticed recently, between Cider's representation of Clojure values in Emacs lisp and their lossy encoding over the Nrepl protocol. The most glaring example I see is the fact that you can't encode |
Beta Was this translation helpful? Give feedback.
-
Currently nREPL middlewares allow extending nREPL to match client needs. But this approach hurts interoperability between different clients, different servers implementations and different Clojure runtimes.
What features are currently missing from nREPL base protocol that would make using vanilla nREPL with no extensions enough for most clients?
I suggest comment per feature structure, with discussion in replies to each comment.
Beta Was this translation helpful? Give feedback.
All reactions