<< Back to previous view

[CLJS-2919] Git ignore package.json and package-lock.json Created: 21/Sep/18  Updated: 21/Sep/18

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

Type: Enhancement Priority: Minor
Reporter: Mike Fikes Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: newbie


 Description   

If you run the unit tests via script/test, then you end up with a package.json and package-lock.json file which are eligible to be staged by git (or whatever the correct term is), which makes it more difficult to then switch branches.

If you do a script/clean these files are cleaned up. But perhaps we can also add them to the .gitignore file.






[CLJS-2918] cljs.main: Extra out directory in path for user.cljs Created: 20/Sep/18  Updated: 20/Sep/18

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

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

{:deps {org.clojure/clojurescript {:mvn/version "1.10.339"}}}



 Description   
src/user.cljs
(def a 3)

Things work

$ clj -Srepro -m cljs.main -d out -r
ClojureScript 1.10.339
cljs.user=> a
3
cljs.user=>

But if you look, you will see an extra out directory in the path for the user file:

out/out/cljs/user/userAE725FA.js





[CLJS-2917] cljs.main: Failure to load user.cljs if temp out dir Created: 20/Sep/18  Updated: 20/Sep/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
Environment:

{:deps {org.clojure/clojurescript {:mvn/version "1.10.339"}}}



 Description   
src/user.cljs
(def a 3)
$ clj -Srepro -m cljs.main
java.lang.IllegalArgumentException: /var/folders/gx/nymj3l7x4zq3gxb97v2zwzb40000gn/T/out6255758032123683761473031144485066/cljs/user/userAE725FA.js is not a relative path
	at clojure.java.io$as_relative_path.invokeStatic(io.clj:414)
	at clojure.java.io$file.invokeStatic(io.clj:426)
	at clojure.java.io$file.invoke(io.clj:418)
	at cljs.closure$compile_file.invokeStatic(closure.clj:633)
	at cljs.closure$compile_file.invoke(closure.clj:625)
	at cljs.closure$fn__5175.invokeStatic(closure.clj:721)
	at cljs.closure$fn__5175.invoke(closure.clj:715)
	at cljs.closure$fn__5088$G__5081__5095.invoke(closure.clj:543)
	at cljs.closure$compile.invokeStatic(closure.clj:595)
	at cljs.closure$compile.invoke(closure.clj:592)
	at cljs.repl$load_file$fn__6454.invoke(repl.cljc:601)
	at cljs.repl$load_file.invokeStatic(repl.cljc:600)
	at cljs.repl$load_file.invoke(repl.cljc:592)
	at cljs.repl$repl_STAR_$maybe_load_user_file__6612.invoke(repl.cljc:958)
	at cljs.repl$repl_STAR_$fn__6621$fn__6622.invoke(repl.cljc:989)
	at cljs.repl$repl_STAR_$fn__6621.invoke(repl.cljc:982)
	at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1289)
	at cljs.compiler$with_core_cljs.invoke(compiler.cljc:1278)
	at cljs.repl$repl_STAR_.invokeStatic(repl.cljc:979)
	at cljs.repl$repl_STAR_.invoke(repl.cljc:855)
	at cljs.cli$repl_opt.invokeStatic(cli.clj:305)
	at cljs.cli$repl_opt.invoke(cli.clj:292)
	at cljs.cli$main.invokeStatic(cli.clj:638)
	at cljs.cli$main.doInvoke(cli.clj:625)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$apply.invoke(core.clj:652)
	at cljs.main$_main.invokeStatic(main.clj:61)
	at cljs.main$_main.doInvoke(main.clj:52)
	at clojure.lang.RestFn.invoke(RestFn.java:397)
	at clojure.lang.AFn.applyToHelper(AFn.java:152)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.main$main_opt.invokeStatic(main.clj:317)
	at clojure.main$main_opt.invoke(main.clj:313)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)
ClojureScript 1.10.339
cljs.user=>

