Microsoft has come one step closer to delivering a parallel programming language to developers.
On May 8, Microsoft made Axum, the company's foray into parallel programming, available on its MSDN (Microsoft Developer Network) DevLabs portal. Axum is a .NET language for building parallel applications.
According to a Microsoft description, Axum "is a language that builds upon the architecture of the Web and principles of isolation, actors and message-passing to increase application safety, responsiveness, scalability and developer productivity."
By being hosted on MSDN DevLabs, Axum moves a bit closer to commercialization-either as a stand-alone technology or as part of a larger system such as the Visual Studio IDE (integrated development environment).
A Microsoft statement about the goals of DevLabs said:
"Our goal is that many of these technologies will eventually be incorporated into Microsoft products in some form or another. Others may be retired or released into the shared-source community. Some projects highlighted here are already in a released state but they have new concepts within them that we are trying out, to see how developers react to them for possible inclusion in other Microsoft products. Some are in prototype packages that will evolve into larger, well-known products."
Niklas Gustafsson, a software architect in the Microsoft Developer Division and member of the Axum team, said in a blog post alerting developers to the recent Axum move to DevLabs:
"It needs to be reiterated that Axum is an incubation effort, which means that we're not committed to shipping it in any particular product release or in the form offered by this preview. A lot will depend on your response and involvement with us.This language is not a finished product-we are quite certain that it is too big and we have some ideas on what to take out, but would like to hear from you about it. We welcome suggestions on syntax, but we are more concerned about getting the semantics right first-only where syntax stands in the way of comprehension is it really a big deal for the moment."
Other DevLabs projects include Popfly, which aims to provide an easy way to build and share mashups, gadgets, games, Web pages and applications; Small Basic, a project to make computer programming accessible to beginners; and Code Contracts, which are static library methods used from any .NET program to specify the code's behavior.
S. Somasegar, senior vice president of Microsoft's Developer Division, said in a May 8 blog post, "Axum enables developers to easily build scalable and reliable applications for multicore and many-core scenarios using the power and convenience of the .NET Framework."
Moreover, "Axum makes use of several concepts to enable safe parallel programming," Somasegar said. He added that these concepts include:
"??Ã Domains isolate state, which helps you avoid implicit dependencies in your code that can result in difficult-to-find concurrency bugs. Domains make you more productive by allowing you to worry less about concurrency and focus more on your algorithms and code.??Ã Agents are threads of control that process messages asynchronously to stay scalable and responsive. Axum employs a cooperative blocking model that utilizes latencies to do meaningful work; agents that wish to receive a message will block, allowing another agent to execute in its place.??Ã Message-passing isn't always feasible-in certain situations it just implies too much overhead. With Axum, you have the option to declaratively state how an agent intends to use domain state. The compiler will enforce that agents uphold their stated intentions and the runtime will schedule your agents accordingly to maintain safety.??Ã In Axum, concurrency is the default. All agents execute concurrently unless you explicitly restrict them. This means you spend less time on boiler plate code for multi-threading and more time on your code.??Ã Agents can be hosted in a single process, in a separate process, or on a separate machine. This unified programming model means you don't need to rewrite your code when you want to run it in a distributed scenario. "