My vision for computing and my goal for the next 5 years is simple: Any piece of software, any platform you choose.
Right now, I'm working on a project called Alky that will allow you to convert a Windows executable to a Mac OS X or Linux binary. We are focused on high-end gaming at the moment, though we will support normal applications in the future.
Our binary translation layer is already working fully for OS X and Linux support is in progress. Of course, Windows applications use a very different set of libraries from Linux or OS X applications so we are also working on a library called LibAlky that will provide those Windows libraries to the application.
Now, this may seem similar to Wine/libwine in many ways, but Alky differs on a few major points including that:
1) Alky requires no wineserver-like software, reducing overhead greatly.
2) Alky converts binaries rather than running them through it at runtime, so a vendor can use it to port an application and ship with it without requiring any additional dependencies on the user's machine.
3) Since Alky runs at the binary level, applications can be ported using it without any access to the source.
4) Since Alky doesn't depend on access to the source to port applications (as noted in #3) we can greatly clean up the APIs, so long as we keep them binary-compatible. This gives us a lot of freedom.
When an application is converted, the imports are checked to see what's supported and what isn't. For functions that aren't supported, it will report them as such (at conversion-time, mind you) and will optionally pull up a function prototype from MSDN and auto-generate a stub for you. In this way, we can very easily extend LibAlky without playing a guessing game as to what needs to be implemented.
Although it's a very new project, it will already convert (nearly) any Windows executable into a Mac OS X executable and attempt to run it, with some success and a fair amount more debug data.
As an example, you can see Oblivion throwing an error here. We get further, now, but not near the actual game. It's going to take time.
My vision is not limited to applications or games, either. I believe that it is entirely possible to take drivers from various OS's and convert between them as well.
This is truly the start of something beautiful, and it's been a long time in coming. This is my goal for the next 5 years, and I will not fail in attaining it.
Happy Hacking,
- Cody Brocious
Wednesday, May 31, 2006
Subscribe to:
Posts (Atom)