If, on the other hand you specify an output directory (via -d) things work.






[CLJS-2916] Optimize code gen for empty queue Created: 18/Sep/18  Updated: 21/Sep/18

Status: In Progress
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Minor
Reporter: Mike Fikes Assignee: David Nolen
Resolution: Unresolved Votes: 0
Labels: newbie, performance

Attachments: Text File CLJS-2916.patch    
Patch: Code and Test

 Description   

If you have #queue [] in your code, the code generated is

cljs.core.into.call(null,cljs.core.PersistentQueue.EMPTY,cljs.core.PersistentVector.EMPTY)

when it could, for the empty vector case generate

cljs.core.PersistentQueue.EMPTY

See https://github.com/clojure/clojurescript/blob/f289ffee2270567f7976d45012a0a52c38eb6488/src/main/clojure/cljs/tagged_literals.cljc#L21



 Comments   
Comment by Colin Kahn [ 19/Sep/18 1:01 PM ]

Here's a go at doing this one. Not sure if the tests are how they should be.

Comment by Mike Fikes [ 19/Sep/18 1:11 PM ]

Hey Colin. Thanks for the contribution! Have you signed the CA? I don't see your name listed here https://clojure.org/community/contributors

If not, please see https://clojurescript.org/community/contributing

Comment by Colin Kahn [ 19/Sep/18 1:12 PM ]

Hi Mike,

Just did this morning, got the confirmation in my email.

Comment by Mike Fikes [ 19/Sep/18 1:13 PM ]

Great, I'll review the patch.

Comment by Mike Fikes [ 19/Sep/18 1:27 PM ]

Hey Colin,

For your 2nd test, did you perhaps mean to check this?

