Google’s Vijay Menon announced on the WebKit developers mailing a proposal of a branch that would add support for multiple runtimes and ready made bindings for the Dart language. Other languages that could be supported are Python, Java, Ruby, Lua and more.
Vijay justified this action using some of the usual complaints that developers have with JavaScript:
- Speed. Many languages are faster than JavaScript when run natively and/or do not compile to JavaScript efficiently. - Developer choice. Another runtime provides developers with more choice without requiring them to use a toolchain.
- Development experience. Languages supported directly in the browser can have a significantly better debugging and profiling experience than they can with compiled code.
This work is currently just a patch to WebKit and it is yet early to know if it will make it to mainstream:
We have a quite early patch of this work available here:
- multi-vm changes: http://codereview.chromium.org/8806015/
- dart bindings: http://codereview.chromium.org/8802010/We’re planning to create a multi-vm branch on webkit.org to experiment with this idea. Our goal with this branch is to (a) demonstrate the above points and (b) show that we can do this without degrading JavaScript performance or the WebKit development experience. If successful, we’d like to submit these changes to WebKit trunk. We welcome your feedback.
UPDATE: Joshua Bloch, who has led the design of numerous Java platform features, like the Java Collections Framework, the java.math package, and more, has announced that he has taken up the role of core libraries architect for the Dart programming language. In addition, earlier reporting that the branch had been created was incorrect; it was merely a proposal. The webkit team have explicitly rejected the idea of introducing the ability for a new language at the web page level, arguing that in the same position as a browser supporting something like vbscript, and has the same effect: breaking the open web by making content that only works effectively in a single product.