The Wine Staging release 2.10 is now available.
What's new in this release:
- Preloader for macOS.
- ntoskrnl and winedevice improvements.
- Various smaller bug fixes and improvements.
Starting with this release Wine Staging contains an experimental preloader for macOS. This feature is required to load applications, which expect a very specific memory layout in the process address space.
When a process is started on Windows, the kernel maps the executable into the memory and then hands over the control to ntdll, which loads all required DLLs. Since the executable is the first thing that is mapped into the memory, it can basically request to be loaded at any memory address it wants, the address space is mostly empty at this point. When using Wine, things look a bit different. Wine is not a kernel module and needs to be loaded into the address space first, before it can load the Windows executable. When you have bad luck, your host system maps Wine or any of its dependencies (e.g. libc) inside of an address range that the Windows executable wants to use.
The preloader, which is basically a tiny executable without any dependencies, solves this problem by reserving all important memory ranges before Wine is loaded. This ensures that neither Wine nor any of the system libraries is placed at an address, which is still needed for other purposes. After the main executable is loaded, the remaining memory is released back to the system. The same mechanism is already implemented for ELF files on Linux. The added patchset will not only help applications that previously didn't work at all, it also makes more address space available for system libraries (including OpenGL) compared to the hack Wine used so far.
In this release we also added fixes for mouse handling problems in Unity Engine based applications, improvements for Windows kernel drivers and some more anti cheat engine related changes.
In addition, Wine Staging users will also benefit from the following changes merged in the development branch:
- Initial version of the Android graphics driver.
- Dictionary support in WebServices.
- A number of Direct2D fixes.
- User interface improvements in RegEdit.
- OLE clipboard cache fixes.
- Various bug fixes.