(instance? PersistentQueue #queue [1 2 3])

In terms of actually testing the patch, the only thing I can think of is to inspect the generated code. Looking at the string produced by

(binding [*print-fn-bodies* true] (pr-str (fn [] #queue [])))

seems like a bit of a hack, but you could check if the string produced contains PersistentVector and if so, fail the test.

Comment by Colin Kahn [ 19/Sep/18 2:01 PM ]

Yes, definitely meant to check the type. Oddly I didn't get a failure from that in the test report. I was curious if there's a way to run just a subset of the tests?

What do you think of using with-redefs?

(with-redefs [into (fn [& _] (throw (ex-info "Inefficiently created PersistentQueue" {})))] #queue [])
Comment by Mike Fikes [ 19/Sep/18 2:43 PM ]

Hi Colin,

I'm not aware of a way to just run a subset of the tests. FWIW, Travis CI fails the build https://travis-ci.org/mfikes/clojurescript/builds/430674720

I definitely like your with-redefs approach. Much more clever than my string hack.

Comment by Colin Kahn [ 19/Sep/18 5:12 PM ]

Hi Mike,

I updated the attached patch.

Those tests don't actually get run when you do 'lein test', looks like Travis does a build and runs them using jsc. I replicated locally, not sure if there are commands to make that easier.

Comment by Mike Fikes [ 19/Sep/18 5:21 PM ]

Thanks. I'll take a look at the revised patch. These tests are run via script/test. More info at https://clojurescript.org/community/running-tests

Comment by Mike Fikes [ 19/Sep/18 5:45 PM ]

With the patch #queue [] is free.

Benchmarking: (simple-benchmark [f (fn [] #queue [])] (f) 1e8)

Before:

Benchmarking with V8
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 442 msecs
Benchmarking with SpiderMonkey
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 988 msecs
Benchmarking with JavaScriptCore
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 2041 msecs
Benchmarking with Nashorn
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 47257 msecs
Benchmarking with ChakraCore
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 3040 msecs
Benchmarking with GraalVM
[f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))], (f), 100000000 runs, 296 msecs

After:

Benchmarking with V8
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, 0 msecs
Benchmarking with SpiderMonkey
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, 0 msecs
Benchmarking with JavaScriptCore
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, 0 msecs
Benchmarking with Nashorn
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, -1 msecs
Benchmarking with ChakraCore
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, -5 msecs
Benchmarking with GraalVM
[f (fn [] cljs.core.PersistentQueue.EMPTY)], (f), 100000000 runs, -1 msecs
Comment by Mike Fikes [ 19/Sep/18 6:33 PM ]

CLJS-2916.patch of 19/Sep/18 6:12 PM LGTM.

It passes all tests, including Canary tests. Perf looks good given the previous comment.





[CLJS-2915] Tests fail if directory has a period (.) in the path Created: 16/Sep/18  Updated: 16/Sep/18

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

Type: Defect Priority: Major
Reporter: Ray McDermott Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Check out compiler into a cljs.dev directory and run lein test :only cljs.module-processing-tests.

Seems very similar to CLJS-2914.

$ lein test :only cljs.module-processing-tests

lein test cljs.module-processing-tests

lein test :only cljs.module-processing-tests/test-module-name-substitution

FAIL in (test-module-name-substitution) (module_processing_tests.clj:124)
expected: (= (str "goog.provide('my_calculator.core');" crlf "goog.require('cljs.core');" crlf "goog.require('" (absolute-module-path "src/test/cljs/calculator.js" true) "');" crlf) (compile (quote (ns my-calculator.core (:require [calculator :as calc :refer [subtract add] :rename {subtract sub}])))))
  actual: (not (= "goog.provide('my_calculator.core');\ngoog.require('cljs.core');\ngoog.require('module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$calculator');\n" "goog.provide('my_calculator.core');\ngoog.require('cljs.core');\ngoog.require('module$Users$ray$dev$cljs_dev$clojurescript$src$test$cljs$calculator');\n"))

lein test :only cljs.module-processing-tests/test-module-name-substitution

FAIL in (test-module-name-substitution) (module_processing_tests.clj:129)
expected: (= output (compile (quote (calc/add 3 4))))
  actual: (not (= "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n" "module$Users$ray$dev$cljs_dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n"))

lein test :only cljs.module-processing-tests/test-module-name-substitution

FAIL in (test-module-name-substitution) (module_processing_tests.clj:130)
expected: (= output (compile (quote (calculator/add 3 4))))
  actual: (not (= "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n" "module$Users$ray$dev$cljs_dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n"))

lein test :only cljs.module-processing-tests/test-module-name-substitution

FAIL in (test-module-name-substitution) (module_processing_tests.clj:131)
expected: (= output (compile (quote (add 3 4))))
  actual: (not (= "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n" "module$Users$ray$dev$cljs_dev$clojurescript$src$test$cljs$calculator[\"default\"].add((3),(4));\n"))

lein test :only cljs.module-processing-tests/test-module-name-substitution

FAIL in (test-module-name-substitution) (module_processing_tests.clj:132)
expected: (= (str (absolute-module-path "src/test/cljs/calculator.js" true) "[\"default\"].subtract((5),(4));" crlf) (compile (quote (sub 5 4))))
  actual: (not (= "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$calculator[\"default\"].subtract((5),(4));\n" "module$Users$ray$dev$cljs_dev$clojurescript$src$test$cljs$calculator[\"default\"].subtract((5),(4));\n"))

lein test :only cljs.module-processing-tests/commonjs-module-processing-preprocess-symbol

FAIL in (commonjs-module-processing-preprocess-symbol) (module_processing_tests.clj:191)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/reactJS.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$Circle", :module-type :commonjs}} {"React" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$Circle", :module-type :commonjs}}))

lein test :only cljs.module-processing-tests/es6-module-processing

FAIL in (es6-module-processing) (module_processing_tests.clj:97)
Processed modules are added to :js-module-index
expected: (= {"es6-hello" {:name (absolute-module-path "src/test/cljs/es6_hello.js"), :module-type :es6}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"es6-hello" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$es6-hello", :module-type :es6}} {"es6-hello" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$es6-hello", :module-type :es6}}))

