mfikes / ambly

ClojureScript REPL into embedded JavaScriptCore
http://ambly.fikesfarm.com
Eclipse Public License 1.0
541 stars 21 forks source link

Improve repeated `require` for same path #7

Closed mfikes closed 9 years ago

mfikes commented 9 years ago

Logging the set of require calls when firing up the REPL shows that some JavaScript files are being required multiple times (see cljs/core.js and goog/string/string.js repeated for example):

2015-02-04 11:45:02.463 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/base.js
2015-02-04 11:45:02.466 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/deps.js
2015-02-04 11:45:02.493 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/ambly_repl_deps.js
2015-02-04 11:45:02.509 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/../cljs/core.js
2015-02-04 11:45:02.545 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/stringbuffer.js
2015-02-04 11:45:02.545 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/array/array.js
2015-02-04 11:45:02.546 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/asserts/asserts.js
2015-02-04 11:45:02.547 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/debug/error.js
2015-02-04 11:45:02.547 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/dom/nodetype.js
2015-02-04 11:45:02.547 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/string.js
2015-02-04 11:45:02.549 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/object/object.js
2015-02-04 11:45:02.550 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/string.js
2015-02-04 11:45:02.652 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/../cljs/core.js
2015-02-04 11:45:02.657 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/stringbuffer.js
2015-02-04 11:45:02.657 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/array/array.js
2015-02-04 11:45:02.658 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/asserts/asserts.js
2015-02-04 11:45:02.658 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/debug/error.js
2015-02-04 11:45:02.658 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/dom/nodetype.js
2015-02-04 11:45:02.659 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/string.js
2015-02-04 11:45:02.659 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/object/object.js
2015-02-04 11:45:02.668 Ambly Demo[2688:69160] require: /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/../cljs/repl.js
mfikes commented 9 years ago

I think for now, maintaining a set of path names already required and skipping if already processed would take care of this. Quick reading of Node.js require semantics appears to involve similar logic (along with a require.cache that can be manipulated by user code to invalidate cached entries.)

mfikes commented 9 years ago

Guarding against reload results in:

2015-02-04 12:23:12.091 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/base.js
2015-02-04 12:23:12.101 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/deps.js
2015-02-04 12:23:12.130 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/ambly_repl_deps.js
2015-02-04 12:23:12.145 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/../cljs/core.js
2015-02-04 12:23:12.180 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/stringbuffer.js
2015-02-04 12:23:12.180 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/array/array.js
2015-02-04 12:23:12.181 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/asserts/asserts.js
2015-02-04 12:23:12.182 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/debug/error.js
2015-02-04 12:23:12.182 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/dom/nodetype.js
2015-02-04 12:23:12.182 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/string/string.js
2015-02-04 12:23:12.184 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/object/object.js
2015-02-04 12:23:12.285 Ambly Demo[3422:89726] Loading /Users/mfikes/Documents/Projects/ambly/Clojure/out/goog/../cljs/repl.js