Volta: The Power of Lingua Franca

Earlier today we released the Live Labs Volta Technology Preview. There are already a few blog posts covering Volta from several team members, including Danny van Velzen, Harish Kantamneni, Jeffrey van Gogh, and Wes Dyer; Erik Meijer also posted an entry on Lambda-the-ultimate. Here I'd like to clarify an aspect that is starting to come up in other conversations: the power of lingua franca.

Here's the flow of transformations from source code (C# in this example) to native code, without Volta:


The Volta recompiler works on MSIL, the intermediate language that .NET languages such as C#, VB or Iron Python are compiled to. Consequently, Volta alters the above flow by introducing another transformation of the MSIL. This transformation rewrites MSIL into MSIL, while adding the plumbing code for distribution and asynchronous method invocation. This is precisely where Volta pushes the corresponding accidental complexity, thus getting it out of the way. The following diagram shows this modified flow, when both the client and the tier-split service are running on the CLR.


A similar MSIL transformation provides the ability to stretch the reach of the .NET platform to cover the cloud through retargeting. Rather than rewriting MSIL into MSIL Volta rewrites it into JavaScript. The following diagram shows the retargeting flow, when the client runs in a DHTML browser and the service on the CLR.


The above sketches illustrate the power of lingua franca. By working on MSIL rather than source code Volta gives developers the freedom to use any .NET language, the ability to mix multiple languages, as well as leverages the hard work of the compiler writers (think optimizations, for example). In addition, avoiding source code is less brittle and accommodates high-level language evolution as long as the MSIL doesn't change.