lein test :only cljs.module-processing-tests/test-cljs-1822

FAIL in (test-cljs-1822) (module_processing_tests.clj:162)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/react-min.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle-min.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$react-min", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$Circle-min", :module-type :commonjs}} {"React" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$react-min", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$Circle-min", :module-type :commonjs}}))

lein test :only cljs.module-processing-tests/commonjs-module-processing

FAIL in (commonjs-module-processing) (module_processing_tests.clj:71)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/reactJS.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs.dev$clojurescript$src$test$cljs$Circle", :module-type :commonjs}} {"React" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$ray$dev$cljs-dev$clojurescript$src$test$cljs$Circle", :module-type :commonjs}}))

Ran 5 tests containing 14 assertions.
9 failures, 0 errors.
Tests failed.


 Comments   
Comment by Ray McDermott [ 16/Sep/18 8:13 AM ]

It's looking for cljs_dev





[CLJS-2914] Tests fail if hypen in directory name Created: 16/Sep/18  Updated: 16/Sep/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   

Check out compiler into a foo-bar directory and run lein test :only cljs.module-processing-tests.

Seems very similar to CLJS-2703.

$ lein test :only cljs.module-processing-tests

lein test cljs.module-processing-tests

lein test :only cljs.module-processing-tests/commonjs-module-processing-preprocess-symbol

FAIL in (commonjs-module-processing-preprocess-symbol) (module_processing_tests.clj:191)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/reactJS.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$Circle", :module-type :commonjs}} {"React" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$Circle", :module-type :commonjs}}))

lein test :only cljs.module-processing-tests/es6-module-processing

FAIL in (es6-module-processing) (module_processing_tests.clj:97)
Processed modules are added to :js-module-index
expected: (= {"es6-hello" {:name (absolute-module-path "src/test/cljs/es6_hello.js"), :module-type :es6}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"es6-hello" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$es6-hello", :module-type :es6}} {"es6-hello" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$es6-hello", :module-type :es6}}))

lein test :only cljs.module-processing-tests/test-cljs-1822

FAIL in (test-cljs-1822) (module_processing_tests.clj:162)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/react-min.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle-min.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$react-min", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$Circle-min", :module-type :commonjs}} {"React" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$react-min", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$Circle-min", :module-type :commonjs}}))

lein test :only cljs.module-processing-tests/commonjs-module-processing

FAIL in (commonjs-module-processing) (module_processing_tests.clj:71)
Processed modules are added to :js-module-index
expected: (= {"React" {:name (absolute-module-path "src/test/cljs/reactJS.js"), :module-type :commonjs}, "Circle" {:name (absolute-module-path "src/test/cljs/Circle.js"), :module-type :commonjs}} (:js-module-index (clojure.core/deref cenv)))
  actual: (not (= {"React" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo_bar$clojurescript$src$test$cljs$Circle", :module-type :commonjs}} {"React" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$reactJS", :module-type :commonjs}, "Circle" {:name "module$Users$mfikes$foo-bar$clojurescript$src$test$cljs$Circle", :module-type :commonjs}}))

Ran 5 tests containing 14 assertions.
4 failures, 0 errors.
Tests failed.


 Comments   
Comment by Mike Fikes [ 16/Sep/18 7:10 AM ]

As far as I can tell, this is not a new regression and existed at the time CLJS-2703 was fixed.





[CLJS-2913] improvements to exception messages and printing Created: 15/Sep/18  Updated: 15/Sep/18

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

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


 Description   

Port CLJ-2373 to ClojureScript.






[CLJS-2912] Reuse seq in some Created: 14/Sep/18  Updated: 16/Sep/18

Status: In Progress
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Mike Fikes Assignee: David Nolen
Resolution: Unresolved Votes: 0
Labels: newbie

