The secret to effectiveness is quality code, not an efficient manager.

The secret to effectiveness is quality code, not an efficient manager.On January 21, 2020, the official release of the stable version took place Wine 5.0 — a free tool for running native Windows applications in a UNIX environment. This is an alternative, free implementation of the Windows API. The recursive acronym WINE stands for "Wine Is Not an Emulator."

This version has seen about a year of development and over 7400 individual changes. Lead developer Alexandre Julliard highlights four key changes:

  • Support for modules in PE format. This addresses issues with various copy protection schemes that check system modules on disk and in memory.
  • Support for multiple monitors and multiple GPUs, including dynamic adjustment of settings.
  • Reimplementation of XAudio2 based on the FAudio project, an open-source implementation of DirectX audio libraries. Switching to FAudio allows for higher sound quality in games, utilizing volume mixing, advanced sound effects, and more.
  • Support for Vulkan 1.1.


More details on the key innovations.

PE Modules

With a MinGW compiler, most Wine modules are now built as PE (Portable Executable, Windows binary format) instead of ELF.

PE executable files are now copied to the directory ~/.wine instead of using dummy DLL files, making applications more similar to actual Windows installations.

Not all modules have been converted to the PE format yet. Work is ongoing.

Graphics subsystem

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

The Vulkan driver has been updated to Vulkan 1.1.126 specifications.

Additionally, the WindowsCodecs library now supports extra raster formats, including formats with indexed palettes.

Direct3D

Fullscreen Direct3D applications now block the screensaver call.

For DXGI applications, the ability to switch between fullscreen and windowed mode using the standard Alt+Enter combination has been implemented.

The capabilities of Direct3D 12 have been extended: support for switching between fullscreen and windowed modes, screen mode changes, scaling presentations, and rendering buffer swap intervals. All these features have already been implemented in previous versions of the Direct3D API.

The project participants worked diligently to eliminate literally hundreds of bugs, which improved Wine's handling of various edge cases. These include sampling 2D resources in 3D samplers and vice versa, applying out-of-range source values for transparency and depth tests, rendering with reflected textures and buffers, using incorrect clipers (DirectDraw object), and much more.

The required address space for loading 3D textures compressed with the S3TC method has been reduced (instead of loading entirely, textures load in chunks).

Various improvements and corrections related to lighting calculations have been made for older DirectDraw applications.

The database of graphics cards recognized in Direct3D has been expanded.

Networking and Cryptography

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

SVG element support has been implemented in MSHTML.

Many new features have been added to VBScript (such as error and exception handlers).

The ability to obtain HTTP proxy settings via DHCP has been implemented.

In the cryptographic part, support for Elliptic Curve Cryptography (ECC) keys via GnuTLS has been introduced, along with the ability to import keys and certificates from PFX format files and support for the password-based key derivation function PBKDF2.

The secret to effectiveness is quality code, not an efficient manager.
Adobe Photoshop CS6 on Wine

Other significant innovations

  • Support for NT kernel spinlocks.
  • Thanks to the expiration of the patent on DXTn and S3 texture compression, it has become possible to include them in the default implementation.
  • Support for plug-and-play driver installation.
  • Various improvements to DirectWrite.
  • Enhanced support for the Windows Media Foundation API.
  • Better synchronization of primitives thanks to the implementation on futexes.
  • Shared use of Wine-Mono to save space instead of an open-source .NET implementation for each instance. ~/.wine.
  • Support for Unicode versions 12.0 and 12.1.
  • An initial HTTP service (HTTP.sys) implementation as a replacement for Winsock API and IIS, resulting in performance higher than that of Windows Sockets API.
  • Better compatibility with Windows debuggers.
  • Improved support for LLVM MinGW and cross-compilation improvements in WineGCC.

User interface improvements can also be mentioned. For instance, minimized windows are now displayed using a title bar instead of icons reminiscent of Windows 3.1. Support for game controllers has been enhanced, including hat switches, steering wheels, and pedals.

Built-in AVI, MPEG-I, and WAVE decoders have been removed from Wine, now relying on system GStreamer or QuickTime instead.

The ability to use the Visual Studio debugger for remote debugging of applications running in Wine has been added, and partial implementation of the DBGENG (Debug Engine) library has been completed, removing dependencies from libwine in the Windows-sourced files.

To optimize performance, various time-handling functions have been translated to use high-performance system timer functions, reducing overhead in the rendering loop of many games. Additional performance optimizations have also been made.

See the full change log. here.

Wine 5.0 Source Code, mirror
Binaries for various distributions
Documentation

On the website AppDB maintains a database of Windows applications compatible with Wine. Here are the leaders by 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 are most frequently run in Wine.

Note. The Wine 5.0 release is dedicated to the memory of Józef Kucia, who tragically passed away in August 2019 at the age of 30 while exploring a cave in southern Poland. Józef was an important contributor to the development of Direct3D in Wine and a leading author of the project. vkd3dDuring his time working on Wine, he contributed over 2500 patches.

The secret to effectiveness is quality code, not an efficient manager.

Source: habr.com

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