443 lines
16 KiB
Plaintext
443 lines
16 KiB
Plaintext
The Wine team is proud to announce that the stable release Wine 7.0
|
|
is now available.
|
|
|
|
This release represents a year of development effort and over 9,100
|
|
individual changes. It contains a large number of improvements that
|
|
are listed in the release notes below. The areas of major changes are:
|
|
|
|
- Most modules converted to PE format.
|
|
- Better theming support, with a bundled theme for a more modern look.
|
|
- Vastly improved HID stack and joystick support.
|
|
- New WoW64 architecture.
|
|
|
|
The source is available from the following locations:
|
|
|
|
https://dl.winehq.org/wine/source/7.0/wine-7.0.tar.xz
|
|
http://mirrors.ibiblio.org/wine/source/7.0/wine-7.0.tar.xz
|
|
|
|
Binary packages for various distributions will be available from:
|
|
|
|
https://www.winehq.org/download
|
|
|
|
You will find documentation on https://www.winehq.org/documentation
|
|
|
|
You can also get the current source directly from the git
|
|
repository. Check https://www.winehq.org/git for details.
|
|
|
|
Wine is available thanks to the work of many people. See the file
|
|
AUTHORS in the distribution for the complete list.
|
|
|
|
----------------------------------------------------------------
|
|
|
|
What's new in Wine 7.0
|
|
======================
|
|
|
|
*** PE modules
|
|
|
|
- With a few exceptions, all modules can be built in PE format. The goal is to
|
|
convert the remaining modules after 7.0.
|
|
|
|
- For PE modules with an associated Unix library, the interface between the PE
|
|
part and the Unix part goes through a standard NT system call. This enables
|
|
hiding the Unix code from Windows debuggers, and switching the thread
|
|
register on platforms that require it.
|
|
|
|
- Builtin dlls are only loaded if there is a corresponding PE file on disk,
|
|
either a real binary or a fake PE module. This ensures that the application
|
|
always sees a valid PE file mapping. It can be disabled through the
|
|
WINEBOOTSTRAPMODE environment variable, used at prefix creation time.
|
|
|
|
|
|
*** WoW64
|
|
|
|
- The 64-bit Windows-on-Windows (WoW64) architecture is implemented, and
|
|
supports running a 32-bit Windows application inside a 64-bit Unix host
|
|
process, using thunks to map 32-bit NT system calls to the 64-bit NTDLL.
|
|
|
|
- WoW64 thunks are implemented for most Unix libraries, enabling a 32-bit PE
|
|
module to call a 64-bit Unix library. Once the remaining modules are
|
|
converted to PE, this will make it possible to run 32-bit applications
|
|
without installing 32-bit Unix libraries.
|
|
|
|
|
|
*** Theming
|
|
|
|
- A "Light" theme is included in Wine, with the color variants "Blue" and
|
|
"Classic Blue". It can be enabled through WineCfg.
|
|
|
|
- All the Common Controls support theming, and automatically refresh on theme
|
|
changes.
|
|
|
|
- All the builtin applications support theming, as well as High DPI rendering.
|
|
|
|
|
|
*** Graphics
|
|
|
|
- There's a new Win32u library implementing the kernel side of graphics and
|
|
window management support. Large portions of the GDI32 and USER32 libraries
|
|
are converted to use this new library. This work will continue after 7.0, and
|
|
the graphics drivers (winex11.drv, winemac.drv, etc.) will be migrated to
|
|
Win32u as well.
|
|
|
|
- The Vulkan driver supports up to version 1.2.201 of the Vulkan spec.
|
|
|
|
- Hit-testing stroked geometries using the Direct2D API is implemented.
|
|
|
|
- Some initial support for Direct2D effects (using the ID2D1Effect interface)
|
|
is implemented.
|
|
|
|
- The Direct2D API supports the ID2D1MultiThread interface.
|
|
|
|
- WindowsCodecs supports decoding images in WMP (Windows Media Photo) format,
|
|
as well as encoding images to the DDS (DirectDraw Surface) format.
|
|
|
|
- WindowsCodecs no longer supports encoding images to macOS ICNS format. This
|
|
is not supported on Windows, and was no longer used by Wine either.
|
|
|
|
|
|
*** Direct3D
|
|
|
|
- Various improvements have been made to the Vulkan renderer for the Wine
|
|
Direct3D implementation. In most cases, for Direct3D 10 and 11 applications
|
|
the Vulkan renderer should be about on-par with the older OpenGL renderer in
|
|
Wine 7.0. Like in Wine 6.0, the Vulkan renderer can be enabled by setting the
|
|
Direct3D "renderer" registry setting to "vulkan".
|
|
|
|
- The following Direct3D 10 and 11 features are implemented:
|
|
- Deferred device contexts.
|
|
- Device context state objects, and switching between them.
|
|
- Constant buffer offsetting.
|
|
- Resolving typeless multi-sample resources.
|
|
- Clearing unordered-access views of texture resources. When using the OpenGL
|
|
renderer, this requires the GL_ARB_clear_texture OpenGL extension.
|
|
- Resource copies between resources with "block-compatible" formats, like for
|
|
example DXGI_FORMAT_BC3_TYPELESS and DXGI_FORMAT_R32G32B32A32_TYPELESS.
|
|
- Clearing layered render-target views.
|
|
|
|
- Support for multiple displays ("multi-head") is implemented. In practice,
|
|
this tends to mean the ability to choose which monitor a Direct3D application
|
|
will use for full-screen mode. Note that this depends on the underlying
|
|
display drivers to accurately report the attached displays. For Wine's X11
|
|
driver, that requires proper support for version 1.4 or later of the X RandR
|
|
extension.
|
|
|
|
- Display gamma adjustment using the DXGI API is implemented. This is sometimes
|
|
used by Direct3D 10 and 11 applications to adjust screen "brightness".
|
|
|
|
- Direct3D 12 supports version 1.1 root signatures.
|
|
|
|
- When the VK_EXT_host_query_reset Vulkan extension is available, query
|
|
handling in the Vulkan renderer is slightly more efficient.
|
|
|
|
- Retrieving swapchain present counts using the DXGI API is implemented.
|
|
|
|
- A fallback path using GDI is added for swapchain presentation. This is used
|
|
in cases where OpenGL or Vulkan can't be used to present the swapchain, for
|
|
example when presenting to a window of a different process. This path is much
|
|
slower, but is often sufficient for some common use cases, like for example
|
|
applications using the Chromium Embedded Framework ("CEF") with cross-process
|
|
rendering.
|
|
|
|
- The "precise" shader instruction modifier is respected when using the GLSL
|
|
shader backend.
|
|
|
|
- The DirectDraw API supports 3D rendering to system memory surfaces when using
|
|
software device types like the "RGB", "MMX", and "Ramp" devices.
|
|
|
|
- The following additional graphics cards are recognized by the Direct3D
|
|
graphics card database:
|
|
- AMD Radeon RX 5500M
|
|
- AMD Radeon RX 6800/6800 XT/6900 XT
|
|
- AMD Van Gogh
|
|
- Intel UHD Graphics 630
|
|
- NVIDIA GT 1030
|
|
|
|
- The following HKEY_CURRENT_USER\Software\Wine\Direct3D key is removed:
|
|
- "UseGLSL"
|
|
This setting was deprecated in favor of the "shader_backend" setting in
|
|
Wine 5.0, and has been removed in this release.
|
|
|
|
|
|
*** D3DX
|
|
|
|
- The support for version 10 of the D3DX effects framework is much improved.
|
|
|
|
- D3DX 10 supports the Windows Media Photo (JPEG XR) image file format.
|
|
|
|
- Various D3DX10 texture creation functions (D3DX10CreateTextureFromMemory()
|
|
and variants) are implemented.
|
|
|
|
- A partial implementation of the ID3DX10Sprite interface is added.
|
|
|
|
- A partial implementation of the ID3DX10Font interface is added.
|
|
|
|
|
|
*** Audio / video
|
|
|
|
- The DirectShow and Media Foundation GStreamer glue is unified into a single
|
|
backend, making it easier to implement new media decoding APIs.
|
|
|
|
- The Windows Media asynchronous and synchronous reader objects are implemented
|
|
based on the WineGStreamer backend. Like other multimedia decoding libraries,
|
|
they require a functioning GStreamer installation.
|
|
|
|
- The Media Foundation support is more complete, with notably:
|
|
- Basic functionality of IMFPMediaPlayer, media item properties, support for
|
|
audio and video tracks.
|
|
- Support for sample allocator in the Source Reader.
|
|
- Improved EVR sink integration with presenter and mixer.
|
|
- Improved SAR rendering buffer behavior.
|
|
- Video sample allocator, with support for d3d9, d3d11, and system memory
|
|
buffers.
|
|
- Further improvements to EVR's presenter and mixer implementation.
|
|
- D3D11 frame output for IMFMediaEngine.
|
|
- Improvements to generic media source implementation in WineGStreamer to
|
|
support stopped and paused states, refined output type configuration.
|
|
|
|
- The QuickTime decoder library (wineqtdecoder) is removed. GStreamer is
|
|
required for all built-in multimedia codecs also on macOS.
|
|
|
|
|
|
*** Input devices
|
|
|
|
- The HID (Human Interface Device) stack implementation is more complete. This
|
|
includes HID descriptor and report parsers, report processing, as well as HID
|
|
mini-driver support.
|
|
|
|
- The winebus.sys driver backends are improved, to better describe the devices
|
|
into HID reports when pass-through is not possible, and to add standard
|
|
Physical Interface Device reports to expose force-feedback capabilities over
|
|
HID.
|
|
|
|
- There's a new DirectInput joystick backend using the improved HID stack to
|
|
communicate with winebus.sys and host devices. This backend supports
|
|
force-feedback effects using the standard HID Physical Interface Device
|
|
reports, and is also compatible with pass-through HID device which implement
|
|
it. The SDL and evdev winebus.sys Linux backends are also supported as they
|
|
implement it too. This replaces and deprecates the legacy Linux js and evdev,
|
|
and macOS IOHID backends.
|
|
|
|
- The joystick control panel is improved, as well as the interaction with
|
|
XInput-compatible devices. For such devices the joystick control panel can be
|
|
used to force DInput as the primary interface instead of XInput. This
|
|
translates to the "<joystick name>"="override" (REG_SZ) registry value in
|
|
HKCU\Software\Wine\AppDefaults\<app.exe>\DirectInput (or
|
|
HKCU\Software\Wine\DirectInput for prefix-wide setting).
|
|
|
|
- The WinMM joystick support is implemented using DInput instead of Linux evdev
|
|
or macOS IOHID, and the old joystick driver (winejoystick.drv) is removed.
|
|
|
|
- Many tests are added to the DInput module, using a virtual HID device to not
|
|
require a physical device anymore. The code is extensively and automatically
|
|
tested, including force-feedback effects with HID input / output report
|
|
validation.
|
|
|
|
|
|
*** Text and fonts
|
|
|
|
- Arabic shaping is implemented in DirectWrite, currently enabled for Arabic
|
|
and Syriac.
|
|
|
|
- The Font Set object is implemented in DirectWrite.
|
|
|
|
- The TextHost interface is properly implemented in RichEdit.
|
|
|
|
|
|
*** Mono / .NET
|
|
|
|
- The Mono engine is updated to version 7.0.0, with the following changes:
|
|
- IDispatch interface supported on COM Callable Wrappers.
|
|
- Improved support for SafeArray marshaling.
|
|
- Many other marshaling and COM interop improvements.
|
|
- Code imports from .NET Core: System.Drawing.Printing,
|
|
System.Security.Principal, WindowsFormsApplicationBase, parts of
|
|
Microsoft.VisualBasic.Interaction
|
|
- WMA and WMV support in FNA using mfplat.
|
|
- Debug symbols available separately in PDB form.
|
|
- Old VBNC compiler for Visual Basic .NET replaced with the VBC compiler from
|
|
.NET Core.
|
|
- Mono's JIT compiler generates code compatible with 64-bit macOS.
|
|
- WPF built with support for media controls.
|
|
- A replacement for the Managed DirectX API is included.
|
|
- Fixes for various bugs that prevented most WPF applications from working.
|
|
|
|
|
|
*** Internationalization
|
|
|
|
- Unicode character tables are based on version 14.0.0 of the Unicode Standard.
|
|
|
|
- The timezone data is updated, based on the information from the Olson and
|
|
Unicode CLDR databases.
|
|
|
|
- Codepages 720 (Arabic, Farsi and Urdu) and 20949 (Korean Wansung) are
|
|
supported.
|
|
|
|
- The sr-Latn-RS locale is supported.
|
|
|
|
|
|
*** Kernel
|
|
|
|
- Launching applications with the 'wine' executable invokes start.exe for any
|
|
unrecognized binary. This means that file associations work also from the
|
|
Unix command line, e.g. 'wine foo.msi'.
|
|
|
|
- The low-level NtAlertThreadByThreadId / NtWaitForAlertByThreadId
|
|
synchronization mechanism (roughly equivalent to Linux futexes) is supported,
|
|
and used to implement the higher-level synchronization primitives.
|
|
|
|
- NT debug objects are implemented and used by the kernel debugger functions.
|
|
|
|
- The dynamic registry keys for performance data are implemented.
|
|
|
|
|
|
*** C runtime
|
|
|
|
- There's a full math library implementation in the C runtime, mostly imported
|
|
from the Musl C library. The Unix math library is no longer used.
|
|
|
|
- The floating point environment functions are supported properly on all CPU
|
|
platforms.
|
|
|
|
|
|
*** Internet and networking
|
|
|
|
- IE11 compatibility mode is improved and used by default for
|
|
standard-compliant HTML documents.
|
|
|
|
- JScript EcmaScript compliant mode supports 'let' statements, Map object,
|
|
object freezing, object sealing and mutable prototype chains.
|
|
|
|
- Gecko add-on MSI packages are installed into the prefix on demand, instead of
|
|
during prefix update, to make updates faster and reduce disk space usage.
|
|
|
|
- The DTLS communication protocol is supported.
|
|
|
|
- The NSI device (Network Store Interface) is implemented, and used to provide
|
|
higher-level network services in IpHlpAPI.
|
|
|
|
- The Windows Sockets support is reimplemented to go through NTDLL and the Afd
|
|
device, following the Windows architecture.
|
|
|
|
- The various network database files (/etc/protocols, /etc/networks, etc.) are
|
|
provided and installed in the prefix. The equivalent Unix databases are no
|
|
longer used for network queries.
|
|
|
|
|
|
*** Alternative platforms
|
|
|
|
- The new Apple Silicon Macs are supported, including running x86-64 binaries
|
|
under Rosetta 2.
|
|
|
|
- GnuTLS is required on macOS for BCrypt and Secur32 support; the
|
|
macOS-specific backend implementations have been removed.
|
|
|
|
- 32-bit ARM binaries are built in Thumb-2 mode, like on Windows.
|
|
|
|
- The preloader is also used on 32-bit ARM, for a more compatible address space
|
|
layout.
|
|
|
|
- Stack unwinding is implemented on 32-bit ARM.
|
|
|
|
- More low-level system information queries like memory and battery status are
|
|
supported on FreeBSD.
|
|
|
|
|
|
*** Builtin applications
|
|
|
|
- The REG registry tool supports operating on either the 32- or 64-bit view of
|
|
the registry.
|
|
|
|
- The REG registry tool supports copying registry keys.
|
|
|
|
- The WineDump tool supports dumping Windows Metafiles, and shows more detailed
|
|
information for CodeView records.
|
|
|
|
- The Wine Debugger (winedbg) supports debugging a 32-bit target process from
|
|
the 64-bit debugger.
|
|
|
|
|
|
*** Development tools
|
|
|
|
- The IDL compiler (widl) supports loading type libraries embedded inside PE
|
|
files.
|
|
|
|
- The IDL compiler searches for type libraries in the per-platform library
|
|
search path instead of the include search path.
|
|
|
|
- The IDL compiler supports many more WinRT-specific constructs and attributes.
|
|
|
|
|
|
*** Build infrastructure
|
|
|
|
- All libraries are installed in architecture-specific directories, using names
|
|
like 'i386-windows' for PE binaries, and 'x86_64-unix' for the Unix
|
|
libraries. This enables supporting multiple architectures with a single Wine
|
|
installation, as well as Winelib cross-compilation.
|
|
|
|
- Static (.a) import libraries are used on all platforms. Wine no longer
|
|
generates the old-style .def libraries, though they are still supported for
|
|
backwards compatibility.
|
|
|
|
- The option to prefer a native DLL by default is specified through a flag in
|
|
the PE header, which can be set by passing the '--prefer-native option' to
|
|
winebuild. The previous method, handling DLL_WINE_PREATTACH in DllMain, is no
|
|
longer supported.
|
|
|
|
- The Dwarf debugging format is supported up to version 4. The Wine libraries
|
|
are built with version 4 by default.
|
|
|
|
- Unique build identifiers can be stored in the binaries by passing the
|
|
'--enable-build-id' option to configure.
|
|
|
|
- The Clang compiler in MSVC mode is supported.
|
|
|
|
|
|
*** Miscellaneous
|
|
|
|
- The Shell Folder naming is converted to use the Windows Vista+ scheme; for
|
|
instance 'My Documents' becomes 'Documents', and most things are saved under
|
|
the 'AppData' directory.
|
|
|
|
- The OpenCL library wrapper supports versions up to OpenCL 1.2.
|
|
|
|
- Paper forms are supported in various sizes in the WinSpool printer driver.
|
|
|
|
- There is initial support for MSDASQL, a Microsoft OLE DB provider for ODBC
|
|
drivers.
|
|
|
|
|
|
*** External dependencies
|
|
|
|
- The following libraries are bundled in the source tree and built as PE
|
|
libraries, so they are no longer required at the Unix level:
|
|
- Faudio
|
|
- GSM
|
|
- LCMS2
|
|
- LibJPEG
|
|
- LibJXR
|
|
- LibMPG123
|
|
- LibPng
|
|
- LibTiff
|
|
- LibXml2
|
|
- LibXslt
|
|
- Zlib
|
|
|
|
- The libraries above can still be imported as external libraries instead of
|
|
using the bundled copy, provided that they are available in PE format. This
|
|
behavior is requested with the '--with-system-dllpath' configure option,
|
|
which specifies the Unix search path for such dependencies.
|
|
|
|
- Direct3D 12 support now requires version 1.2 or later of the vkd3d library.
|
|
Version 1.2 or later of the related vkd3d-shader library was already required
|
|
by Wine 6.0 for translation of Direct3D shader to SPIR-V in the Vulkan
|
|
renderer for the Direct3D implementation.
|
|
|
|
- The deprecated HAL library is no longer supported or needed.
|
|
|
|
- The macOS QuickTime library is no longer used.
|
|
|
|
|
|
--
|
|
Alexandre Julliard
|
|
julliard@winehq.org
|