Skip to content

Commit e4e1ac2

Browse files
committed
remove Rhino dep, remove non-supported REPL scripts, stacktrace support, build support,
fix CI script, update CLI tests, cleanup bootstrap scripts
1 parent 370e587 commit e4e1ac2

20 files changed

+14
-260
lines changed

.travis.yml

-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ script:
6161
- grep '0 failures, 0 errors.' test-out.txt
6262
- script/test-cli node | tee test-out.txt
6363
- grep '0 failures, 0 errors.' test-out.txt
64-
- script/test-cli rhino | tee test-out.txt
6564
- grep '0 failures, 0 errors.' test-out.txt
6665
- PATH=`pwd`/graalvm-ce-1.0.0-rc12/bin:$PATH script/test-cli graaljs | tee test-out.txt
6766
- grep '0 failures, 0 errors.' test-out.txt

deps.edn

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
org.clojure/data.json {:mvn/version "0.2.6"}
99
com.cognitect/transit-clj {:mvn/version "0.8.309"}
1010
com.google.javascript/closure-compiler-unshaded {:mvn/version "v20200112"}
11-
org.clojure/google-closure-library {:mvn/version "0.0-20191016-6ae1f72f"}
12-
org.mozilla/rhino {:mvn/version "1.7R5"}}
11+
org.clojure/google-closure-library {:mvn/version "0.0-20191016-6ae1f72f"}}
1312
:aliases
1413
{:test {:extra-paths ["src/test/cljs" "src/test/cljs_build" "src/test/cljs_cp"
1514
"src/test/clojure" "src/test/self"]

pom.template.xml

-6
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@
4242
<artifactId>data.json</artifactId>
4343
<version>0.2.6</version>
4444
</dependency>
45-
<dependency>
46-
<groupId>org.mozilla</groupId>
47-
<artifactId>rhino</artifactId>
48-
<version>1.7R5</version>
49-
</dependency>
5045
<dependency>
5146
<groupId>org.clojure</groupId>
5247
<artifactId>tools.reader</artifactId>
@@ -311,7 +306,6 @@
311306
<namespace>cljs.repl.browser</namespace>
312307
<namespace>cljs.repl.node</namespace>
313308
<namespace>cljs.repl.reflect</namespace>
314-
<namespace>cljs.repl.rhino</namespace>
315309
<namespace>cljs.repl.server</namespace>
316310
<namespace>cljs.main</namespace>
317311
<namespace>cljs.cli</namespace>

project.clj

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
[org.clojure/test.check "0.10.0-alpha3" :scope "test"]
1717
[com.cognitect/transit-clj "0.8.309"]
1818
[org.clojure/google-closure-library "0.0-20191016-6ae1f72f"]
19-
[com.google.javascript/closure-compiler-unshaded "v20200112"]
20-
[org.mozilla/rhino "1.7R5"]]
19+
[com.google.javascript/closure-compiler-unshaded "v20200112"]]
2120
:profiles {:1.6 {:dependencies [[org.clojure/clojure "1.6.0"]]}
2221
:uberjar {:aot :all :main cljs.main}
2322
:closure-snapshot {:dependencies [[com.google.javascript/closure-compiler-unshaded "1.0-SNAPSHOT"]]}}

samples/repl/README.md

-9
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,6 @@ There are currently four steps in starting a ClojureScript REPL.
1717
3. create a new evaluation environment
1818
4. start the REPL with the created environment
1919

20-
## Evaluating with Rhino
21-
22-
```clj
23-
(require '[cljs.repl :as repl])
24-
(require '[cljs.repl.rhino :as rhino])
25-
(def env (rhino/repl-env))
26-
(repl/repl env)
27-
```
28-
2920
## Evaluating in the Browser
3021

3122
A browser-connected REPL works in much the same way as a normal REPL:

script/bootstrap

