Rotor is the code name for a research and academia project working on a shared source implementation — in which Microsoft gives trusted developers access to its source code — of the common language infrastructure (CLI) standard set by the European Computer Manufacturers Association. CLI is a standard for software technologies for designing, building, executing and managing applications. According to Microsoft, Rotor will allow people to implement different languages against the specification.
Perry is using Mondrian, a language designed to inter-network with object-oriented languages and suitable for scripting that can run on Microsoft’s .Net development platform.
Perry, who wouldn’t say how much funding he received, became involved with Mondrian when he joined the project founder Erik Meijer at Universiteit Utrecht in 2000. When Meijer went to work for Microsoft, Perry brought the project back to New Zealand and now leads it.
“Mondrian is interesting both as a functional language specifically designed to work in an object-oriented environment and as a platform to investigate compelling functional languages for .Net,” says Perry.
Perry had worked with Microsoft under non-disclosure on .Net as part of Project 7, in which a number of different language teams around the world critiqued and contributed to the development of .Net.
One of the Rotor projects he is now working on is just in time objects.
“A JIT object is not created when the constructor is called, but only later when, and if, a method or property of that object is accessed. This will bring the benefits of ‘lazy’ evaluation — renamed just in time evaluation — to conventional languages such as C#.
“Mondrian in common with other functional languages is ‘lazy’ in that it does not actually do work when a program fragment is reached but only later when, and if, the result of that program fragment is required. This allows new approaches to solving problems; for example, extremely large data structures can be defined, safe in the knowledge that only that part of it which is actually needed will ever be created.”
Perry is researching how to apply this technology from Mondrian first to C#, and then to any language running under .Net.
Another project is compiling dynamically typed languages for .Net. “The .Net common language runtime is a strong statically typed virtual machine, as is the Java virtual machine; while conventional real machines [eg Pentiums] are untyped. Compiling strong statically typed languages such as C# or Pascal on to .Net can be done efficiently.
“Some languages are dynamically typed including the popular scripting languages Perl and Python. Techniques have been developed for compiling these for untyped real machines. However, when compiling them for a statically typed virtual machine such as the .Net CLR inefficiencies can be introduced by the CLR performing runtime type-checks that the compiler knows will always succeed. This project is examining ways to compile dynamically typed languages on .Net and whether .Net can, or should be, extended to support them more efficiently.”
For this work Perry and two students are using Mondrian as a test bed, producing a dynamically typed version of the language and developing various type-checking algorithms for the language.