Intel's Open Runtime Platform Specs
prostoalex writes "The new issue of Intel Technology Journal has a lengthy article on a new platform, developed in Intel labs. The Open Runtime Platform: A Flexible High-Performance Managed Runtime Environment describes the platform that is capable of running both Java VM and Microsoft's CLI, on both Windows and Linux platforms. Full PDF version is also available."
No, this article just shows how interfaces creating abstraction can be implemented between the virtual machine, the just-in-time compiler, and the garbage collector without a performance hit.
This level of separation then allows a better implementation of each of these components to be more easily created. For example, a JIT that supports both Java and CLI is more easy to design and implement. No knowledge of the VM (besides the interface) is needed to do this with ORP.
Overall, a very impressive article.
We managed to create a virtual machine that is the superset of the .NET CLR and the JVM. This super-vm can compile straight into machine code for IA-32 and Itanium, and it can do it dynamically in realtime through profiling. It also has a bunch of different optimizers and garbage collectors it can pick from.
All this is implemented in C++. They use opensource class libraries to provide the classpaths.
What I would find really cool is if they can release a microcode-based CPU that runs the superset bytecode. It may simply be a microcode patch to the Itanium. That would be truely wicked.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
Nope, not like Parrot, because the JVM and CLI are not like Parrot. There are a lot of differences, but the two main ones are:
-Static typing.
-Stack-based (vs. register-based)
The JVM and CLI are both designed for static-typed languages, like Java, C, C++, C#. Parrot's main deviation from previous VMs is its design around dynamically-typed languages like Perl and Ruby, with the corresponding techniques to make this fast.
Furthermore, the JVM and CLI are both stack-based, while Parrot is register-based. These involve different optimization techniques and a different underlying virtualization.
The framework described in the Intel paper is most definitely static-type oriented (they discuss the difference in casting-exceptions in C# and Java, and how they handle it), and most probably stack-oriented (though that doesn't seem specified).
Java: Language is constant, others can vary.
.NET: OS is constant, others can vary.
Portable Runtime: Processor is constant, others can vary.