-11
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ CLOSURE_RELEASE="20200112"
99
DJSON_RELEASE="0.2.6"
1010
TRANSIT_RELEASE="0.8.309"
1111
GCLOSURE_LIB_RELEASE="0.0-20191016-6ae1f72f"
12-
RHINO_RELEASE="1_7R5"
1312
TREADER_RELEASE="1.3.0"
1413
TEST_CHECK_RELEASE="0.10.0-alpha3"
1514

@@ -118,16 +117,6 @@ if [ "$1" = "--closure-library-head" ] ; then
118117
mv orig-deps.js closure/library/closure-library/third_party/closure/goog/deps.js
119118
fi
120119

121-
echo "Fetching Rhino..."
122-
curl --retry 3 -LOk -s https://github.com/mozilla/rhino/releases/download/Rhino${RHINO_RELEASE}_RELEASE/rhino$RHINO_RELEASE.zip || { echo "Download failed."; exit 1; }
123-
unzip -qu rhino$RHINO_RELEASE.zip
124-
echo "Copying rhino$RHINO_RELEASE/js.jar to lib/js.jar..."
125-
cp rhino$RHINO_RELEASE/js.jar lib/js.jar
126-
echo "Cleaning up Rhino directory..."
127-
rm -rf rhino$RHINO_RELEASE/
128-
echo "Cleaning up Rhino archive..."
129-
rm rhino$RHINO_RELEASE.zip
130-
131120
echo "Fetching tools.reader $TREADER_RELEASE ..."
132121
curl --retry 3 -O -s https://repo1.maven.org/maven2/org/clojure/tools.reader/$TREADER_RELEASE/tools.reader-$TREADER_RELEASE.jar || { echo "Download failed."; exit 1; }
133122

script/bootstrap.ps1

-8
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,6 @@ Get-WebResource `
129129
Copy-File $root\closure-compiler-v$CLOSURE_RELEASE.jar $root\lib\compiler.jar
130130
Delete-File $root\closure-compiler-v$CLOSURE_RELEASE.jar
131131

132-
Write-Host "Fetching Rhino..."
133-
Get-WebResource `
134-
https://github.com/mozilla/rhino/releases/download/Rhino${RHINO_RELEASE}_RELEASE/rhino$RHINO_RELEASE.zip `
135-
$root\rhino$RHINO_RELEASE.zip
136-
Delete-File $root\lib\js.jar
137-
Expand-ZipFile $root\rhino$RHINO_RELEASE.zip $root\lib rhino$RHINO_RELEASE\js.jar
138-
Delete-File $root\rhino$RHINO_RELEASE.zip
139-
140132
Write-Host "Fetching tools.reader $TREADER_RELEASE ..."
141133
Get-WebResource `
142134
https://repo1.maven.org/maven2/org/clojure/tools.reader/$TREADER_RELEASE/tools.reader-$TREADER_RELEASE.jar `

script/nashorn_repl.clj

-3
This file was deleted.

script/nashornrepljs

-15
This file was deleted.

script/repljs

-15
This file was deleted.

script/repljs.bat

-14
This file was deleted.

script/rhino_repl.clj

-3
This file was deleted.

script/self-compile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
rm -rf classes
44
mkdir classes
5-
./script/repl -e "(compile 'cljs.repl.node) (compile 'cljs.repl.browser) (compile 'cljs.repl.rhino) (compile 'cljs.core)"
5+
./script/repl -e "(compile 'cljs.repl.node) (compile 'cljs.repl.browser) (compile 'cljs.core)"

src/main/cljs/cljs/main.clj

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
(let [repl-ns (symbol
1717
(str "cljs.repl."
1818
(if (= 1 (count args))
19-
"nashorn"
19+
"browser"
2020
(nth args 1))))]
2121
(try
2222
(require repl-ns)

src/main/cljs/cljs/stacktrace.cljc

-138
Original file line numberDiff line numberDiff line change
@@ -383,144 +383,6 @@ goog.events.getProxy/f<@http://localhost:9000/out/goog/events/events.js:276:16"
383383
nil)
384384
)
385385

