<< Back to previous view

[CLJS-2655] Rhino & Nashorn Socket REPLs don't share evaluation environment Created: 13/Mar/18  Updated: 24/Mar/18

Status: Open
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Mike Fikes Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Clojure Socket REPLs share an evaluation environment.

For example, start up with

java -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" -cp cljs.jar clojure.main

Then in one terminal

$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
user=> (def x 3)
#'user/x

then if you go into another terminal

$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
user=> x
3

and in the original terminal where you started the socket REPL:

user=> x
3

Here is what I get with the Node Socket REPL (not sure if I'm starting it the right way):

java -Dclojure.server.repl="{:port 5555 :accept cljs.server.node/repl}" -cp cljs.jar clojure.main

First terminal:

$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
ClojureScript 1.10.160
cljs.user=> (def x 3)
#'cljs.user/x

Second terminal:

$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
ClojureScript 1.10.160
cljs.user=> x
WARNING: Use of undeclared Var cljs.user/x at line 1 <cljs repl>
nil


 Comments   
Comment by David Nolen [ 16/Mar/18 9:51 AM ]

To clarify, ClojureScript Socket REPLs must be made to work this way one by one. Only cljs.server.browser currently works this way. The others needs to be adjusted. The main thrust of this work is to make -setup & -teardown idempotent and thread safe. The other bit is to make sure that output gets directed correctly. Browser REPL currently exhibits this bug https://dev.clojure.org/jira/browse/CLJS-2643.

Generated at Mon Apr 22 23:03:38 CDT 2019 using JIRA 4.4#649-r158309.