unrepl

discussing specification of an edn-based repl and its implementations.
vschepik 2018-01-22T07:06:59.000318Z

Does spiral support ClojureScript in the browser similar to piggieback and nrepl?

volrath 2018-01-22T09:11:27.000012Z

correct. cljs is still a wip in unrepl, in general

vschepik 2018-01-22T14:31:40.000343Z

Thanks!

cgrand 2018-01-22T16:45:57.000934Z

Selfhost cljs is a matter of implementation. Clojure cljs is not fully thought true yet.

dominicm 2018-01-22T07:48:00.000226Z

To my knowledge, not yet

urzds 2018-01-22T15:57:50.000433Z

Hi! I am trying to understand how Unrepl works. Is it correct that I need to start my program using the Clojure Socket REPL, and the Unrepl client will use that to load the Unrepl server into my program and then start communicating with it?

cgrand 2018-01-22T17:00:32.000784Z

That’s about it. Note that “need to start my program using the clojure socket repl” is just “start my program as usual except for an additional command line option.

urzds 2018-01-22T17:01:49.000011Z

@cgrand The additional command line option is the java system property that makes clojure.main start a Socket REPL?

cgrand 2018-01-22T17:05:39.000232Z

Yes. Technically there’s no direct dependence on clojure.main: these properties are checked during clojure init. So any app containing some clojure code will open a socket repl when this property is set. No matter the main entry point of the app.

urzds 2018-01-22T17:07:31.000422Z

thx

urzds 2018-01-22T17:08:34.000919Z

I am using Cursive, where the Socket REPL (and thus Unrepl) and clojure.main are more intertwined, since Cursive has no native support for the Socket REPL or Unrepl.

urzds 2018-01-22T17:11:02.000763Z

@cgrand Does "the Unrepl client uses the process' Socket REPL to load the Unrepl server into the process and then starts communcating with it" mean that there is no such thing as a common "Unrepl server"? I.e. every Unrepl client implements its own version of it, but only adheres to the same / common Unrepl protocol?

urzds 2018-01-22T17:15:11.000592Z

And if so, what is the benefit over every client implementing a different protocol? The REPL connection cannot be shared between different clients anyway, can it?

urzds 2018-01-22T17:16:59.000735Z

(Since every client would try to load the Unrepl code into the process again, and start a new Unrepl server.)

cgrand 2018-01-22T17:31:15.000138Z

Every client indeed embed its unrepl strain. The value is that there’s no setup to do (no middleware no versions etc) and also that authors are free to mutate (fix/extend) unrepl. Having a common ancestor, it’s easier for mutants to swap “genes”. So you can see unrepl as a blueprint for a family of private protocols.

urzds 2018-01-22T17:36:08.000241Z

@cgrand Is this explanation included somewhere in the readme?

urzds 2018-01-22T17:49:37.000274Z

@cgrand Is this summary correct? https://github.com/cursive-ide/cursive/issues/1928 (If so, please feel free to include it into the readme.)

👍 1
urzds 2018-01-23T12:55:43.000193Z

Thanks

urzds 2018-01-23T12:56:22.000727Z

Are you interested in having such summary in your readme for educating others that might also be confused?

cgrand 2018-01-23T13:53:34.000081Z

@urzds this is what I was thinking of too: add such summary near the top of the README. And also specify that unrepl is meant for toolsmithes and that typical users don’t have to care.

urzds 2018-01-23T13:56:29.000219Z

Is "scuh" jargon for something?

urzds 2018-01-23T13:56:57.000355Z

ah, lol, ok 🙂

cgrand 2018-01-23T13:57:01.000192Z

out-of-order typist

urzds 2018-01-23T14:03:54.000388Z

You're also vulnerable to meltdown? 😉

urzds 2018-01-23T14:04:36.000074Z

If the text proposed above is agreeable, I'd submit a PR.

cgrand 2018-01-23T14:05:41.000243Z

yes, meltdown for humans is called freudian slip

cgrand 2018-01-23T14:07:19.000069Z

@urzds it’s a good basis, please open a PR and we’ll discuss changes there.

urzds 2018-01-23T14:47:57.000083Z

https://github.com/Unrepl/unrepl/pull/32