The current ClojureScript REPL is tied heavily to the use of Java's embedded Rhino. We lack the set of abstractions and tools that would allow us to:

Research, ideas


Multiple Evaluators

There are circumstances where having an implementation of IJavaScriptEval which evaluates code in multiple environments at the same time would be useful. One use case would be to run a browser-connected REPL which is connected to multiple browsers at the same time. This would be extremely helpful when working on code that is tricky to get right in multiple browsers. Another use case would be to allow for automated tests to be run in multiple environments at the same time. This implementation of IJavaScriptEval would be configured with any number of other IJavaScriptEvals. When a new JavaScript form is received for evaluation, this evaluator would send it to all of its child evaluators and wait to get a response form all of them. Once all of the responses are received, they will be compared and if all of them are the same, that single result will be returned. If any of the results are different, then the returned map will indicate that an exception has been thrown and additional keys will added to provide the results from each environment.

Status and TODO