Several days ago the new stable version of Wine 6.0 was presented, version that arrived after a year of development and 29 experimental versions.
In this new version more than 8,300 changes have been incorporated and among the main achievements that are included in the delivery, we can find the Basic Wine modules in PE format, a backend based on the Vulkan graphical API for WineD3D, a new implementation of a text console, support for DirectShow and the Media Foundation framework.
Wine has confirmed the full functioning of 5049 (4869 a year ago) programs for Windows, 4227 (4136 a year ago) programs work perfectly with additional configurations and external DLLs. The 3703 programs have minor operational problems that do not interfere with the use of the main functions of the applications.
Main novelties of Wine 6.0
In this new version of Wine 6.0 we can find that the core DLL filesincluding NTDLL, KERNEL32, GDI32, and USER32, have been moved to use PE executable format (portable executable) 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.
Besides that a new mechanism is proposed to attach Unix libraries to P modulesE to organize access to Unix libraries from PE files when it is necessary to call functions that cannot be processed through the Win32 API. Additional Unix libraries are identified by the presence of a file with the extension “so” and the name of the PE module (for example, ntdll.so for ntdll.dll).
On the other hand linking Winelib modules to libwine.so broke and the loading of libwine.so was disabled at runtime. Due to this change, compatibility with previous versions is lost, that is, modules created for Wine 6.0 will not be able to be loaded in previous versions of Wine.
It is also noted that support for assembling PE modules with saving debugging information in a separate file has been implemented, which reduces the size of installed files.
Support for drawing arcs, ellipses, and rounded rectangles using the Direct2D API was added to the graphics subsystem.
The Vulkan driver provides support for the Vulkan Graphics API 1.2.162 specification. Provided the generation of a JSON manifest and a registry entry used by the official Vulkan loader.
An experimental rendering engine was implemented in Direct3D for WineD3D, which translates Direct3D 12 calls to the Vulkan graphics API. The engine requires the libvkd3d-shader library, which supports the translation of byte code 4 and 5 of shader models into the SPIR-V intermediate representation.
New features of Direct3D 11 were implemented, such as independent join states, multi-source join, masks for MSAA (Multiple Sample Anti-Aliasing), and requests for additional features.
In D3DX, the ID3D12ShaderReflection interface and functions to obtain image parameters, such as 3DX10GetImageInfoFromMemory (), as well as new objects and functions of the NT kernel, have been implemented, necessary for the operation of anti-cheat systems that load kernel drivers.
Another important change is in the implementation of the Media Foundation which has been significantly improved, in which there was initial support for the Media Session, Streaming Audio Renderer (SAR), Video Renderer, EVR mixer, Topology Loader, and Media Engine components.
Video Mixing Renderer adds support for windowless and non-rendering modes, the ability to automatically resize the video to fit the window, hardware-accelerated color space conversion, and widescreen formatting around content to achieve the right ratio. correct-looking.
Of the other changes that stand out:
- New features have been added to the Media Detector API.
- Added support for converting video and audio formats to filter link via GStreamer.
- The Enhanced Video Processor (EVR) supports mixing via the DXVA2 API.
- Added full support for normalizing Unicode strings.
- Improved Windows support for character encoding mapping tables.
- A built-in implementation of math functions has been added to the C runtime based on code from the Musl library.
- The code for generating floating point numbers has been redesigned and removed from the binding to the printf system function.
- Removed support for the 32-bit PowerPC architecture that did not work.
- Added support for exception handling and stack unwinding on 32-bit and 64-bit ARM systems.
Finally, if you want to know more about it, you can consult the following link.