nrepl

https://github.com/nrepl/nrepl || https://nrepl.org
cgrand 2018-12-18T15:53:22.173900Z

I’m trying to come up with a typology of eval messages, so far I identified four kinds: 1/ regular repl 2/ eval selection (in file buffer) and update repl (`*1` and friends are impacted), serialized with evals of type #1; switch and restore ns as required 3/ eval selection (in file buffer) but displays output in a transient buffer, not serialized with type #1, doesn’t update bindings 4/ out-of-the-blue eval for tooling purposes (doesn’t change bindings)

cgrand 2018-12-18T15:55:28.174300Z

#4 and #3 may be the same

eraserhd 2018-12-18T16:04:11.174500Z

maybe interprocess remote control?

eraserhd 2018-12-18T16:04:52.174800Z

Also might be just #4

eraserhd 2018-12-18T16:06:30.175800Z

hey, so it's pretty featureless and not yet documented, but rep, a single-shot nREPL client, is here: https://github.com/eraserhd/rep/tree/develop

eraserhd 2018-12-18T16:07:16.176500Z

Building with Graal will be documented. It's painful and requires a patched Clojure and patched spec.alpha.

eraserhd 2018-12-18T16:13:32.176900Z

Not sure the purpose of the typology, but one use I've overheard is processes talking to each other. There's a bit in the nREPL about using the protocol to notify another server that it's alive and on what port, for example.

eraserhd 2018-12-18T16:14:53.177100Z

I can't delete my DynamoDBs which back my Datomic databases from my laptop, so my restore-dev-environment-from-prod-back script runs datomic.api/delete-database via the socket REPL (over SSH).

eraserhd 2018-12-18T16:15:38.177300Z

Is this tooling for purposes of your typology?

cgrand 2018-12-18T17:45:41.177500Z

yes becaue it’s not tied to a user session (a user session being embodied by a repl buffer with history etc.)

cgrand 2018-12-18T17:51:01.177800Z

Rendering is half broken but remote browsing in action

eraserhd 2018-12-18T18:05:46.178200Z

\o/