Attachments: Text File 0001-CLJS-2912-Reuse-seq-in-some.patch    
Patch: Code

 Description   

Port CLJ-1654 to ClojureScript.



 Comments   
Comment by Mike Fikes [ 16/Sep/18 4:28 PM ]

Speedups for (simple-benchmark [coll [3 3 5 5 7 7 7 6 9]] (some even? coll) 10000000):

V8: 0.81
SpiderMonkey: 1.08
JavaScriptCore: 1.20
Nashorn: 1.41
ChakraCore: 1.04
GraalVM: 2.70

Comment by Mike Fikes [ 16/Sep/18 5:57 PM ]

Patch LGTM and passes all Canary tests.





[CLJS-2911] partition-by runs infinite loop when one element of infinite partition is accessed Created: 14/Sep/18  Updated: 16/Sep/18

Status: In Progress
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Mike Fikes Assignee: David Nolen
Resolution: Unresolved Votes: 0
Labels: newbie

Attachments: Text File 0001-CLJS-2911-Avoid-infinite-loop-on-infinite-partitions.patch    
Patch: Code and Test

 Description   

Port CLJ-1764 to ClojureScript.



 Comments   
Comment by Mike Fikes [ 16/Sep/18 5:00 PM ]

Speedups for (simple-benchmark [r (range 100000)] (count (partition-by odd? r)) 10)

V8: 0.91
SpiderMonkey: 0.87
JavaScriptCore: 0.81
Nashorn: 0.96
ChakraCore: 0.87
GraalVM: 0.74

Comment by Mike Fikes [ 16/Sep/18 7:12 PM ]

Patch LGTM. It is a little surprising that changing a seq to lazy-seq slows things down so much for the benchmark above. Otherwise the change passes on all of the Canary tests.





[CLJS-2910] flatten docstring does not describe lazy result Created: 14/Sep/18  Updated: 16/Sep/18

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

Type: Enhancement Priority: Trivial
Reporter: Mike Fikes Assignee: David Nolen
Resolution: Unresolved Votes: 0
Labels: newbie

Attachments: Text File 0001-CLJS-2910-Docstring-describe-lazy-result-for-flatten.patch    

 Description   

Port CLJ-2122 to ClojureScript.



 Comments   
Comment by Mike Fikes [ 16/Sep/18 3:07 PM ]

Patch LGTM.





[CLJS-2909] clojure.walk/postwalk does not preserve MapEntry type objects Created: 14/Sep/18  Updated: 15/Sep/18

Status: In Progress
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

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

Attachments: Text File CLJS-2909.patch    
Patch: Code and Test

 Description   

Port CLJ-2031 to ClojureScript.



 Comments   
Comment by Mike Fikes [ 15/Sep/18 1:42 PM ]

CLJS-2909.patch passes Canary tests.





[CLJS-2908] Don't show quick prompt if :verbose or :repl-verbose Created: 14/Sep/18  Updated: 14/Sep/18

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

Type: Enhancement Priority: Minor
Reporter: Mike Fikes Assignee: David Nolen
Resolution: Unresolved Votes: 0
Labels: None

Attachments: Text File CLJS-2908.patch    
Patch: Code

 Description   

With CLJS-2897, if you specify -co '{:verbose true}' or -co '{:repl-verbose true}' then the prompt will be printed prior to much of the verbose output (and lost in the noise).






[CLJS-2907] Hello world! not printed for QuickStart Created: 14/Sep/18  Updated: 14/Sep/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
Environment:

1.10.339
Mac OS
Safari



 Description   

When following Quick Start, just seeing a blank line at times:

Bad:

$ clj --main cljs.main --compile hello-world.core --repl

ClojureScript 1.10.339
cljs.user=>

Good:

$ clj --main cljs.main --compile hello-world.core --repl
Hello world!
ClojureScript 1.10.339
cljs.user=>





Generated at Fri Sep 21 14:28:52 CDT 2018 using JIRA 4.4#649-r158309.