Ubuntu 19.10 will be 64 bit only

Vincent Povirk (they/them) vincent at codeweavers.com
Fri Jun 21 11:11:39 CDT 2019


> > Well, part of the problem is that we don't implement WoW64 the exact
> > same way Windows does.  All the 32-bit Windows routines have thunks
> > that transition to 64-bit code, call the 64-bit API equivalent, and
> > then transition back to 32-bit code.
>
> That's probably true only for low level things like ntdll, user32, gdi32
> and ws2_32, but everything else that doesn't need to access kernel level
> OS functionality (like gdiplus/windowscodecs) don't need to perform the
> 32-bit to 64-bit transition.

Those examples also demonstrate an important difference between Wine
and Windows. On Windows, both of those libraries are implemented based
on lower-level dll's and can work the same way as an application's
32-bit dll's. In Wine, that's true for gdiplus (and in fact, on
current Wine gdiplus is being built as a PE dll), but windowscodecs
needs to access native Linux libraries like libpng and libjpeg. So for
Wine, it's not just a few low-level libraries that would need
thunking. It's any dll that needs to use a Linux library.

> >  Our 32-bit libraries call the
> > 32-bit Linux equivalents, since this is massively easier and "just
> > works".  I vaguely remember a conversation a number of years ago where
> > someone talked about doing similar thunking to Windows and there was
> > concern that it is too hard to get this thunking correct for every API
> > call, but I don't remember the details as to why that's the case.
>
> win16 is very small in comparison with win32, so it was relatively easy
> to implement it on top of 32-bit code, it's practically impossible to do
> the same thing to implement 32-bit on top of 64-bit.

In fact this was attempted with the hangover project:
https://github.com/AndreRH/hangover

The README explains that it currently doesn't work very well, and it
goes into a lot of detail about the technical challenges of this
approach.

There are other possible approaches, but they all pose similar
challenges, and no solution for running 32-bit applications without
32-bit host libraries is ready for users yet.

CodeWeavers is working on a solution for MacOS, which will soon be
dropping its 32-bit libraries. LIke hangover, this is not ready for
users, and it's not targeting Linux. We don't expect it to have the
same level of compatibility or performance that 32-bit Wine has today.



More information about the wine-devel mailing list