Developers working on Melbourne University's Mercury programming language have been selected among a group of academics worldwide to provide ideas and input into Microsoft's .NET platform.
Melbourne University academics have ported Mercury to the common language run-time system of Microsoft's new platform, which will enable Microsoft's own languages (such as Visual C and Visual Basic) to interoperate with others.
The Mercury programming language started off as a project at Melbourne University five years ago. It was aimed at developing a new language based on Prolog, taking some ideas from more modern languages to remedy some of the flaws in earlier attempts at programming in logic.
Around 18 months ago, Mercury programmers were approached by Microsoft to take part in a research program involving a multi-language platform, which has since been named as part of Microsoft's .NET strategy.
In return for their efforts, Microsoft offered early access to its new development tools, a substantial grant to the research project, a stay at Redmond to learn about Microsoft's technology, visits with other programming groups working on the project, and ongoing technical support.
"Microsoft research was looking around for people to port languages to the new Microsoft platform," said Mercury programmer and co-founder Fergus Henderson. "Mercury was getting a reputation in the research community as a language to watch. We were making some noise in newsgroups."
Microsoft requested that the Mercury programmers provide feedback on how the platform could work better for languages such as Mercury, so that future versions of Microsoft's virtual machine and runtime environment can host a wider variety of languages. The .NET platform will run in a similar fashion to the Java Virtual Machine, a virtual environment for running programs.
"There are actually dozens of languages targeting the Java Virtual Machine, but it wasn't originally designed for that," said Henderson. "So in a way, it is a reaction to Sun [Microsystems]. Microsoft is appearing to be more open, at least in terms of programming language support."
The Microsoft grant enabled the Mercury programmers to build a generic back-end that can generate high-level C code as well as code for the .NET platform. These improvements are available under the same licensing and distribution terms as the rest of the Mercury platform. "All of our work that Microsoft paid for is being released on open-source," Henderson said.
Although Mercury's involvement in .NET did not involve any transfer of intellectual property rights, the programmers were asked to sign non-disclosure agreements, which have only recently expired. Considering the long product cycles of Microsoft, Henderson does not expect to see the fruits of his team's labour until later versions of the Microsoft platform.
"They tend to use this input as ideas for later releases," he said. "We point out the things they haven't thought of, and if they think it's a good idea, they'll think about it for the next version."
Henderson is pleased that the software vendor took in the input of the academic community, citing the fact that several other Melbourne academics were also approached, including researchers at Monash University working on the "Eiffel" language.
"In the past it has been very rare for industry to involve academia on any such project," he said. "Microsoft approached the top programming language researchers in academic institutions worldwide, and will hopefully feed that input back into its development cycles."