Wine 5.0 released

January 21, 2020 the official release of the stable version Wine 5.0 – A free tool to run native Windows-based programs in a UNIX-based environment. This is an alternative, free implementation of the Windows API. The recursive acronym WINE means “Wine Is Not an Emulator.”

This version has about a year of development and more than 7400 individual changes. Lead developer Alexander Julliard identifies four:

  • Support for modules in PE format. This solves the problems with different copy protection schemes that verify the system modules on disk and in memory.
  • Support for multiple monitors and multiple GPUs, including dynamically changing settings.
  • Reimplementation of XAudio2 based on the FAudio project, an open source implementation of DirectX sound libraries. Switching to FAudio allows you to achieve higher sound quality in games, use volume mixing, advanced sound effects, etc.
  • Support for Vulkan 1.1.

More details about key innovations.

PE Modules

With the MinGW compiler, most Wine modules are now compiled in PE (Portable Executable, Windows binary) format instead of ELF.

PE executables are now copied to the directory ~/.wine instead of using dummy DLL files, which makes applications more like real Windows installations.

So far, not all modules have been converted to PE format. Work continues.

Graphics subsystem

As mentioned above, support for working with multiple monitors and graphics adapters has been added.

Vulkan driver updated to Vulkan 1.1.126 specifications.

In addition, the WindowsCodecs library now supports additional raster formats, including indexed palette formats.

Direct3d

Direct3D full-screen applications now block the screensaver call.

For DXGI applications, it is possible to switch between full-screen and windowed modes using the standard Alt + Enter combination.

Direct3D 12 features are expanded: support for switching between full-screen and window modes, changing screen modes, scaling views and swap interval replacement. All of these features have already been implemented for previous versions of the Direct3D API.

The project participants carefully worked out and eliminated literally hundreds of bugs, so that the processing of Wine for various border situations has been improved. Among them are sampling of 2D resources in 3D samplers and vice versa, the use of out-of-range initial values ​​for transparency and depth tests, rendering with reflected textures and buffers, the use of incorrect clippers (DirectDraw object), and much more.

Reduced the size of the required address space when loading 3D textures compressed by the S3TC method (instead of loading the whole textures are loaded with pieces).

For older DirectDraw applications, various improvements and fixes related to lighting calculation have been made.

The base of graphic cards recognized in Direct3D has been expanded.

Network and Cryptography

Gecko engine updated to version 2.47.1 to support modern tools. A number of new HTML APIs have been implemented.

MSHTML implements support for SVG elements.

Many new VBScript functions have been added (for example, error and exception handlers).

Implemented the ability to obtain HTTP proxy settings through DHCP.

In the cryptographic part, support for cryptographic keys based on elliptic curves (ECC) via GnuTLS is implemented, the ability to import keys and certificates from files in PFX format is added, support for the key generation scheme based on the password PBKDF2 is added.


Adobe Photoshop CS6 under Wine

Other significant innovations

  • Support for NT kernel spinlocks.
  • Due to the expiration of the patent for texture compression, DXTn and S3, it became possible to include them in the default implementation.
  • Support for installing plug-and-play drivers.
  • Various improvements to DirectWrite.
  • Improved support for the Windows Media Foundation API.
  • Better primitive synchronization thanks to implementation on futexes.
  • Sharing Wine-Mono to save space instead of open source .NET implementation for each ~/.wine.
  • Support for Unicode 12.0 and 12.1.
  • Implementing the initial HTTP service (HTTP.sys) as a replacement for the Winsock API and IIS, resulting in better performance than the Windows Sockets API.
  • Better compatibility with Windows debuggers.
  • Better support for LLVM MinGW and improved cross-compilation of WineGCC.

You can also mention the improvements in the user interface. For example, minimized windows are now displayed using the title bar, rather than Windows 3.1-style icons. Improved support for game controllers, including hat switch, steering wheel and pedals.

The built-in AVI, MPEG-I, and WAVE decoders have been removed from Wine, instead of which the system GStreamer or QuickTime are now used.

Added the ability to use the debugger from Visual Studio for remote debugging of applications running in Wine, the DBGENG library (Debug Engine) is partially implemented, the dependency on libwine is removed from the files collected for Windows.

To optimize performance, various work functions were eventually transferred to the use of high-performance system functions for working with a timer, which allowed to reduce overhead in the rendering cycle of many games. Other performance optimizations have been made.

See the full list of changes. here.

Source Code Wine 5.0, mirror
Binaries for various distributions
Documentation

Online Appdb a base of Windows-based applications compatible with Wine is maintained. Here are the leaders in number of votes:

  1. Final Fantasy XI
  2. Adobe Photoshop CS6 (13.0)
  3. World of Warcraft 8.3.0
  4. EVE Online Current
  5. Magic: The Gathering Online 4.x

It can be assumed that these applications run most often in Wine.

Note. Wine 5.0 release is dedicated to the memory of Józef Kucia, who died tragically in August 2019 at the age of 30 while exploring a cave in southern Poland. Jozef was an important contributor to Direct3D Wine, and a lead author of the project. vkd3d. While working on Wine, he contributed more than 2500 patches.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *