cmdrcoriander wrote:
SoulofDeity wrote:
Then I got to thinking, what's the point in using a virtual machine if the application is still platform dependent? It makes no sense. You're just sacrificing speed. This applies to Java as well. So, what I want to do is create a virtual machine/platform abstraction layer. It'll have a single interface for devices and absolutely will not allow peeking at hardware or executing/linking against programs and libraries not built for it. By doing this, all of the software written for it will be 100% platform independent. Porting the VM/PAL to a different platform would mean that anything ever written for it is guaranteed to work on that platform; thus the software never becomes obsolete. The only factor that matters is performance.
Uhhh... how is this not Java? Or at least conceptually really, really similar?
soulofdeity wrote:
It'll have a single interface for devices and absolutely will not allow peeking at hardware or executing/linking against programs and libraries not built for it.
Java lets you do this. When someone builds a library trying to take advantage of this (eg. exposing an OpenGL interface via DLL), they are instantly locked to a specific hardware and platform. When the libraries become popular, you then have a whole bunch of hardware/platform dependant software. For 100% portability, hardware acceleration should only be performed by the VM via HLE and applications should be entirely ignorant of these things.
Rusky wrote:
As soon as you start versioning the VM/PAL you're back where you were with some people stuck on the equivalent of GL 1.1.
soulofdeity wrote:
It's a very ambitious project though. It requires defining new standards for pretty much everything. And they're not something that can just be changed on a whim; once they're written, they're set in stone (otherwise they'd become the cause of what they're seeking to fix).
There will never be a change in design. Only bug fixes and HLE hooks for the VM to speed things up.