10.0 release notes, please review
Alexandre Julliard <[email protected]> Sun, 19 Jan 2025 21:58:05 +0100
| Newsgroups | gmane.comp.emulators.wine.devel |
|---|---|
| Message-ID | <87v7uacyhu.fsf@wine> |
Folks, Here are the draft release notes for Wine 10.0. Please review them and let me know if anything is incorrect or missing. Thanks to Jacek and Rémi for their help! The final 10.0 should be out in a couple of days. -- Alexandre Julliard [email protected]
release-notes.md
(text/markdown, 10.7 KB)
## What's new in Wine 10.0 ### ARM64 - The ARM64EC architecture is fully supported, with feature parity with the ARM64 support. - Hybrid ARM64X modules are fully supported. This allows mixing ARM64EC and plain ARM64 code into a single binary. All of Wine can be built as ARM64X by passing the `--enable-archs=arm64ec,aarch64` option to configure. This still requires an experimental LLVM toolchain, but it is expected that the upcoming LLVM 20 release will be able to build ARM64X Wine out of the box. - The 64-bit x86 emulation interface is implemented. This takes advantage of the ARM64EC support to run all of the Wine code as native, with only the application's x86-64 code requiring emulation. No emulation library is provided with Wine at this point, but an external library that exports the emulation interface can be used, by specifying its name in the `HKLM\Software\Microsoft\Wow64\amd64` registry key. The [FEX emulator][4] implements this interface when built as ARM64EC. - It should be noted that ARM64 support requires the system page size to be 4K, since that is what the Windows ABI specifies. Running on kernels with 16K or 64K pages is not supported at this point. [4]: https://fex-emu.com ### Graphics - HIDPI support is implemented more accurately, and non-DPI aware windows are scaled automatically, instead of exposing HIDPI sizes to applications that don't expect it. - Compatibility flags are implemented to override HIDPI support, either per-application or globally in the prefix. - Vulkan child window rendering is supported with the X11 backend, for applications that need 3D rendering on child windows. This was supported with OpenGL already, and the Vulkan support is now on par. - The Vulkan driver supports up to version 1.4.303 of the Vulkan spec. It also supports the Vulkan Video extensions. - D3DX9 supports more image and pixel formats. - Font linking is supported in GdiPlus. ### Desktop integration - A new opt-in modesetting emulation mechanism is available. It is very experimental still, but can be used to force display mode changes to be fully emulated, instead of actually changing the display settings. The window are being padded and scaled if necessary to fit in the physical displays, as if the monitor resolution were changed, but no actual modesetting is requested, improving user experience. - A new Desktop Control Panel applet `desk.cpl` is provided, to inspect and modify the display configuration. It can be used as well to change the virtual desktop resolution, or to control the new emulated display settings. - Display settings are restored to the default if a process crashes without restoring them properly. - System tray icons can be completely disabled by setting `NoTrayItemsDisplay=1` in the `HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer` key. - Shell launchers can be disabled in desktop mode by setting `NoDesktop=1` in the `HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer` key. ### Input / HID devices - Raw HID devices with multiple top-level collections are correctly parsed, and exposed as individual devices to Windows application. - Touchscreen input and events are supported with the X11 backend, and basic multi-touch support through the `WM_POINTER` messages is implemented. Mouse window messages such as `WM_LBUTTON*`, `WM_RBUTTON*`, and `WM_MOUSEMOVE` are also generated from the primary touch events. - A number of USER32 internal structures are stored in shared memory, to improve performance and reduce Wine server load by avoiding server round-trips. - An initial version of a Bluetooth driver is implemented, with some basic functionality. - The Joystick Control Panel applet `joy.cpl` enables toggling some advanced settings. - The Dvorak keyboard layout is properly supported. ### Wayland driver - The Wayland graphics driver is enabled by default, but the X11 driver still takes precedence if both are available. To force using the Wayland driver in that case, make sure that the `DISPLAY` environment variable is unset. - Popup windows should be positioned correctly in most cases. - OpenGL is supported. - Key auto-repeat is implemented. ### Multimedia - A new opt-in FFmpeg-based backend is introduced, as an alternative to the GStreamer backend. It is intended to improve compatibility with Media Foundation pipelines. It is still in experimental stage though, and more work will be needed, especially for D3D-aware playback. It can be enabled by setting the value `DisableGstByteStreamHandler=1` in the `HKCU\Software\Wine\MediaFoundation` registry key. - Media Foundation multimedia pipelines are more accurately implemented, for the many applications that depend on the individual demuxing and decoding components to be exposed. Topology resolution with demuxer and decoder creation and auto-plugging is improved. - DirectMusic supports loading MIDI files. ### Internationalization - Locale data is generated from the Unicode CLDR database version 46. The following additional locales are supported: `kaa-UZ`, `lld-IT`, `ltg-LV`, and `mhn-IT`. - Unicode character tables are based on version 16.0.0 of the Unicode Standard. - The timezone data is based on version 2024a of the IANA timezone database. ### Internet and networking - The JavaScript engine supports a new object binding interface, used by MSHTML to expose its objects in a standard-compliant mode. This eliminates the distinction between JavaScript objects and host objects within the engine, allowing scripts greater flexibility when interacting with MSHTML objects. - Built-in MSHTML functions are proper JavaScript function objects, and other properties use accessor functions where appropriate. - MSHTML supports prototype and constructor objects for its built-in objects. - Function objects in legacy MSHTML mode support the `call` and `apply` methods. - The JavaScript garbage collector operates globally across all script contexts within a thread, improving its accuracy. - JavaScript ArrayBuffer and DataView objects are supported. ### RPC / COM - RPC/COM calls are fully supported on ARM platforms, including things like stubless proxies and the typelib marshaller. - All generated COM proxies use the fully-interpreted marshalling mode on all platforms. ### Mono / .NET - The Mono engine is updated to version [9.4.0][5]. [5]: https://gitlab.winehq.org/mono/wine-mono/-/releases/wine-mono-9.4.0 ### C runtime - C++ exceptions and Run-Time Type Information (RTTI) are supported on ARM platforms. - The Ansi functions in the C Runtime support the UTF-8 codepage. ### Kernel - Process elevation is implemented, meaning that processes run as a normal user by default but can be elevated to administrator access when required. - Disk labels are retrieved from DBus when possible instead of accessing the raw device. - Mailslots are implemented directly in the Wine server instead of using a socketpair, to allow supporting the full Windows semantics. - Asynchronous waits for serial port events are reimplemented. The previous implementation was broken by the PE separation work in Wine 9.0. ### macOS - When building with Xcode >= 15.3 on macOS, the preloader is no longer needed. - Syscall emulation for applications doing direct NT syscalls is supported on macOS Sonoma and later. ### Builtin applications - The input parser of the Command Prompt tool `cmd` is rewritten, which fixes a number of long-standing issues, particularly with variable expansion, command chaining, and FOR loops. - The Wine Debugger `winedbg` uses the Capstone library to enable disassembly on all supported CPU types. - The File Comparison tool `fc` supports comparing files with default options. - The `findstr` application supports regular expressions and case insensitive search. - The `regsvr32` and `rundll32` applications can register ARM64EC modules. - The `sort` application is implemented. - The `where` application supports searching files with default options. - The `wmic` application supports an interactive mode. ### Miscellaneous - The ODBC library supports loading Windows ODBC drivers, in addition to Unix drivers that were already supported through libodbc.so. - Optimal Asymmetric Encryption Padding (OAEP) is supported for RSA encryption. - Network sessions are supported in DirectPlay. ### Development tools - The IDL compiler generates correct format strings for interpreted stubs mode (`/Oicf` in midl.exe) on all platforms. Interpreted mode is now the default, the old mixed-mode stub generation can be selected with `widl -Os`. - The IDL compiler can generate typelibs in the old SLTG format with the `--oldtlb` command-line option. - The `winegcc` and `winebuild` tools can create hybrid ARM64X modules with the `-marm64x` option. - The `winedump` tool supports dumping minidump tables, C++ exception data, CLR tables, and typelib resources. ### Build infrastructure - The `makedep` tool generates a standard-format `compile_commands.json` file that can be used with various IDEs. - Using `.def` files as import libraries with `winegcc` is no longer supported, all import libraries need to be in the standard `.a` format. If necessary, it is possible to convert a `.def` library to `.a` format using `winebuild --implib -E libfoo.def -o libfoo.a`. - Static analysis is supported using the Clang Static Analyzer. It can be enabled with `configure --enable-sast`. This is used to present Code Quality reports in the Gitlab CI. ### Bundled libraries - The Capstone library version 5.0.3 is bundled and used for disassembly support in the Wine Debugger, to enable disassembly on ARM code. This replaces the bundled Zydis library, which has been removed. - Vkd3d is updated to the upstream release [1.14][6]. - Faudio is updated to the upstream release 24.10. - FluidSynth is updated to the upstream release 2.4.0. - LDAP is updated to the upstream release 2.5.18. - LCMS2 is updated to the upstream release 2.16. - LibJpeg is updated to the upstream release 9f. - LibMPG123 is updated to the upstream release 1.32.9. - LibPng is updated to the upstream release 1.6.44. - LibTiff is updated to the upstream release 4.7.0. - LibXml2 is updated to the upstream release 2.12.8. - LibXslt is updated to the upstream release 1.1.42. - Zlib is updated to the upstream release 1.3.1. [6]: https://gitlab.winehq.org/wine/vkd3d/-/releases/vkd3d-1.14 ### External dependencies - The FFmpeg libraries are used to implement the new Media Foundation backend. - A PE cross-compiler is required for 32-bit ARM builds, pure ELF builds are no longer supported (this was already the case for 64-bit ARM). - Libunwind is no longer used on ARM platforms since they are built as PE. It's only used on x86-64.