I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
Can access to Windows source code help?
Ubuntu Unity running on Windows 10
51–60 of 90 posts
Re: Ubuntu Unity running on Windows 10
#52I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
As such, WINE has to reimplement all those libraries, whereas Windows only has to implement something comparatively tiny.
I expect someone can write a better summary of pros/cons of both approaches (and there are definitely both for both!), so I'll leave that to them!
Re: Ubuntu Unity running on Windows 10
#53Re: Ubuntu Unity running on Windows 10
#54Sounds a little bit like slashdot in here with the pointless Microsoft/Unity hate rants. This is really awesome and I can't wait for more and more integration. This is nothing but awesome
On the other hand I'm worried about the resources invested in this project, instead of stability or performance improvements in Windows. In the long term I'm worried about Microsoft's monopoly.
Re: Ubuntu Unity running on Windows 10
#55I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
The Linux syscall ABI is pretty small and stable, and once you have that any userland program just works. Windows (NT) doesn't have a stable syscall ABI, instead having stable ABIs for libraries that wrap it in various ways (Win32, most prominently, but historically also a POSIX library). As such, WINE has to reimplement all those libraries, whereas Windows only has to implement something comparatively tiny. I expect…
Re: Ubuntu Unity running on Windows 10
#56Sounds a little bit like slashdot in here with the pointless Microsoft/Unity hate rants. This is really awesome and I can't wait for more and more integration. This is nothing but awesome
Also useless? As a Windows user I'm not particular troubled by the lack of user facing XFCE applications. On the other hand I'm worried about the resources invested in this project, instead of stability or performance improvements in Windows. In the long term I'm worried about Microsoft's monopoly.
Re: Ubuntu Unity running on Windows 10
#57I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
Having this in mind: It is much simpler to implement a new subsystem for a kernel that was designed from beginning to support multiple subsystems than to retrofit a Win32 subsystem (Wine) to a kernel (Linux) that was never designed for this purpose.
Re: Ubuntu Unity running on Windows 10
#58I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
Besides the already mentioned reasons another reason is that the NT kernel was designed from beginning to support different subsystems as OS/2, Win32 and POSIX, though POSIX was only implemented to barely work and OS/2 support was dropped (was it ever released?). There was an independent implementation (Interix) of a POSIX-conformant Unix subsystem, which was later on bought by Microsoft and later on rebranded as "Mi…
Re: Ubuntu Unity running on Windows 10
#59Earlier quoted context omitted.
I can't comment on the X performance, but I am finding performance of command line applications is a couple of % faster on windows than it is on Linux (if they do little / no I/O).
How did you test it?
I'm hoping we can kill our current windows build, and require people install bash for windows.
Re: Ubuntu Unity running on Windows 10
#60I wonder how Microsoft managed to implement the Linux ABI all of sudden, while Wine has been developed for more than 20 years and yet it's still very hard to run most modern Windows software using it. Note this isn't a rant by any way, I appreciate the work done by the Wine project a lot and use it every now and then. I'm just trying to understand if it's a matter of manpower, simpler task, or better design.
Besides the already mentioned reasons another reason is that the NT kernel was designed from beginning to support different subsystems as OS/2, Win32 and POSIX, though POSIX was only implemented to barely work and OS/2 support was dropped (was it ever released?). There was an independent implementation (Interix) of a POSIX-conformant Unix subsystem, which was later on bought by Microsoft and later on rebranded as "Mi…
In practice, lots of modern NT syscalls are directly or at least quite closely modeled after their Win32 equivalent. Even more so when they have been introduced after the end of the Windows Consumer vs NT split - but even before that, NT was already very close to Win32.
And Win32 has always been special for NT. And Posix & co has always been "special" in the other way: even when the idea of having subsystems was already decided (at first it was mainly for OS/2 vs Windows API), the question was raised whether to implement the Posix API in a subsystem or layered on top of another subsys API (like Cygwin is today). The paper advocating for the subsystem is available in the WRK, IIRC (quite a poor paper with bad arguments IMO, but it shows that the question has been raised).
Actually the traditional NT subsystems were not even able to do WSL, and the most important work to get it was not the legacy of the Posix & co. subsystems, but a project to be able to virtualise different versions of Windows userspace on a single NT kernel (indirectly, it first leads to the Android subsys attempt, which got cancelled and then morphed to the WSL we will get).
When you look at the WSL architecture (and compare with Windows NT + Win32 architecture) and hints given by the previous or existing WSL bugs, there is probably not much the WSL driver deffer to the NT kernel, only very core stuff like virtual memory, scheduling, and on some FS code (WSL adds its own layer for VolFS). Even Socket/TCP networking needs completely custom code in at least the upper layers (not surprising when you know the completely insane architecture of Winsock, with a legacy from Win16) but probably also quite a bit in underneath layers -- result: it stills works so/so when you don't stick to ultra trivial usage of the TCP sockets. And they told that Pipe are completely custom, because the semantics is too different from NT Pipes. The Fs aspects also shows that there is probably a lack of virtualization in NT, or that for now some WSL stuffs are plugged at the wrong place. Signals are not really a concept of NT, so WSL does most of the work, and like usual in this story, it shows quickly by still having some bugs: the first trick or even mainstream but non-trivial usage you try to do, it immediately fails. Especially more so when ptracing.
In the end, what permitted to have a WSL seemingly reaching a decent state (it's still very far from perfect, but quite decent already for development purposes) so quickly is that: 1) it actually started way before any publicity about it 2) it seems to be made by a small, but not too small, very competent dedicated team working full time on it 3) Posix API and Linux syscalls have a documentation at least 2 order of magnitude better than MSDN, and a reference implementation available for everybody -- probably they don't allow WSL devs who write WSL code to look at the Linux code, but they still have access to the man pages which are more useful than the code in most cases, especially given how much detailed are lots of man pages -- compared to that MSDN doc of Win32 is a complete piece of useless crap 4) the area to cover (Linux syscalls) is smaller compared to Win32 -- Wine does not tries to reimplement an NT kernel, but the whole userspace stack -- an analogy would be MS trying to reimplement Linux + Gnome + Kde + PulseAudio + X + etc... The amount of work is not comparable at all!