386-
;; -----------------------------------------------------------------------------
387-
;; Rhino Stacktrace
388-
389-
(defmethod parse-stacktrace :rhino
390-
[repl-env st err {:keys [output-dir] :as opts}]
391-
(letfn [(process-frame [frame-str]
392-
(when-not (or (string/blank? frame-str)
393-
(== -1 (.indexOf frame-str "\tat")))
394-
(let [[file-side line-fn-side] (string/split frame-str #":")
395-
file (string/replace file-side #"\s+at\s+" "")
396-
[line function] (string/split line-fn-side #"\s+")]
397-
{:file (string/replace file
398-
(str output-dir
399-
#?(:clj File/separator :cljs "/"))
400-
"")
401-
:function (when function
402-
(-> function
403-
(string/replace "(" "")
404-
(string/replace ")" "")))
405-
:line (when (and line (not (string/blank? line)))
406-
(parse-int line))
407-
:column 0})))]
408-
(->> (string/split st #"\n")
409-
(map process-frame)
410-
(remove nil?)
411-
vec)))
412-
413-
(comment
414-
(parse-stacktrace {}
415-
"\tat .cljs_rhino_repl/goog/../cljs/core.js:4215 (seq)
416-
\tat .cljs_rhino_repl/goog/../cljs/core.js:4245 (first)
417-
\tat .cljs_rhino_repl/goog/../cljs/core.js:5295 (ffirst)
418-
\tat <cljs repl>:1
419-
\tat <cljs repl>:1"
420-
{:ua-product :rhino}
421-
{:output-dir ".cljs_rhino_repl"})
422-
423-
(parse-stacktrace {}
424-
"org.mozilla.javascript.JavaScriptException: Error: 1 is not ISeqable (.cljs_rhino_repl/goog/../cljs/core.js#3998)
425-
\tat .cljs_rhino_repl/goog/../cljs/core.js:3998 (cljs$core$seq)
426-
\tat .cljs_rhino_repl/goog/../cljs/core.js:4017 (cljs$core$first)
427-
\tat .cljs_rhino_repl/goog/../cljs/core.js:5160 (cljs$core$ffirst)
428-
\tat .cljs_rhino_repl/goog/../cljs/core.js:16005
429-
\tat .cljs_rhino_repl/goog/../cljs/core.js:16004
430-
\tat .cljs_rhino_repl/goog/../cljs/core.js:10243
431-
\tat .cljs_rhino_repl/goog/../cljs/core.js:10334
432-
\tat .cljs_rhino_repl/goog/../cljs/core.js:3979 (cljs$core$seq)
433-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28083 (cljs$core$pr_sequential_writer)
434-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28811
435-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28267 (cljs$core$pr_writer_impl)
436-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28349 (cljs$core$pr_writer)
437-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28353 (cljs$core$pr_seq_writer)
438-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28416 (cljs$core$pr_sb_with_opts)
439-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28430 (cljs$core$pr_str_with_opts)
440-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28524
441-
\tat .cljs_rhino_repl/goog/../cljs/core.js:28520 (cljs$core$pr_str)
442-
at <cljs repl>:1
443-
"
444-
{:ua-product :rhino}
445-
{:output-dir ".cljs_rhino_repl"})
446-
)
447-
448-
;; -----------------------------------------------------------------------------
449-
;; Nashorn Stacktrace
450-
451-
(defmethod parse-stacktrace :nashorn
452-
[repl-env st err {:keys [output-dir] :as opts}]
453-
(letfn [(process-frame [frame-str]
454-
(when-not (or (string/blank? frame-str)
455-
(== -1 (.indexOf frame-str "\tat")))
456-
(let [frame-str (string/replace frame-str #"\s+at\s+" "")
457-
[function file-and-line] (string/split frame-str #"\s+")
458-
[file-part line-part] (string/split file-and-line #":")]
459-
{:file (string/replace (.substring file-part 1)
460-
(str output-dir
461-
#?(:clj File/separator :cljs "/"))
462-
"")
463-
:function function
464-
:line (when (and line-part (not (string/blank? line-part)))
465-
(parse-int
466-
(.substring line-part 0
467-
(dec (count line-part)))))
468-
:column 0})))]
469-
(->> (string/split st #"\n")
470-
(map process-frame)
471-
(remove nil?)
472-
vec)))
473-
474-
;; -----------------------------------------------------------------------------
475-
;; Graal.JS Stacktrace
476-
477-
(defmethod parse-stacktrace :graaljs
478-
[repl-env st err {:keys [output-dir] :as opts}]
479-
(letfn [(process-frame [frame-str]
480-
(when-not (string/blank? frame-str)
481-
(let [[function file-and-line] (string/split frame-str #"\(")
482-
[file-part line-part] (string/split file-and-line #":")]
483-
{:file (string/replace file-part
484-
(str output-dir
485-
#?(:clj File/separator :cljs "/"))
486-
"")
487-
:function function
488-
:line (when (and line-part (not (string/blank? line-part)))
489-
(parse-int
490-
(.substring line-part 0
491-
(dec (count line-part)))))
492-
:column 0})))]
493-
(->> (string/split st #"\n")
494-
(map process-frame)
495-
(remove nil?)
496-
vec)))
497-
498-
(comment
499-
(parse-stacktrace {}
500-
"Error: 1 is not ISeqable
501-
\tat cljs$core$seq (.cljs_nashorn_repl/goog/../cljs/core.js:3998)
502-
\tat cljs$core$first (.cljs_nashorn_repl/goog/../cljs/core.js:4017)
503-
\tat cljs$core$ffirst (.cljs_nashorn_repl/goog/../cljs/core.js:5160)
504-
\tat <anonymous> (.cljs_nashorn_repl/goog/../cljs/core.js:16005)
505-
\tat <anonymous> (.cljs_nashorn_repl/goog/../cljs/core.js:16004)
506-
\tat sval (.cljs_nashorn_repl/goog/../cljs/core.js:10243)
507-
\tat cljs$core$ISeqable$_seq$arity$1-6 (.cljs_nashorn_repl/goog/../cljs/core.js:10334)
508-
\tat cljs$core$seq (.cljs_nashorn_repl/goog/../cljs/core.js:3979)
509-
\tat cljs$core$pr_sequential_writer (.cljs_nashorn_repl/goog/../cljs/core.js:28083)
510-
\tat cljs$core$IPrintWithWriter$_pr_writer$arity$3-5 (.cljs_nashorn_repl/goog/../cljs/core.js:28811)
511-
\tat cljs$core$pr_writer_impl (.cljs_nashorn_repl/goog/../cljs/core.js:28267)
512-
\tat cljs$core$pr_writer (.cljs_nashorn_repl/goog/../cljs/core.js:28349)
513-
\tat cljs$core$pr_seq_writer (.cljs_nashorn_repl/goog/../cljs/core.js:28353)
514-
\tat cljs$core$pr_sb_with_opts (.cljs_nashorn_repl/goog/../cljs/core.js:28416)
515-
\tat cljs$core$pr_str_with_opts (.cljs_nashorn_repl/goog/../cljs/core.js:28430)
516-
\tat cljs$core$IFn$_invoke$arity$variadic-71 (.cljs_nashorn_repl/goog/../cljs/core.js:28524)
517-
\tat cljs$core$pr_str (.cljs_nashorn_repl/goog/../cljs/core.js:28520)
518-
\tat <anonymous> (<eval>:1)
519-
\tat <program> (<eval>:1)\n"
520-
{:ua-product :nashorn}
521-
{:output-dir ".cljs_nashorn_repl"})
522-
)
523-
524386
;; -----------------------------------------------------------------------------
525387
;; Node.js Stacktrace
526388

src/main/clojure/cljs/cli.clj

+5-5
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ is trying load some arbitrary ns."
298298

299299
(defn- fast-initial-prompt? [repl-env inits]
300300
(and (empty? inits)
301-
(contains? #{"node" "nashorn" "graaljs" "rhino"} (repl-name repl-env))))
301+
(contains? #{"node"} (repl-name repl-env))))
302302

303303
(defn- repl-opt
304304
"Start a repl with args and inits. Print greeting if no eval options were
@@ -545,8 +545,8 @@ present"
545545
{["-re" "--repl-env"]
546546
{:arg "env"
547547
:doc (str "The REPL environment to use. Built-in "
548-
"supported values: nashorn, graaljs, node, browser, "
549-
"rhino. Defaults to browser")}}}
548+
"supported values: node, browser. "
549+
"Defaults to browser")}}}
550550
::main {:desc "init options only for --main and --repl"}
551551
::compile {:desc "init options only for --compile"}}
552552
:init
@@ -583,8 +583,8 @@ present"
583583
:arg "name"
584584
:doc
585585
(str "The JavaScript target. Configures environment bootstrap and "
586-
"defaults to browser. Supported values: node or nodejs, nashorn, "
587-
"graaljs, webworker, none") }
586+
"defaults to browser. Supported values: node or nodejs "
587+
"webworker, none") }
588588
["-ro" "--repl-opts"] {:group ::main&compile :fn repl-env-opts-opt
589589
:arg "edn"
590590
:doc (str "Options to configure the repl-env, can be an EDN string or "

src/main/clojure/cljs/closure.clj

+1-22
Original file line numberDiff line numberDiff line change
@@ -1658,27 +1658,6 @@
16581658
(util/output-directory opts))
16591659
closure-defines (json/write-str (:closure-defines opts))]
16601660
(case (:target opts)
1661-
(:nashorn :graaljs)
1662-
(output-one-file
1663-
(merge opts
1664-
(when module
1665-
{:output-to (:output-to module)}))
1666-
(add-header opts
1667-
(str (when (or (not module) (= :cljs-base (:module-name opts)))
1668-
(str "var CLJS_OUTPUT_DIR = \"" asset-path "\";\n"
1669-
"load((new java.io.File(new java.io.File(\"" asset-path "\",\"goog\"), \"base.js\")).getPath());\n"
1670-
"load((new java.io.File(new java.io.File(\"" asset-path "\",\"goog\"), \"deps.js\")).getPath());\n"
1671-
"load((new java.io.File(new java.io.File(new java.io.File(\"" asset-path "\",\"goog\"),\"bootstrap\"),\"" (name (:target opts)) ".js\")).getPath());\n"
1672-
"load((new java.io.File(\"" asset-path "\",\"cljs_deps.js\")).getPath());\n"
1673-
"goog.global.CLOSURE_UNCOMPILED_DEFINES = " closure-defines ";\n"
1674-
(apply str (preloads (:preloads opts)))))
1675-
(apply str
1676-
(map (fn [entry]
1677-
(str "goog.require(\"" (comp/munge entry) "\");\n"))
1678-
(if-let [entries (when module (:entries module))]
1679-
entries
1680-
[(:main opts)]))))))
1681-
16821661
:nodejs
16831662
(output-one-file
16841663
(merge opts
@@ -2875,7 +2854,7 @@
28752854
opts))
28762855

28772856
(defn output-bootstrap [{:keys [target] :as opts}]
2878-
(when (and (#{:nodejs :nashorn :graaljs} target)
2857+
(when (and (#{:nodejs} target)
28792858
(not= (:optimizations opts) :whitespace))
28802859
(let [target-str (name target)
28812860
outfile (io/file (util/output-directory opts)

0 commit comments

Comments
 (0)