JavaScript: The First 20 Years

Posted March 12, 2020 by Allen Wirfs-Brock (@awbjs)
JavaScript: The First 20 Years

Our HOPL paper is done and submitted to the ACM for June 2020 publication in the PACMPL (Proceedings of the ACM on Programming Languages) and presentation at the HOPL 4 conference whenever it actually occurs. PACMPL is an open access journal so there won’t be a paywall preventing people from reading our paper. Regardless, starting right now you can access the preprint at But before you run off and start reading this 190 page “paper” I want to talk a bit about HOPL.

So the preprint is available here

and here the PDF jshopl-preprint-2020-03-13.pdf (2.9 MB)

Very interesting read in general, but even more interesting in the details about the ActionScript parts :slight_smile:

here few samples

In 2003, the wide adoption of Flash for Web development was leading to the creation of large and complex ActionScript applications and some of them were encountering performance issues. Like most ECMAScript language designers and implementors at that time, the Macromedia team believed that dynamic typing (particularly of primitive types) was the main performance bottleneck, and were exploring ways to add static typing to the ActionScript runtime. Around this same time, Jeff Dyer, who had been a TC39 delegate since 1998, joined Macromedia. Dyer confirmed that TC39 shared that same perspective about static typing. This widely shared view of static typing in virtual-machine-based languages was strongly influenced by the design of the statically typed Java Virtual Machine (JVM). Jonathan Gay’s and Lee Thornason’s Maelstrom project was a Macromedia experiment to see if a JVM could be integrated into Flash and used as the runtime for a statically typed version of ActionScript. The experiment was successful enough that Macromedia approached Sun about licensing the Java 2 Micro Edition (J2ME) JVM for use in Flash. They wanted to use J2ME because the standard edition Java runtime was too large to embed within a Flash Web download. But Macromedia’s proposed use of Java Micro Edition technologies did not align with Sun’s Java licensing strategy. Edwin Smith, in a skunkworks effort, created a series of proof-of-concept virtual machines. Those VMs helped to convince Macromedia to build their own statically typed JVM-like virtual machine called AVM2 [Adobe 2007], and a new version of ActionScript to run on it. The new language was designed by Gary Grossman, Jeff Dyer, and Edwin Smith, and was heavily influenced by Horwat’s draft ES4/JS2 specifications. However, like JScript.Net, ActionScript 3.0 was a simplification of the ES41 design. It was less dynamic than JS2 and, unlike JScript.NET, it was not constrained by the .NET type model. ActionScript 3.0 was also similar to JScript.Net in that it was not heavily constrained by legacy compatibility concerns. Flash would ship with both AVM2 to support ActionScript 3.0 and AVM1 to support ActionScript 1.0 and 2.0. This effort to create a new version of ActionScript and a new virtual machine took over three years to complete. It was announced in 2006 as a component of Flash Player 9, which ultimately shipped in 2007. By the time the effort was completed, Adobe had acquired Macromedia and Flash had become Adobe Flash.


The primary concern that he identified was Adobe’s contributions of the ActionScript 3 language definition and virtual machine to the effort. DevDiv’s proprietary focus was on its .NET platform and its flagship language, C#, whose primary customers were enterprise application developers. The main competition for .NET was Sun’s Java platform but DevDiv was starting to see Adobe’s ActionScript-based Flash and Flex products as .NET competition. Wirfs-Brock anticipated that a successful ES4 effort could transform ActionScript into a first-tier enterprise language comparable in power and utility to C# or Java.

I’ll end with a little personal comment: this “comparable power” to C# or Java is one of the very reason why I focus on ActionScript for the command-line / server-side with Redtamarin.

Some people see that as a “lost cause” (eg. only big company can support such effort), or being a “fanatic”, but still the design of ActionScript 3, even if it does not implement all of ES4 and so simpler, even without a GUI render surface like Flash or AIR, is still pretty pretty pretty good.

To the point, at one moment in time, it was seen as C#/.NET competition.

ES4 was way too radical and disruptive to be adopted, AS3 is simpler but still radical at the time, and imho still shine today.


Thank you Zwetan for this informative post.
ActionScript is still incredibly more powerful, elegant and versatile than JavaScript, who’s own progress is only towards making it fell like crosswords and less like a semantically beautiful programming language.