[This is a response to this blog post by @olympum, with the rest of the thread being here and here.]
Bruno makes three assertions about the relationship between NodeJS and V8: that V8 was not designed as a server-side engine, that V8’s lack of threading inhibits adequate fault isolation, and that lack of explicit alignment between the V8 and NodeJS projects may lead to problems in the future.
V8 was not designed for server-side execution
I’m not really sure what this means, as Bruno doesn’t provide any details on what he’s concerned about.
invokedynamic instruction not withstanding).
It would be wonderful if someone at Joyent or Yahoo! could contribute a representative benchmark (it’s open source!) and/or include a JVM-based engine to AWFY.
V8’s lack of threads inhibits fault isolation
This is a specious argument, IMO.
In a system which runs each request in its own thread, fault isolation is no better than a system which multiplexes requests over a single thread.
In a multiplexed model (e.g. NodeJS), things are largely the same: a fault will bubble up to the top of the event loop as an exception where it will be dealt with. Other requests are unaffected. Significantly, the lack of parallelism within the same address space suggests that this model may in fact be less likely to fail than a threaded model (no locking bugs!).
This argument boils down to which VM is more likely to crash of its own volition, taking all requests (be they in separate threads or not) with it. I don’t have any information one way or the other on whether the JVM is more reliable than V8. Bruno, do you?
The V8 team’s commitment to NodeJS is uncertain
@jasonh makes several excellent points on the nature of this relationship (and Joyent’s) in his blog post.