3 ms·
What part of Windows would need to be made open in order to get a 100% Windows binary compatibility on Linux?
by MrBra 11y ago
What part of Windows would need to be made open in order to get a 100% Windows binary compatibility on Linux?
- zanny 11y agoWindows binaries using win32.dll are working pretty universally nowadays. Even WinRT is pretty much implemented. Its all system support libraries and opening up Windows would not make the implementations come faster besides having better access to finding the bugs in the documented API that many programs expect. For example, DX11 being opened up doesn't matter because it relies on the Windows driver model while Wine is translating HLSL and D3D calls to OpenGL, or Gallium-Nine is translating them to TGSI. Opening up most system libraries doesn't work, because they are all using Windows kernel primitives the Linux kernel won't have. The complexity of Wine is more that Windows is a 30 year old maze of complexity with millions of independent APIs and callbacks implemented over the years without rhyme or reason, and a Windows exe can call any of them any time and get anything back because the APIs are anything but bugfree. You need to translate Windows soup to Posix soup and somehow get all the expected behavior the running program needs, and then on the backend they are supporting pretty much every non-Windows OS so they have to fight with all their targets quirks.
- MrBra 11y ago> millions of independent APIs and callbacks implemented over the years without rhyme or reason, and a Windows exe can call any of them any time Do you have a typical good example for this? So, genuine question, are you suggesting that if Microsoft decided to do something about this, that would pretty much have to rewrite it from scratch?
- zanny 11y agohttp://source.winehq.org/git/wine.git/tree/HEAD:/dlls http://source.winehq.org/git/wine.git/tree/HEAD:/dlls These are all the system libraries Wine has reimplemented so far, and thats only up to its current near-DX10 support, and these libraries are just the base - most applications can ship their own copies of Windows libraries, but as long as the core libraries everything else depends upon work you can run other libs on top of them. But a lot of Windows has been reimplemented between the old 3.1 era and now, and not just the kernel - MS has maintained fair backwards compatibility the whole say so new versions of the same API can be dramatically different in implementation. If Microsoft wanted to support Windows executables on Unix they would need to just pick up where Wine is at now and continue their work, albeit with insider access to code to know all the edge cases of their own implementations of these APIs, since software is written against the bugs.