Stable release of Wine 9.0

After a year of development and 26 experimental versions, the stable release of the open implementation of the Win32 API — Wine 9.0 — has been introduced, incorporating over 7000 changes. Key achievements in the new version include the implementation of the WoW64 architecture for running 32-bit programs in a 64-bit environment, the integration of a driver for Wayland support, ARM64 architecture support, the implementation of the DirectMusic API, and support for smart cards.

Wine confirms full functionality for 5336 Windows programs (up from 5266 a year ago, 5156 two years ago, and 5049 three years ago), with an additional 4397 programs (up from 4370 last year, 4312 two years back, and 4227 three years back) working perfectly with additional configurations and external DLLs. 3943 programs (up from 3888 a year ago, 3813 two years ago, and 3703 three years ago) experience minor issues that do not hinder the use of essential application functions.

Key innovations in Wine 9.0:

  • The winewayland.drv driver has been added, allowing Wine to be used in environments based on the Wayland protocol without the use of XWayland and X11 components. The development aims to ensure the operation of a pure Wayland environment with support for launching Windows applications, without requiring the installation of packages related to X11, which leads to higher performance and responsiveness of games by eliminating unnecessary layers. Utilizing a pure Wayland environment for Wine also helps avoid security issues inherent to X11 (for example, untrusted games for X11 can spy on other applications since the X11 protocol allows access to all input events and can perform substitution for fake key presses).

    The driver is marked as experimental and under development; however, it already supports many features, such as window management, multi-monitor support, high-DPI screen scaling, relative coordinate handling for mouse movement tracking, and Vulkan graphics API support. By default, the driver is inactive, and to enable it, you should add "wayland" to the registry parameter "HKCU\Software\Wine\Drivers" and ensure that the DISPLAY environment variable is not set: wine reg.exe add HKCU\\Software\\Wine\\Drivers \/v Graphics \/d x11,wayland

  • The translation of all modules to the NT system call interface has been completed, replacing direct calls between PE and Unix levels, marking the conclusion of years of work on converting all DLL libraries to use the PE (Portable Executable) format.
  • The development of the WoW64 (64-bit Windows-on-Windows) layer has continued, allowing 32-bit Windows applications to run in 64-bit Unix systems. In all modules accessing Unix libraries, WoW64 system call converters (thunks) are utilized, enabling 32-bit PE modules to interact with 64-bit Unix libraries.

    A new mode of WoW64 has been enhanced, where 32-bit code runs inside a 64-bit process (in the old WoW64 mode, 32-bit applications were launched in 32-bit Unix processes). Support for the new WoW64 mode on the macOS platform has been added. Since there are still some issues with the new WoW64 mode, such as the lack of support for 16-bit mode and performance degradation in OpenGL due to the absence of support for the ARB_buffer_storage extension, it is not included by default and requires building with the option "—enable-archs=i386,x86_64" in the configure script.

  • The ability to run existing Windows executables on ARM64 architecture systems has been added. Support for building Wine for the ARM64EC (ARM64 Emulation Compatible) ABI has been implemented, along with support for loading ARM64EC modules, which facilitate the porting of applications originally written for x86_64 architecture to ARM64 systems by allowing the execution of individual x86_64 code modules in an ARM64 environment via an emulator. Support for the ARM64X PE file format has been added, which allows a single executable file to be loaded in x64/Arm64EC and ARM64 processes. An interface for emulating 32-bit x86 systems has been implemented, but the emulator library has not yet been included in the main Wine distribution (an external emulator FEX can be used to run x86 code in an ARM64 environment).
  • Graphics subsystem
    • The PostScript driver has been redesigned to support spool files in Windows format, which store data about print jobs. Direct calls to the driver from the Unix environment have been eliminated.
    • The WinRT themes now support dark mode. The WineCfg has added a setting to enable dark interface design.
    • The driver for the Vulkan graphics API has been updated to support the Vulkan 1.3.272 specification (Wine 8.0 supported 1.3.237).
    • Optimization has been carried out for the GdiPlus library functions, which has increased graphics performance.
  • Direct3D
    • Support has been provided for pausing the parsing of the multithreaded command stream in the absence of rendering commands being processed, allowing energy consumption to be reduced to single-threaded levels when executing programs that do not use the entire bandwidth of the command stream.
    • Support for additional effects has been implemented in Direct3D 10.
    • Performance optimizations have been made in the WineD3D code and the backend using the Vulkan graphics API.
    • In the Vulkan API-based rendering code, checks for device-supported capabilities have been added, providing the application with information about the available Direct3D functionality level.
    • Functions D3DXFillTextureTX and D3DXFillCubeTextureTX have been implemented.
    • The classic OpenGL ARB shader backend has added support for shadow definitions using the ARB_fragment_program_shadow extension.
    • Support for loading user data through the ID3DXLoadUserData interface has been added to D3DXLoadMeshHierarchyFromX and similar functions.
  • Audio and Video
    • An initial implementation of the DirectMusic API has been proposed. Support for collections, instruments, and sound samples in SoundFont format has been added. Doppler effect support has been introduced. Tests have been implemented to verify the correctness of the implementation when using the dmime sequencer and the dmsynth MIDI synthesizer.
    • FluidSynth has been integrated as a library for use in the DirectMusic API.
    • Support has been implemented for loading SoundFonts (sample-based synthesis formats used for MIDI file playback) in DLS1 and DLS2 formats, as well as in the SF2 format used in Linux.
    • The ability to play MIDI content using the dmsynth library has been added, utilizing the FluidSynth software synthesizer and the DirectSound API for audio output.
    • A decoder for video in the Indeo IV50 codec format has been added.
  • DirectShow
    • A DMO (DirectX Media Object) component with a WMV (Windows Media Video) format decoder has been implemented.
    • An audio capture filter (DirectShow Audio Capture Filter) has been added.
    • In the MPEG-1 stream splitter filter (DirectShow MPEG-1 Stream Splitter), support for video streams and auxiliary streams has been added in addition to audio streams.
    • A filter has been implemented for decoding MPEG-1 video (DirectShow MPEG-1 Video Decoder).
  • Input devices
    • DirectInput has implemented support for action mapping, allowing buttons on the game controller to be bound to specific actions in games.
  • Desktop integration
    • It is now possible to export bindings to the main user environment that allow Wine-managed applications to be launched as protocol handlers when opening URLs (for example, running spotify.exe when opening links like 'spotify:user:spotify:playlist:848218482355482821').
    • Implemented extraction of EDID (Extended Display Identification Data) with information about the connected monitor's parameters, such as device name and model.
    • The ability to close the desktop window, expanded to fullscreen mode, is provided using the 'Exit desktop' button in the 'Start' menu.
  • Internationalization
    • Support for IME (Input Method Editors) has been expanded. Efforts have been made to ensure compatibility with native Windows IME implementations and improve integration with Linux IMEs.
    • The generation of locale databases in locale.nls format from the Unicode CLDR (Unicode Common Locale Data Repository) version 44 has been ensured. Support for additional locales bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN, and za-CN has been added.
    • The interface has been translated into Georgian. Complete translations have been provided for 16 languages and partial translations for 31 languages.
    • Unicode character tables have been updated to version 15.1.0. The time zone database has been updated.
  • Core (Windows kernel interfaces)
    • Windows 10 has been set as the default version issued.
    • Support for Address Space Layout Randomization (ASLR) has been implemented for PE format executable files, though the load addresses in memory have not yet been fully randomized.
    • Support for Low Fragmentation Heap (LFH) has been implemented, increasing the performance of memory allocation operations.
    • The virtual memory allocation mechanism has been updated to support memory reservation (placeholder), allowing an application to reserve a specific area of virtual memory for future use.
    • 64-bit loaders (loader and preloader) for executable files and libraries have been compiled in the Position-Independent Executables (PIE) format to free up part of the 32-bit address space.
    • Correct stack unwinding has been ensured for NT system calls and user callback calls.
  • Network Capabilities
    • The MSHTML engine has implemented support for the ‘Cycle Collection’ garbage collection mechanism.
    • MSHTML now adds support for synchronous XMLHttpRequest request handling.
    • The jscript.dll now supports the WeakMap object for working with collections of key/value pairs, where the key is an object to which arbitrary values may be attached. Methods WeakMap.get(), WeakMap.delete(), WeakMap.clear(), and WeakMap.has() have been implemented.
    • The Gecko browser engine has been updated to version 2.47.4.
    • Support for network interface state change notifications has been implemented.
  • Cryptography and Security
    • Support for smart card has been added in the Winscard.dll library, implemented through the PCSClite system library.
    • Support for the Diffie-Hellman key exchange protocol has been added to BCrypt.
    • The Negotiate package is implemented, providing a layer for using the SSPI (Security Support Provider Interface) to access SSP (Security Support Provider) providers.
  • Built-in Applications
    • The Wine Debugger (winedbg) has utilized the Zydis library for disassembling X86 machine instructions.
    • The WineCfg interface now allows setting older Windows versions (up to XP) on 64-bit platforms, enabling the launch of legacy applications using the WoW64 mode.
    • All built-in graphic applications have been modified to output error information in a separate dialog instead of displaying it in the console.
    • The systeminfo program now shows information from the WMI (Windows Management Instrumentation) database.
    • The klist application has been added to display Kerberos tickets.
    • The taskkill application now has the ability to forcibly terminate child processes.
    • The start utility has been updated with the ‘/machine’ parameter to select the architecture used when launching hybrid executables that support both x86 and ARM.
    • Most of the functionality of the tasklist program has been implemented.
    • Basic implementation of the findstr application has been added.
  • Development Tools
    • The WineDump utility now has the capability to output the contents of Windows registry files (REGF format) and display data for all architectures (x86/ARM64) supported in hybrid PE files.
    • The IDL compiler has added support for the attributes ‘composable’, ‘default_overload’, ‘deprecated’, and ‘protected’.
    • The libwine.so library, which was declared deprecated in the Wine 6.0 release and has not been used for a long time in Wine, has been removed. ELF format programs built with old versions of Wine (5.0 and older) using libwine.so now require recompilation to run on Wine 9.0.
  • Built-in libraries and external dependencies
    • Integrated are the libraries FluidSynth 2.3.3, Musl 1.2.3 (only mathematical functions), and Zydis 4.0.0.
    • Components updated to new versions include Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38, and Zlib 1.3. The Wine Mono engine with .NET platform implementation has been updated to version 8.1.0.
    • In the winewayland.drv driver, the client library Wayland is used as an external dependency, along with the xkbcommon and xkbregistry libraries.
    • An external library PCSClite (PCSC in macOS) is used for smart card support.
    • For building PE files on platforms other than i386, a cross-compiler with support for the '.seh' directives for exception handling is now required.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster