nrepl

https://github.com/nrepl/nrepl || https://nrepl.org
cfleming 2018-12-20T03:11:53.180800Z

@cgrand I meant that pure streaming REPLs are composable, but limited.

cgrand 2018-12-20T05:40:36.184500Z

@cfleming it’s with the composability that I strongly disagree. When repls are nested their powers don’t compose because only the innermost is running.

cgrand 2018-12-20T06:13:46.187100Z

@cfleming imagine you have two repls: one which uses pprint and the other with a slightly more informative prompt. There’s no way to get both features at the same time.

cfleming 2018-12-20T06:38:26.188Z

@cgrand Yes, I agree - compose is the wrong word. I’m really talking about them being nestable.

cgrand 2018-12-20T15:15:09.189100Z

Sideloading (loading resources/classes from the client without shared filesystem) in nrepl works: https://github.com/nrepl/nrepl/blob/0cfa805ce7f249c5fd9da4bb5343f3130bbc5784/test/clojure/nrepl/core_test.clj#L608-L613

dominicm 2018-12-20T15:29:03.190300Z

This implementation doesn't allow for transports to be sideloaded. Unless we add support for nesting perhaps.

cgrand 2018-12-20T15:56:01.191300Z

Why would you want to change transport?

cgrand 2018-12-20T16:11:14.193700Z

Switch encoding over same connection or install a new connection?

cgrand 2018-12-20T16:53:24.194300Z

@dominicm could you describe the scenario you have in mind?

dominicm 2018-12-20T17:16:05.199900Z

@cgrand now you have made the logistics clear, I think same connection is better for firewall reasons. My reasoning is that editors currently have to specify the transport the user chooses ahead of time in the server, eg vim might choose a json transport, but Emacs uses edn. Perhaps it would be useful for clients to bring a transport, and upgrade a standard connection somehow.

cgrand 2018-12-20T17:26:26.201600Z

What are the connection means in use today? TCP socket, stdin/stdout and drawbridge?

cgrand 2018-12-20T17:29:48.202800Z

An injectable nREPL over plain repl would cover the first two cases. Then maybe we would need a drawbridge-lite

dominicm 2018-12-20T17:57:51.203300Z

In practice? Bencode only,

dominicm 2018-12-20T17:58:00.203600Z

Pretty much anyway afaik.

pez 2018-12-20T18:11:37.205700Z

Yes, bencode, but I'd like to switch over to EDN for Calva. I guess most Calva users are in control over the server.

cgrand 2018-12-20T18:23:35.206200Z

No drawbridge in practice?

dominicm 2018-12-20T18:25:58.206600Z

I hear someone trying it occasionally, but not really

cgrand 2018-12-20T20:47:29.208Z

Does anybody know of a middleware which uses raw binary (byte arrays)? It seems unlikely given my understanding of the whole stack but I prefer to ask.