@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”.
It’s a bit like getting a HTTP 101
@cgrand so on connect there is => (.write conn blob)
yes
then we wait until we get :unrepl/hello
Ok
in fact, something like unravel coul be easily plugged in IDE right ?
waddyamean?
“easily”
unravel is just one client
bad wording
unrepl (the protocol) is extensible
I just tried recently tubular
for working on lumo projects from cursive
the goal is to have IDE have their own blob and set up their unrepl sessions
ok
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)
no I know
(I mean tubular to connect to unravel)
My point is, with the multiplication of platform for clj
, you have to “learn/use” new tools every time
and that’s a pain
at least for me 🙂
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.
@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 ?
like a debug mode or something like that
have you tried the netcat way before?
nope
assuming you have a socket repl on 5555: cat blob - | nc localhost 5555
ok, nice
then you can see everything and interact manually
ok, nice
thx
@volrath kvs:
https://gist.github.com/cgrand/7585acc4f85c1b3664f3319097254a2f
so here is the kind of message that client implementer should receive
[: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}]
yep
hello and prompt
do you have examples in mind for this => https://github.com/Unrepl/unrepl#mime-attachments
Ah you are brave!
So no client has it yet
I am just lost, trying to get stuff ^^
*understand
the blob does emit atatchement for java.io.File and java.awt.Image instances
ok
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
@cgrand just in case, we are doing a meetup in paris the 6th
@baptiste-from-paris on the 6th I’m at https://www.lambdup.io
ah ok
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
hacky hacky hacky
@volrath it should fix your issues
You are right but out of habit I use volatile! to convey the meaning that’s is very private state
Great, i was close to implementing something very similar. Thanks! Next stop: implementing unravel's auto-doc string with a custom session action
if you have so time @cgrand, I am struggling to understand this project https://github.com/cgrand/sjacket
It’s a dead end.
😂
ok lol
great!
The idea would have to be revisited