Since an embedded JavaScriptCore can be made to launch quickly, I've been pondering whether it is justified in converting Planck to be a portable (OS X, Linux, Windows) C-based wrapper around JavaScriptCore (so that it is more broadly useful). Right now Planck is not portable owing to the use of Cocoa/Foundation and Objective-C.
I think this partially boils down to wether the launch latency is faster than an equivalent based on Node.js (which is already portable and has a much richer ecosystem). That latency has to be significantly different, and I also think you'd need to be convinced that it is going to remain that way (perhaps V8 will be further optimized, but perhaps the outright launch speed of Node.js isn't a priority).
Here is my first attempt at a comparison, based on Joel Martin's work:
$ time echo '(map inc [1 2 3])' | cljs
cljs.user=> (map inc [1 2 3])
(2 3 4)
cljs.user=>
real 0m0.826s
user 0m0.748s
sys 0m0.093s
$ time echo '(map inc [1 2 3])' | ~/Projects/planck/build/Release/planck
(2 3 4)
real 0m0.385s
user 0m0.492s
sys 0m0.087s
@bhauman Yes. I can't see Planck competing with a Node-based solution except perhaps on:
-i
,-e
,-m
, etc.) But I'm not convinced a Node.js solution couldn't provide that either, even if via a small wrapper script.Node wins huge in terms of community behind it, cross-platform support, libraries.
I think the only reason Planck is currently interesting is its startling startup time difference, which could easily go away.