This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
To follow up on my prior request, I think soon I'll be exploring implementing a new PR to CLJS for a new target,
:with-webworker which will spit out both a
main.js and a
main-worker.js, so that an in core
spawn fn (or one provided in a lib) can depend on there being a shim available. Or maybe just always produce the shim for every build if it's really cheap. Reason being, in-mesh is shaping up to be pretty powerful:
And more to the point, I ported injest's auto-parallizing macro
(let [a @(future 1) b @(future 2) c @(future 3)] (println :values [a b c]) [a b c]) ;:values [1 2 3] ;=> [1 2 3]
=>>to inmesh and it makes a super low bar to improving performance through webworkers:
So it's moving beyond the toy benefits of syntactically and semantically synchronous control flow and into legitimately ergonomic performance improvements. But I still can't just require in
(defn flip [n] (apply comp (take n (cycle [inc dec])))) (->> (range 1000000) (map (flip 100)) (filter odd?) (map (flip 100)) (map inc) (map (flip 100)) (apply +) (println) time) ;"Elapsed time: 11452.300000 msecs" ;=> 250000500000 (=>> (range 1000000) (map (flip 100)) (filter odd?) (map (flip 100)) (map inc) (map (flip 100)) (apply +) (println) time) ;"Elapsed time: 5615.500000 msecs" ;=> 250000500000
injestand then provide the
=>>macro to CLJS consumers without also copying over chapters of documentation from the
in-meshrepo (which don't exist yet) explaining how you have to set up at least 2 builds, or 3 for more convenient repling, which will be different for each of the different build tools. It's the messiest part of the whole situation. It's a pretty complicated problem, so IDK yet if I'll come up with some thing that makes a lot of sense and that everyone will agree to, across all the different build tools, WRT one common impl of a
spawnfn that will automatically Just Work across all possible build tools and build configurations. I'll let y'all know if I come up with anything, but if anything comes to mind, please do reach out or ping me here with your ideas.