Posts tagged "Background"

A round of introductions

We have some exceptionally talented people working in our Languages and Runtimes group.

Basil Hosmer (language design, type systems, concurrency), a freakishly clever veteran behind several products at the company (previously at Macromedia).

Adam Welc (concurrency, parallelism), a prolific author on transactional memory (previously at Intel Labs).

Simon Wilkinson (VM, concurrency, parallelism), a dexterous hacker of runtimes (previously at the University of Manchester).

Mathew Zaleski (JIT, interpreter), a seasoned expert on dynamic compilation (previously at IBM and the University of Toronto).

And finally, Bernd Mathiske (VM, language design), our manager and the dude who hired us all (previously at Sun Labs).

Furthermore, we collaborate with several people in the ActionScript Engineering team, including Lars Hansen, Jeff Dyer, and Edwin Smith.

In particular, Basil Hosmer, Lars Hansen, Jeff Dyer, and I together are the ActionScript Language Design Team, which means that we are responsible for the definition of the language and the design of future versions of the language.

Setting the context

Our aim is to evolve ActionScript into a safe and efficient programming language.

There’s a lot to do.

ActionScript Language Specification
(Because you can’t improve something you don’t understand.)
ActionScript is the core scripting language in which Flash applications are developed. While its roots lie in JavaScript, there are several features in ActionScript that go beyond JavaScript (e.g., class-based inheritance, namespaces, strict-mode compilation, application domains). Unfortunately, the only “specification” of ActionScript has been its implementation, which means that some aspects of the language remain arcane, and any bugs in the implementation cause backward-compatibility problems. We are working on a rigorous definitive specification of the syntax and semantics of ActionScript programs.

Gradual Type Inference for ActionScript
(Because if you have something, it should really count.)
ActionScript enforces a combination of static and dynamic checks on programs, but it is unclear what such checks guarantee. Furthermore, there is no type inference in ActionScript. We are working towards a new gradual type system for ActionScript with the following main design intentions: (1) reconciling type inference with static types (annotations) and the dynamic type (*) via the notion of “unsafe” code regions; (2) providing meanings to types via a combination of static and dynamic checks that provably restrict runtime errors to unsafe code regions; and (3) optimizing code by eliminating dynamic checks wherever they are subsumed by static checks.

The plan

…is to document various thoughts on language design, implementation, and evolution, hovering around and often diving into ActionScript.