After a year of development and 28 experimental versions the stable release of the open implementation of the Win32 API — , which includes over 7400 changes. Key achievements of the new version include the delivery of built-in Wine modules in PE format, support for multi-monitor configurations, a new implementation of the XAudio2 audio API, and support for the Vulkan 1.1 graphics API.
In Wine full functionality for 4869 (up from 4737 a year ago) Windows programs, with an additional 4136 (up from 4045 a year ago) running well with extra configurations and external DLLs. 3635 programs exhibit minor issues that do not hinder the use of core application features.
Key Wine 5.0:
- PE format modules
- With MinGW compiler, most Wine modules are now built in PE (Portable Executable, used in Windows) format instead of ELF. Using PE resolves issues with various copy protection schemes that verify the identity of system modules on disk and in memory;
- PE executable files are now copied to the ~\/ .wine ($WINEPREFIX) directory instead of using dummy DLL files, making the setup more similar to actual Windows installations at the cost of additional disk space consumption;
- Modules converted to PE format can use standard C functions and Unicode constants (for example, L"abc");
- Added support in the Wine C runtime for linking with binary files compiled with MinGW, which is used by default instead of the MinGW runtime when building DLLs;
- Graphics subsystem
- Support for multiple monitors and graphics adapters has been added, including the ability to dynamically change settings;
- The graphics API Vulkan driver has been updated to comply with Vulkan 1.1.126 specifications;
- The WindowsCodecs library now implements the capability to convert additional raster formats, including indexed palette formats;
- Direct3D
- Fullscreen Direct3D applications now block screen saver calls;
- DXGI (DirectX Graphics Infrastructure) has added support for informing applications about minimizing their windows, allowing applications to reduce resource-intensive operations when the window is minimized.
- For applications using DXGI, the ability to toggle between fullscreen and windowed mode using the Alt+Enter combination has been implemented;
- The capabilities of Direct3D 12 have been expanded, for example, support for switching between fullscreen and windowed mode, changing screen modes, output with scaling, and controlling the rendering swap interval;
- Improved handling of various edge cases, such as the application of out-of-bounds initial values for transparency and depth tests, rendering with reflected textures and buffers, and the use of incorrect DirectDraw objects , creating Direct3 devices for incorrect windows, using visible areas with minimum parameter values equal to maximum ones, etc.
- In Direct3D 8 and 9, more accurate tracking of "" areas of loaded textures has been provided;
- Reduced the size of the required address space when loading 3D textures compressed using the S3TC method (instead of full loading, textures are loaded in chunks).
- Implemented the interface for protecting critical sections in multithreaded applications;
- Various improvements and fixes related to lighting calculations have been made for older DirectDraw applications;
- Additional calls for obtaining shader information in the API have been implemented ;
- Support for CPU-based for processing compressed resources has been added;
- The database of graphics cards recognized in Direct3D has been expanded;
- New registry keys have been added to HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (backend for shader operation: "glsl" for GLSL, "arb" for ARB vertex/fragment, and "none" to disable shader support), "strict_shader_math" (0x1 — enable, 0x0 — disable Direct3D shader conversion). The key "UseGLSL" has been deprecated (use "shader_backend");
- D3DX
- Support for the S3TC (S3 Texture Compression) 3D texture compression mechanism has been implemented;
- Correct implementations of operations such as texture filling and unmappable surfaces have been added;
- Various improvements and fixes have been made to the visual effects creation framework; ;
- Core (Windows kernel interfaces)
- KernelBase, following changes in the Windows architecture;
KernelBase, following changes in the Windows architecture. - The ability to mix 32-bit and 64-bit DLLs in directories used for loading. It ensures the ignoring of libraries that do not match the current bitness (32/64), in case a correct library for the current bitness can be found further along the path;
- Improved emulation of kernel objects for device drivers;
- Implemented kernel-level synchronization objects such as spin locks, fast mutexes, and resource-affixed variables;
- Provided accurate application notifications about battery status;
- KernelBase, following changes in the Windows architecture;
- User interface and desktop integration
- Minimized windows are now displayed with a title rather than an icon in the style of Windows 3.1;
- New button styles added (a button with a dropdown list of actions) and (links in dialog boxes used to proceed to the next stage);
- Symbolic links created for ‘Downloads’ and ‘Templates’ folders pointing to the corresponding directories in Unix systems;
- Input devices
- Necessary Plug & Play device drivers are installed and loaded at startup;
- Improved support for game controllers, including mini-joysticks (hat switches), steering wheels, and gas and brake pedals.
- Support for the old Linux API interaction with joysticks, used in Linux kernels prior to version 2.2, has been discontinued;
- .NET
- The Mono engine has been updated to release 4.9.4 and now includes parts of the Windows Presentation Foundation (WPF) framework;
- Ability to install add-ons with Mono and Gecko into a single common directory, storing files in the hierarchy /usr/share/wine instead of copying to new prefixes;
- Network Capabilities
- The Wine Gecko browser engine, used in the MSHTML library, has been updated to release 2.47.1. Support for new HTML APIs has been implemented;
- Support for SVG elements has been implemented in MSHTML;
- Added many new VBScript features (e.g., error and exception handlers, functions Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* and ScriptTypeComp_Bind* etc.);
- Code state preservation in VBScript and JScript (script persistence) has been ensured;
- Initial implementation of the HTTP service (WinHTTP) and its related API (HTTPAPI) for client and server applications that send and receive requests using the HTTP protocol;
- Ability to obtain HTTP proxy configuration parameters through DHCP;
- Support added for redirecting authentication requests through Microsoft Passport service;
- Cryptography
- Support for cryptographic keys based on elliptic curves (ECC) using GnuTLS has been implemented;
- Added the ability to import keys and certificates from PFX files;
- Support for PBKDF2 password-based key generation scheme has been added;
- Text and Fonts
- The DirectWrite API implementation has added support for OpenType features related to , which are enabled by default for Latin scripts, including kerning;
- The security of font data processing has been enhanced by verifying the correctness of various data tables before use;
- DirectWrite interfaces have been updated to align with the latest SDK;
- Audio and Video
- A new audio API implementation has been proposed , based on the project . Utilizing FAudio in Wine allows for higher sound quality in games and the use of features like volume mixing and enhanced audio effects;
- A large number of new calls have been added to the Media Foundation framework implementation, including support for built-in and custom asynchronous queues, Source Reader API, Media Session, and more.
- The video capture filter has switched to using the v4l2 API instead of v4l1 API, expanding the range of supported cameras;
- Built-in decoders for AVI, MPEG-I, and WAVE have been removed, and system GStreamer or QuickTime are now used instead;
- A subset of configuration APIs VMR7 has been added;
- Audio drivers have been updated to support volume adjustment for individual channels;
- Internationalization
- Unicode tables have been updated to version 12.1.0;
- Support for Unicode normalization has been implemented;
- Automatic geographic region setting (HKEY_CURRENT_USER\Control Panel\International\Geo) based on the current locale has been provided;
- RPC/COM
- Support for complex structures and arrays has been added to the typelib;
- An initial implementation of the Windows Script runtime library has been added;
- An initial implementation of the ADO (Microsoft ActiveX Data Objects) library has been added;
- Installers
- Support for delivering patches (Patch Files) has been implemented for the MSI installer;
- The WUSA (Windows Update Standalone Installer) utility now has the ability to install updates in .MSU format;
- ARM platform
- Support for stack unwinding has been added in ntdll for ARM64 architecture. Support for connecting external libraries libunwind has been added;
- Support for stubless proxies for object interfaces has been implemented for the ARM64 architecture;
- Development tools / Winelib
- The ability to use the Visual Studio debugger for remote debugging applications running in Wine has been added;
- Partial implementation of the DBGENG (Debug Engine) library has been completed;
- The built executable files for Windows no longer depend on libwine, making it possible to run them on Windows without additional dependencies;
- The Resource Compiler and IDL Compiler have added the ‘--sysroot’ option to specify the path for the header files;
- The winegcc now includes the ‘--target’, ‘--wine-objdir’,
‘--winebuild’ and ‘-fuse-ld’ options, simplifying the environment setup for cross-compilation;
- Built-in Applications
- The CHCP utility has been implemented for configuring console encoding;
- The MSIDB utility has been implemented for manipulating databases in the MSI format;
- Performance optimization
- Various time-related functions have been transitioned to use high-performance system timer functions, which reduced overhead in the rendering loop for many games;
- Support for using in Ext4 has been added;
- Performance optimizations have been made for handling a large number of elements in list output dialogs operating in LBS_NODATA mode;
- A faster implementation of SRW locks (Slim Reader/Writer) for Linux has been added, translated to Futex;
- External dependencies
- The MinGW-w64 cross-compiler has been utilized for building modules in the PE format;
- The implementation of XAudio2 requires the FAudio library;
- The Inotify library has been used to track file changes on BSD systems;
For exception handling on the ARM64 platform, the Unwind library is required; - The Video4Linux2 library is now required instead of Video4Linux1.
- After a year of development and 28 experimental versions, the stable release of the open implementation of the Win32 API has been presented -
Source: opennet.ru
