[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] open source AVM2 VMs

From: Ashley Reid
Subject: Re: [Gnash-dev] open source AVM2 VMs
Date: Thu, 2 Sep 2010 10:53:05 +0200

Why did the previous AVM2 attempts fail?

On Thu, Sep 2, 2010 at 4:29 AM, Rob Savoye <address@hidden> wrote:
 So I've spent a little time looking at AVM2 VMs that are also open
source. It seems that what we want to do is pass off any swf bytecodes
Gnash sees to another VM, and get back something like a display list. As
others have looked into this in much more depth than I have, I can't
barely wait to be corrected. :-)

 But I do believe we want to use our own renderers, and to also support
the usual mixed model of flash were a swf file can load and execute
other swf files of differing versions. What follows is not an exhaustive
list, but just something to get the discussions going based on limited
research. One thing to note is both ActionScript and _javascript_ are
based on the same ECMA standard, so a VM can supposedly be used for
either. The biggest difference of course is that _javascript_ is headless,
and does no graphics, and flash of course, does graphics.

 Lightspark is a GPL'd AVM2 VM with YouTube support. The problem being
is seems primarily geared towards being a YouTube player, and not much
else. It's plugin fires up Gnash if it sees older swf files, but I don't
believe it supports the mixed swf execution thing that is heavily used
by flash when you try to do anything that isn't YouTube. It also
supports OpenGL only, which would be a problem. There is also no API to
use LightSpark as an external VM. To me it seems that to use LightSpark
would require forking it and becoming LightSpark++ developers, which I
have no interest in myself.

 Tamarin is AVM2 used in Adobe flash, and then later open sourced and
donated to Mozilla for use as a faster _javascript_ engine. This later
became the ActionMonkey project. Currently Tamarin isn't used at all by
Mozilla or Firefox, as it turns out to have both performance and
functionality problems. Although Adobe uses this, I'm not entirely sure
that's a good enough reason by itself.

 ActionMonkey is the merger of Tamarin and _javascript_, but was later
canceled by Mozilla. The big issues as listed on this page: are that it's not
thread-safe, and it uses disk files.

 V8 is the _javascript_ engine in Chromium, and appears to be the
fastest. While this is currently _javascript_ oriented, it should be
possible to use it for ActionScript. It has an "as is" license.

 SpiderMonkey is the current _javascript_ VM in Firefox, and has the
advantage of still being actively maintained. One interesting thing is
Adobe uses SpiderMonkey as it's server side ActionScript VM for their
Adobe Media Server.

 This is a brand new evolved version of SpiderMonkey, and not ready for
prime time, but is interesting. It's enhancements may be more suitable
for a web browser than a flash player though.

 There is a nice list on Wikipedia of other choices,but I don't believe
any of the others are open source:

 I guess the only other choice would be to use the AVM2 specs, now that
they are available, and write our own based on that. Considering I tried
funding two attempts at that which both failed and have had their code
removed, make me not really sure that's a good option.

 As I'd like to see Gnash gain AVM2 compatibility, I wanted to research
and discuss this and make an implementation plan, or just give up if
there are no sensible solutions. Course not having AVM2 support would
likely lead to the death of Gnash as a viable project, which is
something I'd prefer to avoid.

       - rob -

Gnash-dev mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]