unrepl

discussing specification of an edn-based repl and its implementations.
cgrand 2017-05-22T13:34:36.529838Z

@plexus it’s very helpful, thanks!

plexus 2017-05-22T13:35:25.546320Z

it's mostly untested since I wasn't sure what else I needed to be able to use it

cgrand 2017-05-22T13:40:51.658426Z

Let’s summarize the self-hosted cljs situation: • stock repls (lumo or planck) can’t be upgraded BUT using https://github.com/cgrand/cljs-js-repl one can have a server socket upgradable repl (maybe one day it could be the default socket repl for both — wishful thinking)

cgrand 2017-05-22T13:41:37.674398Z

• we have a print.cljc

cgrand 2017-05-22T13:42:19.688702Z

• what is missing is a repl.cljs (given the IO differences I’m not sure a repl.cljc is worth it)

cgrand 2017-05-22T13:42:56.701457Z

• and the blob gen (which is not high priority since stock socket repls are not upgradeable yet)

cgrand 2017-05-22T13:43:17.708916Z

That’s all

plexus 2017-05-22T18:42:41.370115Z

@cgrand thanks, that's very helpful to get a bit more of the big picture > Upgrading a stock cljs (self hosted) repl requires more work. I have one working with both lumo and a branch of Planck. Is this referring to cljs-js-repl? > I'd like it to go upstream but some issues with var bindings must be solved first. Is there an issue somewhere for this that people can keep an eye on?

cgrand 2017-05-22T19:01:32.758203Z

Yes and no (well there's an old issue for var bindings).

cgrand 2017-05-22T19:03:58.808123Z

However a first step is to prove the value of unrepl to entice @mfikes and @anmonteiro to ship Planck and Lumo with upgradable socket repls.

plexus 2017-05-22T19:08:03.888141Z

to me the selling point of unrepl is that it allows smart tooling (a la cider) without the need for nrepl. I would like to work on good Emacs and Atom integration of Lumo and/or Planck, and use that as a basis for some introductory level educational material

🎉 1
mfikes 2017-05-22T19:08:05.888910Z

Yeah, I don’t see any problem with putting something into Planck, once all the stuff has been worked out.

plexus 2017-05-22T19:09:39.918457Z

it's either that, or porting nrepl-server to bootstrapped clojurescript. It seems no one is super keen to take that on, and I can understand why. I appreciate nrepl a lot, but I think it could be a bit overengineered.

mfikes 2017-05-22T19:10:16.930086Z

I think @futuro has been pondering ^

anmonteiro 2017-05-22T19:10:58.943215Z

completely agree with @mfikes

anmonteiro 2017-05-22T19:11:19.949630Z

happy to incorporate any needed changes to Lumo to support upgradable REPLs

anmonteiro 2017-05-22T19:11:31.953393Z

“Upgradable REPLs” is also a really cool term btw

🍦 2
anmonteiro 2017-05-22T19:11:51.959773Z

“My REPL is upgradable, what about yours?” 😉

plexus 2017-05-22T19:12:11.965798Z

"I was upgrading my REPLs before it was cool"

mfikes 2017-05-22T19:12:11.965938Z

Lumo and Planck are like twin siblings in that they essentially support all of the same command line options, etc. They could likely support Unrepl in a similar fashion.

👍 1
1
plexus 2017-05-22T19:15:03.018569Z

it's times like these I really miss an old fashioned mailing list with longer form discussion. It's so much harder to piece together a coherent story from chat history... what's the situation? what needs to happen? etc...

mfikes 2017-05-22T19:16:45.049945Z

Planck: I need to finish off fundamental socket support. This branch https://github.com/mfikes/planck/tree/sockets is sufficient to to make Unrepl upgradeable REPLs work https://gist.github.com/mfikes/e44cf07e8217db2112facf90b550ab74

anmonteiro 2017-05-22T19:17:32.064673Z

plexus: “get off my lawn!” 😂

👴 1
cgrand 2017-05-22T19:17:39.066990Z

It's sufficient to make Planck supports upgradable repls. (Nitpicking)

cgrand 2017-05-22T19:18:35.084076Z

Would you be more comfortable with a google group, a github issue or a wiki?

cgrand 2017-05-22T19:18:56.090809Z

(Is the ggroup usenet bridge still active?)

plexus 2017-05-22T19:21:28.138707Z

maybe some github issues on the unrepl repo would be good to have. "Lumo support for unrepl", "Planck support for unrepl", etc

plexus 2017-05-22T19:21:57.147685Z

from there we can link at whatever branches people are working on and summarize what the current state of things is, blockers, etc

plexus 2017-05-22T19:22:31.158645Z

that way you also have somewhere to point people next time someone asks, "hey when is lumo support coming", for example

plexus 2017-05-22T19:26:43.237526Z

seems the issue was already there :simple_smile:

plexus 2017-05-22T19:31:17.325390Z

For regular (non bootstrapped) ClojureScript, how would unrepl work there? I don't suppose you'll ever be able to upgrade a CLJS repl (or?), but I imagine you would upgrade a Clojure (un)repl to a CLJS unrepl. Possibly by providing a custom cljs.repl/repl?

cgrand 2017-05-22T19:40:51.504536Z

Never say never. (My work on upgradable self-hosted repl made me realize an upgradable CLJS repl would be possible – not with major changes to how repls work at the moment.) Still I don't think it's the fastest way to get unrepl in the browser. Your general plan is ok (upgrade from CLJ) but to me the target is a CLJC repl.

plexus 2017-05-22T19:42:33.536583Z

what do you mean exactly by a CLJC repl?

plexus 2017-05-22T19:43:24.553061Z

(this whole thing reminds me the Lambda Island repl guide is gonna need a serious update :))

cgrand 2017-05-22T20:55:01.920372Z

@plexus maybe I'm insane but I'm thinking of a repl that when you type (+ 2 2) you get 4 twice (once from clj, once from cljs – which may be not be that confusing given unrepl tagged outputs) and of course you can use conditional readers.

plexus 2017-05-22T21:09:32.191403Z

I'm not sure I'm convinced of the usefulness of evaluating things twice, but a repl that could eval clj and cljs expressions would be very useful for tooling, and get rid of some of the unnecessary complexity you have now when using cider with cljs

cgrand 2017-05-22T21:25:59.469451Z

Either you have two repls or a modal (switching) repl or a cljc repl (where the switch is controlled form by form using conditional readers). The last one is maybe not that bad. I'm still pondering this stuff

mfikes 2017-05-22T22:21:06.264520Z

Wow... a CLJC REPL could be useful when developing portable library code.