Hacker News new | ask | show | jobs
by lennel 4378 days ago
clojurescript run in node? is this on the roadmap?
1 comments

ClojureScript already runs on node: https://github.com/clojure/clojurescript/wiki/Quick-Start#ru...

I think what GP is complaining about is the compilation step, which requires a JVM and isn't exactly the fastest.

Touche - You don't need project.clj and leiningen and can run a command basically like you're asking for. I'm not sure how much faster it is than using leiningen and cljsbuild, as I haven't tried it: https://github.com/clojure/clojurescript/wiki/Quick-Start#cl...

this is what I was reffering too, the compilation step. It seems very daft for me to loose the closure compiler. I assume lein keeps the jvm hot, if not writing a script to do it should be pretty simple.
`cljsbuild auto` keeps the jvm hot and rebuilds any time the source changes.

You could also use something like Nailgun too, if that is more desirable.

When I develop in ClojureScript, I generally avoid rebuilding altogether whenever possible (auto or otherwise) and instead have my editor send changes to the browser REPL. I don't know if you can do this with node too, but it would seem odd if not. This seems to be the preferred approach by most Clojure devs.

Yes, but I factor in having to create a folder structure, edit the project.clj file to add my compilation targets, and all of that, it's not "light weight" for something like a small script that just is a single widget.

Btw, I ran: time lein cljsbuild once on a project with a minor change (added a line break) and it took 22 seconds.... so this is also what I'm talking about.

You don't have to run JVM Clojure to run Closure. JVM Clojure is the slow part. Port the ClojureScript compilation to Node and still call Closure.
you are wrong.The closure compiler is written in java. it is a fact of life that you need the jvm.
You're misunderstanding me, I know closure is written in Java. But closure is not the slow part. I timed doing lein cljsbuild once and it takes like 22 seconds; that's not Closure. That's Clojure itself. ClojureScript would be much faster, it has virtually none of the slowness that JVM Clojure has.
it sounds to me that the jvm is not kept running and you are paying a startup cost each time.

Transpiling a bucket load of any language in a warm jvm will be less than 2-3 seconds, and could easily be done on page refresh.

to give you some perspective, we have massive closure apps, first compilation on my (very powerful) desktop takes a minute 30 seconds or so (advanced optimizations and several other extremely stringent flags along with quite a few compiler plugins we wrote) keeping the jvm warm, and compiling with these same flags + plugins, the time comes down to under 5 seconds.