> state-of-the-art multi-threaded designCan you say more about this? I can't find any information about V8's thread handling and concurrency options.
Cheers,
- Andreas
David Griswold wrote:
A little more info on V8.
I talked briefly with Lars Bak and Robert Griesemer today, (both are on the V8 team, and Lars is the lead) and got a little bit of their perspective on using V8 for other languages. As was to be expected, the VM is targeted to JavaScript semantics, and given the gnarliness of those semantics, there are a few caveats to think about.
* V8 will get faster as it matures, of course, however:
* There will be issues around things like immediate object
semantics, which don't exactly match up with any other language. Yucky JavaScript!
* A bigger long-term performance issue is that given the dynamic
nature of JavaScript objects (i.e. adding/removing slots on the
fly) there apparently isn't any way around adding an additional
indirection to deal with the object size changing dynamically. That is something that will just have to be lived with. I was
hoping they had some magic there, but apparently not.
I'm sure that these sorts of things can be worked around, but they do mean that V8 will never in its pure form quite reach the pinnacle of theoretical performance possible for a VM targeted specifically to Smalltalk etc. So it won't be as fast as Strongtalk, although it may get fairly close to VisualWorks performance.
Nonetheless, I still think it or some derivative will quickly become the dominant dynamic language VM, for the following reasons:
* Given who the developers are, and with Google behind it, it will
be the fastest JavaScript VM for a long time to come.
* For the same reason, it will be reliable and secure (as much as it
can be, anyway; nothing is perfect).
* It will be supported on the three major platforms (Windows, Linux,
Mac). * It can be used with other browsers, so I'm sure it will be ported
to Firefox (if only as an option). Some or all of the other
browsers may also adopt it, given that it will have a very
hard-to-overcome performance advantage (these sorts of VMs can't
be pulled out of a hat). Although MS and maybe Safari may have
too much of a Not Invented Here problem with it, as well as
standards war issues.
* those things, plus the other architectural advantages it brings,
will make it a primary target for serious web app development,
esp. Google apps.
* So it will be ubiquitous
So it will be an irresistible platform for other dynamic languages, even if they could theoretically run a bit faster on a custom VM. Remember it will still be a lot easier to run other dynamic languages on JavaScript than it is to run them on Java, since at least JavaScript is fully dynamic, unlike Java.
And remember, the bottom line is that it is a clean, supported, state-of-the-art multi-threaded design that is fully open-source. So as a last resort, there is always FORK!
-Dave
------------------------------------------------------------------------
> I guess I should have said multi-process,
> since I was referring to the ability to run many separate fully independent
> processes from a shared VM, which probably translates to some form of
> concurrency inside the VM.
(Disclaimer: I work for Google, but have no inside information about
Chrome or V8.)
As I understand it, each tab (and a fortiori each window, with some
exceptions) is a separate OS-level process, and shares nothing except
the code segment and, transparently, any COW data that may exist under
operating systems that support it. Consequently, there is no reason
for V8 to do anything special for concurrency, as the only concurrency
present is that needed for timers etc. I don't know whether the
in-memory page cache is shared or not.
> There's going to be a lot to find out!
Indeed.
--
GMail doesn't have rotating .sigs, but you can see mine at
http://www.ccil.org/~cowan/signatures