ScreamingDonkey 0.1
ScreamingDonkey, while not ScreamingMonkey, has more or less the same goal, but not necessarily the same means to get there.
The goal of ScreamingDonkey is to bring Ecmascript 4 scripting to a browser near you, using existing web components.
ScreamingMonkey relies on a locally installed ActiveX control packaging Tamarin and some browser glue. In contrast, ScreamingDonkey relies on a locally installed Flash Player that includes Tamarin and some browser glue.
More seriously, ScreamingMonkey is gluing Tamarin and the browser at a low level, bypassing sandbox or language limitations. Also, ScreamingMonkey's version of Tamarin could be customized, and the compilation of scripts could be handled by a SpiderMonkey derivative, which would be likely to be faster than ESC.
ScreamingDonkey doesn't have any of these luxuries. We do have the ESC self-hosting compiler, packaged to run within a flash movie. We also have a layer of glue that transparently exposes browser objects to the flash player. It gets us pretty close.
Status
It's early. The ESC compiler is not done, and it's the central piece this project relies on. The browser glue, dubbed JSObject, is also rough in places. Until both of those parts are fully done, ScreamingDonkey cannot be considered ready for live deployments.
In practical terms, a number of things aren't working as expected yet, including for/in loops, eval, global scoping, and a number of nitpickings that make porting scripts just a little painful. While it's unlikely we'll ever get to a stage where every javascript runs directly within ScreamingDonkey due to some intrinsic limitations, the porting effort should eventually become very minimal.
Even once ready, expect the compiler speed and the browser DOM interactions to be slower than native scripting. On the other hand, runtime script execution time should compare favorably to the current generation of browser scripting.
No particular effort has been made to provide ready-to-deploy versions of ScreamingDonkey, as the current release is primarily meant for tinkerers and hackers.
Playground
So far, we have:
- evalui - An HTML re-implementation of As3Eval's test UI.
- processing - A firefox only port of processing.js to run over ScreamingDonkey.
License and links
The whole project is licensed under the MPL/GPL/LGPL.
Play around with the demos to get a feel for it. It is recommended to use a Debug version of the flash player so you can see runtime exceptions rather than silent failures.
You can browse the source or download the source.