thinking to have
- network-based
- easier to detach / reattach compared to stdio-based? (doesn't tmux manage somehow?)
- debugging of messages might be easier? at least doesn't require changes to code because wireshark or similar can be used.
- sessions
- not having sessions (assuming single connection) has drawbacks?
- long-evaluation blocking communication issue (cf. tooling session vs eval session)
- not having sessions (assuming single connection) has drawbacks?
uncertain
- use of bencode, netstrings, or similar
- the length prefixes may help with boundary detection and memory usage?
- though could magic bytes do something similar? what about arbitrary output via stdout...couldn't that contain magic bytes that could mess stuff up?
- fixed with prefix that contains message size (or remaining message size) might be better (see comments / code by hiredman and bakpakin (spork's msg.janet))
- how to make available to arbitrary program
- clojure provided a socket repl which can be enabled without changing existing code
- unrepl "upgraded" an existing socket repl
- capability querying instead of versioning because of brittleness?
- other projects seem to have adopted this approach
- emacs
- lsp
- other projects seem to have adopted this approach
potential modifications vs nrepl or other existing options
- response messages being tagged appropriately seems like a better design compared to nrepl's
- response message type having to be guessed from keys and contextual info?
- nrepl does this and thus the client is burdened with more complexity?
- theoretical problems with response messages being indistinguishable if middleware design is not coordinated across all entities?
- response message type having to be guessed from keys and contextual info?
- if a middleware mechansim or other extension mechanism is considered, better to have "namespaced" op names?
- on the whole is it better to have timestamp responses from the server?
- is there some weird edge case of time on the server being modified in inappropriate ways?
- actually, do bencode / netstrings really address the buffer allocation issue well?
- see discussion starting here
- further detailed discussion occurred on irc - reproduced elsewhere in this gist
what stuff about nrepl is good to keep?
- sessions
things to leave off of an initial version
- multiple transports
- middleware
things that might be nice but seem potentially impractical to do well
- interruptible evaluations?
naming fun
- arepl
- enrepl
- moreplay - what we need is less work and...