Fork me on GitHub
#unrepl
<
2017-11-23
>
cgrand08:11:13

@baptiste-from-paris that’s not the words I would use but I guess you get the idea. We have a full duplex communication channel whose protocol is “repl interaction” then after we send the blob on this channel this channel protocol becomes “unrepl”.

cgrand08:11:17

It’s a bit like getting a HTTP 101

baptiste-from-paris08:11:26

@cgrand so on connect there is => (.write conn blob)

cgrand08:11:10

then we wait until we get :unrepl/hello

baptiste-from-paris08:11:14

in fact, something like unravel coul be easily plugged in IDE right ?

cgrand08:11:38

waddyamean?

cgrand08:11:56

unravel is just one client

cgrand08:11:32

unrepl (the protocol) is extensible

baptiste-from-paris08:11:46

I just tried recently tubular for working on lumo projects from cursive

cgrand08:11:55

the goal is to have IDE have their own blob and set up their unrepl sessions

cgrand08:11:32

hmm no, tubular on unravel won’t work because unravel is meant to run in a terminal (well there’s a non term mode but it’s for testing)

cgrand08:11:05

(I mean tubular to connect to unravel)

baptiste-from-paris08:11:46

My point is, with the multiplication of platform for clj , you have to “learn/use” new tools every time

baptiste-from-paris08:11:56

and that’s a pain

baptiste-from-paris08:11:01

at least for me 🙂

cgrand08:11:55

In the early days of this channel @cfleming chimed in (he’s still on this channel roster); let’s unrepl matures and proves its worth.

baptiste-from-paris09:11:57

@cgrand I am trying to redo the socket-connector fn (for understanding purpose). Is there a way to check if my repl received the blob on write ?

baptiste-from-paris09:11:05

like a debug mode or something like that

cgrand09:11:39

have you tried the netcat way before?

cgrand09:11:28

assuming you have a socket repl on 5555: cat blob - | nc localhost 5555

baptiste-from-paris10:11:34

so here is the kind of message that client implementer should receive

baptiste-from-paris10:11:40

[:unrepl/hello {:session :session1656, :actions {:exit (unrepl.replG__1250/exit! :session1656), :start-aux (unrepl.replG__1250/start-aux :session1656), :log-eval (clojure.core/some-> :session1656 unrepl.replG__1250/session :log-eval), :log-all (clojure.core/some-> :session1656 unrepl.replG__1250/session :log-all), :print-limits (clojure.core/let [bak__1599__auto__ {:unrepl.print/nesting-depth clojure.core/*print-level*, :unrepl.print/coll-length clojure.core/*print-length*, :unrepl.print/string-length unrepl.printG__1250/*string-length*}] (clojure.core/some->> #unrepl/param :unrepl.print/string-length (set! unrepl.printG__1250/*string-length*)) (clojure.core/some->> #unrepl/param :unrepl.print/coll-length (set! clojure.core/*print-length*)) (clojure.core/some->> #unrepl/param :unrepl.print/nesting-depth (set! clojure.core/*print-level*)) bak__1599__auto__), :set-source (unrepl/do (unrepl.replG__1250/set-file-line-col :session1656 #unrepl/param :unrepl/sourcename #unrepl/param :unrepl/line #unrepl/param :unrepl/column)), :unrepl.jvm/start-side-loader (unrepl.replG__1250/attach-sideloader! :session1656)}}]
  [:prompt {:file "unrepl-session", :line 1, :column 1, :offset 0, clojure.core/*ns* #unrepl/ns unrepl.replG__1250, clojure.core/*warn-on-reflection* false}]

cgrand10:11:17

hello and prompt

cgrand10:11:18

Ah you are brave!

cgrand10:11:35

So no client has it yet

baptiste-from-paris10:11:46

I am just lost, trying to get stuff ^^

cgrand10:11:14

the blob does emit atatchement for java.io.File and java.awt.Image instances

cgrand09:11:10

then you can see everything and interact manually

volrath12:11:58

I went through the doc quickly and it seems really cool. I had some questions though, but I need to give it a second pass when i'm on my laptop.. Today is the day i'm moving to the other side of berlin haha so I'll be on the phone most of the time

baptiste-from-paris10:11:30

I might be completly wrong but I thought Volatile in cljs were just here to be conform with clj no performance improvment compared to atom

cgrand15:11:32

You are right but out of habit I use volatile! to convey the meaning that’s is very private state

baptiste-from-paris10:11:45

@cgrand just in case, we are doing a meetup in paris the 6th

cgrand15:11:18

hacky hacky hacky

cgrand15:11:20

@volrath it should fix your issues

volrath16:11:54

Great, i was close to implementing something very similar. Thanks! Next stop: implementing unravel's auto-doc string with a custom session action

baptiste-from-paris18:11:53

if you have so time @cgrand, I am struggling to understand this project https://github.com/cgrand/sjacket

cgrand18:11:43

It’s a dead end.

cgrand19:11:15

The idea would have to be revisited