unrepl

discussing specification of an edn-based repl and its implementations.
dominicm 2017-07-29T09:38:41.911800Z

I've been looking at using this to build a new nrepl client for vim

dominicm 2017-07-29T09:39:10.913309Z

I was able to get it to start in < 0.9s using uberjars & some JVM options. I understand it can go down to 0.4 with the right incantation.

richiardiandrea 2017-07-29T10:45:21.140265Z

The startup time is not bad per Se, the problem is that at some point you will need to require the core ns of you app and that will take a while. From my tests it is average 15s to load a repl in your core ns directly. No nrepl.

dominicm 2017-07-29T12:07:19.433926Z

15s? I've seen up to 2 minutes.

pesterhazy 2017-07-29T12:52:06.599388Z

1s is fantastic

pesterhazy 2017-07-29T13:08:43.666016Z

@richiardiandrea just had a chance to try your branch - works well for me!

pesterhazy 2017-07-29T13:09:25.668647Z

do you have any examples for me to try where Compliment completions are superior to the simple-minded approach we took before?

richiardiandrea 2017-07-29T13:40:42.800482Z

@pesterhazy I have put all the options there but left it unconfigured basically. The plan is to follow what cider does and use the :context param to get locals completions

richiardiandrea 2017-07-29T13:41:49.805415Z

We could also take away the plain suggestion switch (which is now there) and display namespace and meta info nicely

richiardiandrea 2017-07-29T13:47:56.832613Z

Are we talking about nrepl server or nrepl client startup? If it is one second for nrepl server + middleware then I am surprised 😄

pesterhazy 2017-07-29T14:01:33.897608Z

oh I thought we were talking about the Socket Server

pesterhazy 2017-07-29T14:18:28.977744Z

Released a new unravel version: https://github.com/pesterhazy/unravel#022 -- let me know if it works (especially installation via npm install -g unravel-repl)

dominicm 2017-07-29T14:34:07.052194Z

I was talking about the client 😛

richiardiandrea 2017-07-29T14:45:39.106276Z

I will try it out, great!

cgrand 2017-07-29T14:51:37.136102Z

I created the unrepl github org (union for a novel repl?)

👍 1
richiardiandrea 2017-07-29T14:52:07.138485Z

Ahah I joined

pesterhazy 2017-07-29T15:15:23.263062Z

@cgrand is there a way to move a repo to an org?

cgrand 2017-07-29T15:21:38.295202Z

I think so (in project settings) but can't confirm at the moment (unloading the car, back from holidays)

cgrand 2017-07-29T16:00:01.489877Z

Confirmed: it's in the danger zone "transfer ownership"

richiardiandrea 2017-07-29T16:16:55.577097Z

So for the munging, should the blob contain a preamble of nses it wants to load? My task could generate that easily (in order) because I am already using tools.namespace on the files

cgrand 2017-07-29T16:34:12.666050Z

@richiardiandrea what is the purpose of this preamble?

richiardiandrea 2017-07-29T16:36:06.676633Z

I was thinking unrepl would need to know (and store in the state) a map of munged to unmumged unmunged to munged namespaces so that if the client wants to evaluate compliment.core/completions it can use the munged ns instead.

pesterhazy 2017-07-29T16:37:32.684575Z

nice, happy to do that for unravel

richiardiandrea 2017-07-29T16:55:50.778464Z

Alternatively each blob handles his own message, still need to read how this is handled now in unrepl

richiardiandrea 2017-07-29T16:59:39.798575Z

But then the blob becomes stateful I guess?

cgrand 2017-07-29T17:29:09.953120Z

Thanks! I already transferred unrepl proper

cgrand 2017-07-29T17:33:05.974081Z

> if the client wants to evaluate compliment.core/completions it can use the munged ns instead. User code or client code? I think client code should avoid direct calls.

dominicm 2017-07-29T18:07:06.149870Z

@cgrand what is the alternative to direct calls? (Sorry if I am repeating something)

cgrand 2017-07-29T18:07:54.153887Z

Message templates.

cgrand 2017-07-29T18:08:18.155873Z

Also: with big blobs comes big latency.

dominicm 2017-07-29T18:17:50.203847Z

I thought as much 🙂

cgrand 2017-07-29T18:23:39.232438Z

So a middle ground is to have blobs that mostly register actions and action handlers that require ns and call actual lib. So loading of the lib is postponed until first use.

cgrand 2017-07-29T18:27:28.251042Z

The whole actions story mostly makes sense to ease sharing (stealing?) of features between clients.

dominicm 2017-07-29T18:38:37.307078Z

As a vim user: I heavily use the works of cider team.

richiardiandrea 2017-07-29T19:03:02.430104Z

Agree that I foresee a mix between server side and client loading

cgrand 2017-07-30T19:06:18.707481Z

One question is: do server loading occurs from the server? (The server can be heavily firewalled and can't access clojars or a private repo, let alone you local file system)

richiardiandrea 2017-07-29T19:03:13.431092Z

But we need a good story there

richiardiandrea 2017-07-29T19:03:25.431997Z

Good extension story I mean

cgrand 2017-07-30T20:29:17.104112Z

We have no extension story at the moment. Not even a bad one.