First class options for Socket REPL

Description

The Socket REPL, even more so with the advent of prepl, seems to be the recommended and most reliable way for Clojure Repl-ing.

Yet at the moment the only way to bootstrap one is by using a very long argument to a -J option. For instance this how a node CLJS repl could be launched.

There a couple of problem with this, mainly the -D and :args vector wrapping. Not to mention the fact that the user might not know that that particular JVM property accepts edn.

All these details seem implementation details the launcher should hide, the goal being making super easy for users to launch a socket REPL for their editor of choice.

The counterargument of that would be the the editor could build the command line, but this of course is brittle: ideally all the editor knows is address and port and from then on it can query info from the REPL directly (with some sort of feature advertising like in unrepl for instance).

The proposal would be to make some socket repl options first class citizens and some "variable". In any case avoiding the whole JVM property thing. The first class can be the aliased.

Which options are first class is not clear to me yet so tooling maintainers/creators need to think about it a bit but it is good to have a ticket out there for discussing.

Environment

None

Activity

Show:
Alex Miller
September 28, 2020, 5:30 PM
Edited

One option that is now available in latest clj 1.10.1.697 is to use -X with an exec function to start a socket repl. In deps.edn:

Command line:

The args like :port can be overridden on the command-line as necessary.

Assignee

Alex Miller

Reporter

Andrea Richiardi

Labels

None

Approval

None

Patch

None

Priority

Major
Configure