David Griswold
2008-09-03 06:00:52 UTC
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 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