This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-02-01
Channels
- # aleph (1)
- # announcements (2)
- # aws (3)
- # bangalore-clj (1)
- # beginners (136)
- # boot (3)
- # calva (89)
- # cider (44)
- # cljdoc (1)
- # cljs-dev (31)
- # clojure (101)
- # clojure-europe (3)
- # clojure-italy (52)
- # clojure-nl (7)
- # clojure-spec (12)
- # clojure-uk (34)
- # clojurescript (62)
- # community-development (46)
- # cursive (25)
- # datomic (6)
- # duct (26)
- # events (6)
- # figwheel-main (4)
- # fulcro (25)
- # graphql (2)
- # jackdaw (4)
- # jukebox (3)
- # kaocha (57)
- # leiningen (31)
- # off-topic (3)
- # onyx (4)
- # other-languages (22)
- # pathom (18)
- # re-frame (9)
- # reitit (3)
- # shadow-cljs (60)
- # spacemacs (9)
- # speculative (22)
- # sql (39)
- # tools-deps (45)
- # vim (37)
fixed, thx
I'm curious to see how the loop/recur inference works, clojure does it but it requires some quadratic number of passes in the worse case
the predicate inference stuff looks sick, I wanted to play with it in CinC too but never got round to it, congrats to everybody involved to getting it done
ah I see, yeah in clojure it's pretty involved as it completely changes the type inference in interop call s
what happens in clojure is that the entire loop body needs to be re-analyzed if a recur point invalidates the inferred type from the loop point
@bronsa I’d have to re-look at the implementation again, but re-analysis is part of the game. IIRC, it is limited to one re-analysis pass. To address the compiler-perf concern we did some testing…
Here is the ticket: https://dev.clojure.org/jira/browse/CLJS-2873 Empirically the effect in that test was a speedup of 0.97 when compiling a test corpus of code.
in my tools.analyzer impl I implemented that pass by invalidating the type inference pass in the AST and re-running the pass rather than re-analyzing and re-macroexpanding the loop body
More on the overall perf tests cited in that ticket are at https://github.com/mfikes/cljs-perf/
Just found out that you do need to require [clojure.test.check.properties]
separately from [clojure.test.check]
before using (stest/check)
, so I think going back to the old error message is better, which means reverting:
https://github.com/clojure/clojurescript/commit/90c9a680e3e269a0b5f40cc907d9889d03c8dcbb