This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-02-13
Channels
- # bangalore-clj (1)
- # beginners (29)
- # boot (13)
- # braveandtrue (5)
- # clara (5)
- # cljs-dev (42)
- # cljsrn (7)
- # clojure (55)
- # clojure-france (46)
- # clojure-nl (11)
- # clojure-portugal (1)
- # clojure-russia (268)
- # clojure-spec (26)
- # clojure-uk (32)
- # clojurescript (173)
- # clr (2)
- # core-async (46)
- # cursive (22)
- # datomic (33)
- # devcards (1)
- # emacs (5)
- # events (8)
- # figwheel (2)
- # flambo (4)
- # instaparse (8)
- # jobs (11)
- # klipse (46)
- # lein-figwheel (3)
- # london-clojurians (2)
- # nrepl (1)
- # off-topic (29)
- # om (4)
- # om-next (8)
- # pedestal (3)
- # rdf (4)
- # re-frame (51)
- # reagent (104)
- # remote-jobs (1)
- # rum (4)
- # schema (2)
- # specter (19)
- # untangled (16)
- # vim (52)
hiredman I dropped a comment on http://dev.clojure.org/jira/browse/ASYNC-169 - trying to move some of this forward but need some feedback there
@alexmiller RE: ASYNC-138, I see you're on a core.async ticket spree and that's a ticket I'd really like to get fixed sooner rather than later, do you think you'll be able to get back to those tickets in the near future? if not I'll try to fix the patch today
I hope to get a release out this week but I’m not urgent to do it today
so I can wait
it does seem like you could play whack-a-mole with that stuff until the ioc macros implement their own locals clearing
yeah, locals clearing is the only real answer
And now that we have volatile we could switch to using that instead of atomic arrays.
@tbaldridge not sure we can do proper locals clearing in macros, without using the ^:once fn*
trick, locals still have to cross into the ioc loop, and once they do the compiler will never let them get cleared
I'm not sure I understand
"cross into the ioc loop"...
oh yeah, that
as soon as a local enters a loop body, the compiler won't allow clearing of that loop until the loop exits
didn't realize that was the problem.
we transform it into (let [a (range) a' (^:once fn* [] a)] (loop [..] (let [a (a')] ..))
that's not even locals clearing, right? more like "closure clearing" ?
because we have the (informal) guarantee that a
will be actually only used once to be inserted into the locals array
Is that a thing in Clojure though? Does Clojure do that currently (let [a (range)] (fn [] (doseq [x a])))
I would have thought that would hold onto the head of a
but I guess that may not be the case (learn something new every day).
@tbaldridge dunno but it's manifesting in very simple cases using e.g. onto-chan
someday maybe I'll get the energy to go rewrite this all as a modification to Compiler.java...someday
if you or @alexmiller need help understanding what's happening in that patch feel free to ping me