At the risk of flogging the Tamarin topic to death... there seems to be quite a bit of conceptual confusion between a language and a DOM (document object model) that I'd like to try to clear up.
JavaScript 1.X originated in the Netscape browser, but the language itself isn't concerned with the Windows, Frames, Documents, Anchors, etc. that exist in a browser DOM. If you look at the SpiderMonkey implementation of JavaScript 1.5, it has none of these types of objects. If you look at how JavaScript 1.5 is used to extend and automate some Adobe applications like Dreamweaver, it has a completely different DOM, on top of the same "core" language.
The JavaScript language itself is about much more basic stuff... things like the following examples:
* Syntax: using the var keyword to define a variable; implementing inheritance by assigning to the .prototype property.
* Builtin data types: String, Number, Date, Array, RegExp, etc.
* Runtime behavior: any variable can contain any type of value at runtime; you can get or set any property on any object at runtime; if a property isn't found on an object, the language looks up that object's prototype chain for it.
These are language-level features, not DOM-level features, because they make sense and are useful with *any* DOM. Sometimes we say that features like these constitute the "core" of the JavaScript 1.5 language, although that implies that the DOM classes are part of the language and they really should be considered so.
Similarly, ActionScript 3 originated in Flash, but that language isn't concerned with the Sprites, TextFields, Bitmaps, etc. that exist in the Flash DOM. Instead, the essence of ActionScript 3 is about more basic things such as the following:
* Syntax: having compile-time type annotations; using the class keyword to define a class; using the private keyword to enforce encapsulation; using the package keyword to define a package.
* Builtin data types: having int and uint in additon to Number; having an XML type with powerful E4X operators.
* Runtime behavior: runtime type-checking; sealed classes; classes with true class inheritance rather than prototype-based inheritance; method closures; namespaces.
Again, these are language-level features of AS3, independent of the Flash DOM. You can call them the "core" of AS3 if you want. The flash.* classes are not part of this core.
The point of Mozilla's Tamarin project is that it will become an open-source implementation of a virtual machine (execution engine) for JavaScript 2 / ECMAScript 4, a still-in-the-process-of-being-defined *core* language, in the same way that Mozilla's SpiderMonkey project has been for the JavaScript 1.5 *core* language.
Tamarin, like SpiderMonkey, will have *no* DOM of its own. Developers can host any DOM on top of it, as appropriate for your application. For the Firefox browser, that will be the browser DOM of Windows, Documents, etc. For Flash, it will be the Flash DOM of Sprites, TextFields, etc.
- Gordon