Stable release of Wine 5.0

After a year of development and 28 experimental versions submitted stable release of open implementation of Win32 API β€” Wine 5.0, which has incorporated more than 7400 changes. The 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 sound API, and support for the Vulkan 1.1 graphics API.

In Wine confirmed by 4869 (4737 year ago 4136) programs for Windows, 4045 more (3635 year ago XNUMX) programs work fine with additional settings and external DLLs. XNUMX programs have minor problems in operation that do not interfere with the use of the main functions of applications.

Key innovations Wine 5.0:

  • Modules in PE format
    • With the MinGW compiler, most Wine modules are now built in PE (Portable Executable) executable format instead of ELF. The use of PE solves problems with the support of various copy protection schemes that verify the identity of system modules on disk and in memory;
    • PE executables are now copied to the ~/.wine ($WINEPREFIX) directory instead of using dummy DLLs, making the winery look more like real Windows installations at the cost of additional disk space;
    • Modules converted to PE format can use stock wchar C-functions and unicode constants (for example, L"abc");
    • Added support for linking to MinGW-built binaries in Wine C runtime, which is used by default instead of MinGW runtime when building DLLs;
  • Graphical subsystem
    • Added support for working with multiple monitors and graphics adapters, including the ability to dynamically change settings;
    • Updated the driver for the Vulkan graphics API to be compliant with the Vulkan 1.1.126 specification;
    • The WindowsCodecs library implements the ability to convert additional bitmap formats, including formats with an indexed palette;
  • Direct3D
    • When running full-screen Direct3D applications, the screen saver call is blocked;
    • DXGI (DirectX Graphics Infrastructure) adds support for informing an application about minimizing its window, which allows the application to reduce the performance of resource-intensive operations when the window is minimized;
    • For applications using DXGI, the ability to switch between full screen and windowed mode using the Alt + Enter combination is implemented;
    • Enhanced Direct3D 12 implementation capabilities, such as support for switching between full-screen and windowed mode, changing screen modes, output with scaling, and controlling the interval for replacing render buffers (swap interval);
    • Improved handling of various edge situations, such as using out-of-range initial values ​​for transparency and depth tests, rendering with mirrored textures and buffers, using incorrect DirectDraw objects clip, creation of Direct3 devices for incorrect windows, use of visible areas, the minimum values ​​of parameters of which are equal to the maximum, etc.
    • Direct3D 8 and 9 provide more accurate tracking "dirtyΒ»areas of loaded textures;
    • The size of the required address space when loading 3D textures compressed using the S3TC method has been reduced (instead of loading the whole texture, the textures are loaded in chunks).
    • Interface implemented ID3D11Multi-thread to protect critical sections in multithreaded applications;
    • For older DirectDraw applications, various lighting improvements and fixes have been made;
    • Implemented additional calls to get information about shaders in the API ShaderReflection;
    • Support added to wind3d blitter CPU-based for processing compressed resources;
    • Expanded database of graphic cards recognized in Direct3D;
    • Added new registry keys HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (shader backend: "glsl" for GLSL, "arb" for ARB vertex/fragment and "none" to disable shader support), "strict_shader_math" ( 0x1 - enable, 0x0 - disable Direct3D shader conversion). Deprecated "UseGLSL" key (should use "shader_backend");
  • D3DX
    • Implemented support for the S3TC (S3 Texture Compression) 3D texture compression mechanism;
    • Added correct implementations of such operations as texture filling and non-reflective (unmappable) surfaces;
    • Various improvements and fixes have been made to the creation framework visual effects;
  • Kernel (Windows kernel interfaces)
    • Most of the functions used in Kernel32 have been moved to
      KernelBase, following changes in the Windows architecture;

    • Ability to mix 32- and 64-bit DLLs in directories used for loading. Ensures that libraries that do not match the current bit depth are ignored (32/64), in case further along the path it is possible to find a library that is correct for the current bit depth;
    • Improved emulation of kernel objects for device drivers;
    • Implemented kernel-level synchronization objects such as spinlocks, fast mutexes, and resource-attached variables;
    • Provided correct informing of applications about the state of the battery;
  • User interface and desktop integration
    • Minimized windows are now displayed using a title instead of a Windows 3.1-style icon;
    • Added new button styles splitbutton (button with a drop-down list of actions) and Command Links (links in dialog boxes used to move to the next stage);
    • The 'Downloads' and 'Templates' folders have symbolic links pointing to their respective directories on Unix systems;
  • Input Devices
    • At startup, the required Plug & Play device drivers are installed and loaded;
    • Improved support for game controllers, including a mini-joystick (hat switch), steering wheel, gas and brake pedals.
    • Dropped support for the old Linux joystick interaction API used in pre-2.2 Linux kernels;
  • . NET
    • The Mono engine has been updated to release 4.9.4 and now includes parts of the Windows Presentation Foundation (WPF) framework;
    • Added the ability to install add-ons with Mono and Gecko in one shared directory with the placement of files in the /usr/share/wine hierarchy instead of copying to new prefixes;
  • Networking opportunities
    • The Wine Gecko browser engine used in the MSHTML library has been updated to release 2.47.1. Implemented support for new HTML APIs;
    • MSHTML has support for SVG elements;
    • Many new VBScript functions have been added (for example, error and exception handlers, Hour, Day, Month, String, LBound, RegExp.Replace, Π ScriptTypeInfo_* and ScriptTypeComp_Bind* functions, etc.);
    • Provided saving the state of the code in VBScript and JScript (script persistence);
    • Added an initial implementation of the HTTP service (WinHTTP) and its associated API (HTTPAPI) for client and server applications that send and receive requests using the HTTP protocol;
    • Implemented the ability to obtain HTTP proxy settings via DHCP;
    • Added support for redirecting authentication requests through the Microsoft Passport service;
  • Cryptography
    • Implemented support for Elliptic Curve Cryptographic Keys (ECC) when using GnuTLS;
    • Added the ability to import keys and certificates from files in PFX format;
    • Added support for key generation scheme based on PBKDF2 password;
  • Text and fonts
    • Implementation of the DirectWrite API adds support for OpenType features related to glyph positioning, which are enabled by default for the Latin face, including kerning;
    • Improved security of font data processing by checking the correctness of various data tables before using them;
    • DirectWrite interfaces are aligned with the latest SDK;
  • Sound and video
    • Proposed new implementation of sound API XAudio2, built on the basis of the project FAudio. Using FAudio in Wine allows you to achieve higher sound quality in games and take advantage of features such as volume mixing and advanced sound effects;
    • Added a large number of new calls to the implementation of the Media Foundation framework, including support for built-in and custom asynchronous queues, the Source Reader API, Media Session, and more.
    • The video capture filter has been switched to use the v4l2 API instead of the v4l1 API, which allowed expanding the range of supported cameras;
    • Removed the built-in AVI, MPEG-I and WAVE decoders, instead of which the system GStreamer or QuickTime is now used;
    • Added a subset of VMR7 configuration APIs;
    • Added support for adjusting the volume of individual channels in sound drivers;
  • Internationalization
    • Unicode tables updated to version 12.1.0;
    • Implemented support for Unicode normalization;
    • Provided automatic setting of the geographic region (HKEY_CURRENT_USER\Control Panel\International\Geo) based on the current locale;
  • RPC/COM
    • Support for complex structures and arrays has been added to typelib;
    • Added initial implementation of Windows Script runtime library;
    • Added initial implementation of ADO library (Microsoft ActiveX Data Objects);
  • Installers
    • For the MSI installer, support for the delivery of patches (Patch Files) has been implemented;
    • The WUSA (Windows Update Standalone Installer) utility now has the ability to install updates in the .MSU format;
  • ARM platform
    • Support for stack unwinding has been added to ntdll for the ARM64 architecture. Added support for connecting external libraries libunwind;
    • For the ARM64 architecture, support for seamless proxies (stubless proxies) for object interfaces has been implemented;
  • Development Tools / Winelib
    • Added the ability to use the debugger from Visual Studio to remotely debug applications running in Wine;
    • Partially implemented DBGENG library (Debug Engine);
    • Executables built for Windows no longer depend on libwine, allowing them to run on Windows without additional dependencies;
    • Added '--sysroot' option to Resource Compiler and IDL Compiler to define header file path;
    • winegcc added options '--target', '--wine-objdir',
      '--winebuild' and '-fuse-ld' to simplify setting up the environment for cross-compilation;

  • Built-in applications
    • Implemented CHCP utility to configure console encoding;
    • Implemented MSIDB utility for manipulating databases in MSI format;
  • Performance optimization
    • Various time management functions have been converted to use high-performance system timer functions, which has reduced the overhead in the rendering cycle of many games;
    • Added the ability to use Ext4 in FS regime work without regard to the case of characters;
    • Optimized the performance of processing a large number of items in list dialogs operating in the LBS_NODATA mode;
    • Added faster implementation of SRW locks (Slim Reader/Writer) for Linux, translated to Futex;
  • External dependencies
    • The MinGW-w64 cross-compiler is used to build modules in PE format;
    • The XAudio2 implementation requires the FAudio library;
    • To track file changes on BSD systems
      the Inotify library is involved;

    • Exception handling on the ARM64 platform requires the Unwind library;
    • Instead of Video4Linux1, the Video4Linux2 library is now required.

Source: opennet.ru

Add a comment