Two conferences being held next month, one in Aarhus, Denmark on October 10 and another two weeks later in Portland, Oregon, are scheduled to feature Lars Bak, the designer of the V8 interpreter used in Google Chrome. In Aarhus, Bak will be joined by Gilad Bracha, a Google engineer and co-author of the original Java Language Specification and the creator of the Newspeak programming language, a derivative of Smalltalk.
The subject of their talks may have inadvertently been revealed by the GOTO Aarhus conference organizers: It’s a programming language being conceived at Google tentatively called Dart (maybe bearing no relation to the DART advertising platform run by Google subsidiary DoubleClick).
Earlier today, when asked to verify the subject of these talks, Google spokespersons were hesitant to say yes. Later in the afternoon, one spokesperson went on the record to say, “We have no further details to share at this time,” before advising RWW that Bak and Bracha would indeed be speaking about Dart next month.
Like any other small fragment of disconnected news, the result of the revelation has been speculation, especially as to the meaning of the name of the keynote address at GOTO in Aarhus: “A new programming language for structured web programming.” Although the Web site of Iowa State University, which sponsors the SPLASH conference in Portland, did not refer to Dart by name, it did offer this bit of juicier detail about Bak’s subject matter:
Modern programming languages are often designed without considerations for the underlying execution engines. In many cases, this leads to systems that are slow, complicated, memory bloated, and therefore error prone. This talk will present a new structured web programming language where the underlying virtual machine has been designed along with the language. We will also discuss the results of this approach with respect to simplicity, scalability, and performance.
Both Bak and Bracha have extensive experience with three things in particular: 1) building tight, fast virtual machines, often for embedded systems; 2) the Java VM, to whose architecture both directly contributed; and 3) Smalltalk and their various dialects, Bracha having co-authored Newspeak.
In this excerpt from a research paper by Bracha and colleagues on the subject of Newspeak (PDF available here), we see where he’s taken note of architectural deficiencies in Java and attempted to resolve them in a more strongly object-oriented fashion using a Smalltalk derivative:
A typical example of ambient authority might be a class File with a constructor that takes a file name and returns an instance that can access a file in the local file system. This is a standard design, but in a situation where file system access must be restricted, requires authorization checks on every access.
Systems that combine security consciousness with pervasive ambient authority, such as Java, pay an exorbitant run time cost for such checks, since they may require a traversal of the entire call stack to ensure that no unauthorized caller, however indirect, might retrieve information about a file’s contents or even its existence. As a result, these checks are often disabled, completely undermining security.
An alternative approach is a sandbox model, where only operations deemed safe are provided. Java also supports sandboxing via class loaders. However, class loaders are complex and brittle; they can introduce interoperability problems because they create incompatible types, and they do not compose well.
For his part, Bak played a role in the development of the Resilient virtual machine for embedded systems, which is also based on Smalltalk. In this excerpt, Bak and his colleagues explain why they chose Smalltalk, and to some extent, why they perceive it as superior to Java:
The Resilient programming language is a dialect of Smalltalk designed for simplicity, compactness, and performance. Smalltalk was chosen for several reasons: Smalltalk is a simple, dynamically typed, object-oriented programming language; everything is an object and behavior is described as message sends between objects; Smalltalk has proven ideal for supporting incremental program modification in that a programmer can freely modify a program without the need for recompiling and restarting the application; and most Smalltalk systems use a snapshot model allowing the same program execution to survive for years.
The Dart project (if that is indeed the final name) may be an effort to embed a different class of program interpreter and virtual machine into Google Chrome, and distribute that to desktops for free. If it’s based around Smalltalk, like Bak and Bracha’s backgrounds suggest, then its security mechanism may not be sandbox-based at all, but rather acquiring authority or permission directly from the operating system to manipulate the file system, and do other volatile jobs.
While it’s conceivable that Google might make Dart an optional download, new languages without established software bases find it difficult to succeed even when they’re distributed for free. Plugging Dart into Chrome may give new programmers an automatic base of semi-willing participants.
But what exactly would Dart be? “Structured Web programming” has recently thrived around JavaScript, which has made headway on the server side as well as the client. Though JavaScript is only related to Java by name, its style is looser and more procedural. Smalltalk is strongly object-oriented, and its message-passing metaphor, while logical, contrasts with the more free-spirited approach exhibited not just by JS, but by scripters using Ruby, Python, and the most used programming language in the world today, PHP. Microsoft tried to unseat JavaScript as the functionality provider for Web browsers, and failed miserably with VBScript. But that failure was more due to poor security and lackluster implementation than poor language design.
Still, it’s difficult to imagine today’s realm of Web developers immediately embracing a strongly-OO language, especially when the need for any new language is arguably low. This revelation on October 10 could simply go down as another of Google’s many “ongoing” experiments.