Microsoft comes one step closer to delivering a commercial parallel programming language to application developers by turning the Axum incubation project over to the MSDN DevLabs portal where Microsoft houses some of its more innovative projects that are being worked on and evaluated for commercialization.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 commercializationeither 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
productwe 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
firstonly 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 isnt always feasiblein 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.