Here we are again time to stop and re-wine. Another development release of the Wine compatibility layer has become available with Wine 6.17 having the bottle popped open today.
For newer readers and Linux users here's a refresher - Wine is a compatibility layer built for operating systems like Linux, macOS and BSD. The idea is to allow other platforms to run games and applications only built and supported for Windows. It's also part of what makes up Steam Play Proton. Once a year or so, a new stable release is made.
What's new in Wine 6.17 includes:
- WineCfg program converted to PE.
- Better high-DPI support in builtin applications.
- More preparation work for the GDI syscall interface.
- Improved debugger support in Wow64 mode.
Since Wine is covering a massive amount of APIs from Windows, each time it gets something finished up we should see better application compatibility. GDI syscall should help even more applications run and display correctly. Microsoft explain that GDI "enables applications to use graphics and formatted text on both the video display and the printer. Windows-based applications do not access the graphics hardware directly. Instead, GDI interacts with device drivers on behalf of applications".
In regards to many things being "converted to PE" over multiple Wine releases: previously Wine has built its Win32 libraries (like DLLs and EXEs) as ELF but for many reasons (like better compatibility) they've started to move them over to use PE instead. So it's another change that will gradually improve compatibility as more is moved over.
This time around 12 bugs were noted as being solved. Usual here applies: some bugs were fixed previously, some only recently. The Wine team noted these were fixed:
23979 SMSDV's main window is empty
36887 Trusteer Rapport setup crashes on unimplemented function ntoskrnl.exe.PsGetCurrentProcessSessionId
37592 Filenames in themed file dialog change size
40700 Page Scrolling Bar of PDF Eraser not rendered with wine-mono
45133 Multiple applications need 'ntdll.NtQueryInformationProcess' to support 'ProcessSessionInformation' info class (ProcessHacker, NewProcessFromToken)
49625 winedbg --command 'info wnd' fails with Exception c0000005
51655 iphlpapi regression prevents Samsung SDK from working properly
51672 Imperiums: Greek Wars has small black window on launch (caused by wrong position).
51693 ntdll:info fails on Windows 7 64-bit
51702 AFxW: the working directory of launched Unix application isn't set
51726 wineserver crashes with an assert()
51728 copypasta in pwcache.c:ctox()
I (and I bet that some others too) clicked in this post because "GDI Syscall" sounds interesting, you explained for the 234th time what is Wine, but don't put a word (or a link at least) about this syscall, as it's on the title, it should be important right? 😜
This thread on the Fedora development list also mentions that it improves compatibility with some applications (again it could be copy protection but the author isn't explicit about it).
https://lists.fedorahosted.org/archives/list/[email protected]/thread/SL4IPD2VBMJ2XVGXRYFPDXZIC4YIYPWY/#FQ5UO3BJHFST7YC3H3X3GKCOGQLBMGHN
The thread gets pretty technical and Fedora-specific.
Can anyone list some specific use cases for this GDI system? do games even benefit or is this more of a application thing? (which is ok imo, applications under wine are always finicky)
From https://zetcode.com/gui/winapi/gdi/
The GDI insulates the programmer from the hardware. From the programmer's point of view, the GDI is a group of API functions for working with graphics. The GDI consists of 2D Vector Graphics, Fonts and Images.
As I said, they didn't implement GDI in this release, they converted it to PE. Based on a 10-second review of the commits consists it was mostly of code re-organization (because it was already implemented).
Hey Liam, just a complain:
I (and I bet that some others too) clicked in this post because "GDI Syscall" sounds interesting, you explained for the 234th time what is Wine, but don't put a word (or a link at least) about this syscall, as it's on the title, it should be important right? 😜
I was also hoping to see an explanation of what is a GDI syscall but hopefully the comment section rocks.
See more from me