After a year of development and 25 experimental versions, a stable release of the open implementation of the Win32 API — Wine 11.0 — has been presented, incorporating over 6,300 changes and 600 bug fixes. Key achievements in this new version include full support for NTSYNC, implementation of the Reparse Point mechanism, and the utilization of a new realization of the WoW64 architecture.
Wine supports a total of 5,419 Windows programs (up from 5,372 last year, 5,336 two years ago, and 5,266 three years ago), with another 4,500 programs (up from 4,435 last year, 4,397 two years ago, and 4,370 three years ago) working well with additional configurations and external DLLs. There are minor issues with 4,086 programs (up from 4,020 last year, 3,943 two years ago, and 3,888 three years ago) that do not hinder the usability of the core functions of the applications.
Key innovations of Wine 11.0:
- Full support for the ntsync driver, which significantly boosts the performance of Windows games running via Wine. The driver is included in the Linux kernel starting from version 6.14 and implements the character device /dev/ntsync along with a set of primitives for synchronization used in the Windows NT kernel. A substantial performance increase is achieved by eliminating overhead associated with using RPC in user space.
- The ability to set thread priorities in Linux and macOS has been added.
- The ntdll has introduced a synchronization API called 'Synchronization barriers', allowing the suspension of multiple threads until a certain execution point is reached in all threads (for example, waiting for all threads to reach a specific stage when executing the same code in parallel).
- The new implementation of the WoW64 layer (64-bit Windows-on-Windows), enabling the execution of 32-bit Windows applications on 64-bit Unix systems, has been fully supported. Unlike the old WoW64 implementation, where 32-bit applications ran in 32-bit Unix processes, the new WoW64 allows 32-bit code to run within a 64-bit process. Support for running 16-bit applications in WoW64 mode has also been implemented.
All modules that interact with Unix libraries utilize WoW64 system call thunk converters, allowing 32-bit PE format modules to access 64-bit Unix libraries. The ability to run old WoW64 installations in a new mode has been added by setting the environment variable 'WINEARCH=wow64'. The 32-bit prefixes created when WINEARCH=win32 are now deprecated and unsupported in the new WoW64 mode. The separate wine64 loader has been removed, replaced by a universal loader that determines the mode based on the bitness of the launched file.
- Core (Windows kernel interfaces)
- The Reparse Point mechanism has been implemented, allowing additional data identified by tags to be attached to files and directories. Types of Reparse Point supported include symbolic links and mount points.
- To improve the performance of memory write operation tracking, the UFFD (userfaultfd) mechanism is utilized, enabling the creation of handlers for page faults in user space. In conducted tests, using UFFD reduced the loading time of levels in the game 'Streets of Rage 4' from 6-8 seconds to 1.5-2 seconds, matching the performance on the Windows platform.
- The system call numbers NT identical to the latest versions of Windows have been utilized, which is necessary for supporting applications that use hardcoded system call numbers.
- On ARM64 systems, the ability to simulate 4K memory pages in environments with Linux kernels using larger memory pages (16K or 64K) has been implemented. Simulation allows simple applications to run, while more complex programs are recommended to use Linux kernels with 4-kilobyte memory pages.
- Graphics subsystem
- On X11 systems (winex11), the EGL-based rendering backend is used by default for OpenGL. The GLX backend is deprecated but remains available as a fallback and is used when EGL is not present.
- Initial support for D3DKMT objects has been added, providing low-level access to graphics devices from user space. Vulkan extensions VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32, and VK_KHR_win32_keyed_mutex have been implemented.
- In WoW64 mode (64-bit Windows-on-Windows), memory mapping support for OpenGL has been implemented using the Vulkan API, allowing for improved performance of 32-bit OpenGL applications in Wine.
- Front buffer emulation for OpenGL has been implemented on platforms without built-in support.
- Support for Vulkan API specification 1.4.335 has been added to the Vulkan graphics API driver.
- The WindowsCodecs library set has expanded support for metadata in image files, as well as support for conversion between integer color representation formats and floating-point formats.
- The dependency on the OSMesa (Off-screen Mesa) library has been removed. It is now possible to render bitmaps via OpenGL using hardware-accelerated OpenGL runtime.
- Desktop integration
- The winewayland.drv driver, which allows using Wine in environments based on the Wayland protocol without using XWayland and X11 components, now supports clipboard, input methods, non-rectangular windows, and transparency.
- Integration with X11 has been improved: the window manager now receives activation requests and the EWMH protocol has been utilized for synchronizing the state of active X11 and Win32 windows.
- Support for exclusive fullscreen mode has been implemented. Fullscreen mode in D3D has been enhanced and the performance of older games based on DDraw has been improved.
- Performance of certain window functions has been improved. Shared memory has been utilized for interprocess communication.
- Direct3D
- Hardware acceleration for H.264 video decoding has been added to Direct3D 11, implemented using the Vulkan graphics API.
- Support for minmax texture filtering has been implemented in Direct3D 11, using the OpenGL extension GL_ARB_texture_filter_minmax or the Vulkan extension VK_EXT_sampler_filter_minmax.
- Texture loading functions have been implemented in Direct3D 11.
- Many Direct3D capabilities have been realized for rendering through Vulkan, such as vertex mixing, flat shading, custom clipping planes, and various resource formats.
- Support for shader models 1, 2, and 3 has been improved in the built-in vkd3d-shader.
- Support for PNG, JPEG, and BMP images has been implemented in the D3DXSaveSurfaceToFileInMemory method.
- Direct3D 10 and 11 have implemented support for compression and decompression of BC4 and BC5 formats, as well as the generation of MIP levels (MipMap) when loading textures.
- Implemented methods ID3DXEffect::SetRawValue() and ID3DXSkinInfo::UpdateSkinnedMesh().
- Input devices
- Improved compatibility with joysticks by using the hidraw backend.
- Enhanced support for force feedback when using game wheels and joysticks.
- Improved gamepad support in the Windows.Gaming.Input API and when using the evdev backend.
- A tab for configuring the Windows.Gaming.Input API has been added to the game controller management applet.
- Enhanced DirectInput compatibility with older games.
- Bluetooth
- The Bluetooth driver now includes the ability to scan for, configure detection, and pair devices.
- Support for Bluetooth Low Energy services has been added.
- Applications can create low-level RFCOMM connections with external devices using the Winsock API.
- Support for scanners.
- Support for TWAIN 2.0 API has been implemented, allowing 64-bit applications to access scanners.
- Support for the DAT_IMAGENATIVEXFER component for transferring images from the scanner to the application has been implemented.
- Ensured that the selected scanner and scanner settings are saved in the registry.
- Added support for multi-page scanning and document feeders.
- Application blocking during the scanning interface call has been removed.
- Support for loading native Windows drivers for scanners has been added.
- Internationalization
- Generated locale databases in locale.nls format from the Unicode CLDR (Unicode Common Locale Data Repository) version 48. Added support for additional locales bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP, and suz-Sunu-NP.
- Unicode character tables have been updated to version 17.0.0. The timezone database has been updated.
- Network Capabilities
- In the MSHTML engine, in standards-compliant mode, functionality with element attributes as full DOM nodes has been provided. Implemented DOMParser, XDomainRequest, and msCrypto objects.
- Support for typed arrays has been added to JavaScript.
- The ping command has been implemented for ICMPv6.
- Database
- Support for writing changes to the database has been added to the MSADO (ActiveX Data Objects) library. Most functions of the Recordset object have been implemented.
- In the odbc32 library, support for ANSI win32 drivers not designed for Unicode has been improved. Functions SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLStatisticsW(), and QLColumnsW() have been implemented.
- Built-in Applications
- A tab for configuring the default MIDI device has been added to WineCfg.
- The cmd utility has implemented input autocomplete for file names in interactive mode, added support for complex commands, and introduced the command 'mklink /j' for creating a Reparse Point.
- The conhost (Console Hosting) utility now supports retrieving history by pressing the F1 and F3 keys.
- The commands timeout, runas, and subst have been implemented.
- The find utility has added options '/c' to show the number of matches and '/i' for case-insensitive matching.
- The whoami utility now allows customization of the output format.
- Miscellaneous
- The implementation of the Wine Interface Definition Language (WIDL) now supports the generation of Windows Runtime (WinRT) metadata. It facilitates the generation and installation of WinMD (Windows Metadata) files for the WinRT API.
- The winedump utility has added support for dumping MUI resources, system call numbers, embedded NE modules, and large PDB files (> 4 GB).
- Refactoring of the Common Control implementation has been conducted, with the COMCTL32 library split into separate modules for versions 5 and 6.
- Support for the PBKDF2 key derivation standard has been added to BCrypt.
- Support for directories UserProgramFiles, AccountPictures, and Screenshots has been added.
- LLVM Compiler-RT 8.0.1 and TomCrypt 1.18.2 libraries have been integrated into the build. The HwLoc library has been employed to identify the CPU on the FreeBSD platform.
- Components updated to new versions: Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1, LibXml2 2.12.10, LibXslt 1.1.43.
Source: opennet.ru
