Wine Development Release 10.14 Now Available
The Wine development team is pleased to announce the release of Wine 10.14, a significant update that brings numerous improvements and bug fixes.

What's New in This Release:
- The bundled vkd3d library has been upgraded to version 1.17, ensuring better performance and compatibility with various graphics applications.
- The Mono engine has been updated to version 10.2.0, which includes several enhancements and bug fixes for .NET-based applications.
- IPv6 support has been enhanced, allowing Wine to handle ping operations on both IPv4 and IPv6 networks.
- The Gitlab CI infrastructure has been migrated to Debian Trixie, ensuring a more stable and efficient build process.
Notable Bug Fixes:
This release addresses 19 bugs, including:
- Fixed an issue where the underscore bar became inactive with multiple databases open (Bug #18233).
- Resolved a warning related to winsock errors on macOS (Bug #27974).
- Corrected a crash in VemsTune when switching between view modes (Bug #35622).
- Improved support for Phantasy Star Online: Blue Burst, fixing issues with missing and black textures (Bug #56639).
- Enhanced GetFinalPathNameByHandleW to handle paths exceeding the maximum allowed length of 260 characters (Bug #57027).
- Fixed a crash in ROCS Show Ready due to an unimplemented function in msvcp140_atomic_wait.dll (Bug #57835).
Other Bug Fixes:
Additional bugs fixed include:
- Approaches for handling maxAnisotropy values in games such as GreedFall and Mafia III: Definitive Edition (Bug #57946).
- Stack overflow issues with MDK on WOW64 (Bug #58141).
- Installer failures for Trae due to shell folder constant expansion issues (Bug #58169).
- ShowStopper crashes caused by an unimplemented function in ntdll.dll (Bug #58334).
- Death to Spies intro video playback issues with a black screen and working audio (Bug #58403).
- Roblox Studio installer crashes due to an unimplemented function in api-ms-win-core-memory-l1-1-3.dll (Bug #58482).
- Improper memory region handling by MemoryRegionInformation, leading to incorrect STATUS_SUCCESS returns for freed regions (Bug #58531).
- Requirements for gameinput.dll in applications such as Fritz Chess Coach and Le Mans Ultimate (Bug #58574).
- Issues with MsiGetComponentPath/MsiLocateComponent resolving .NET GAC references (Bug #58577).
- Improper command line tab completion behavior when dealing with files or directories containing delimiter characters (Bug #58600).
- SCardTransmit functionality issues when pioSendPci is set to NULL (Bug #58608).
- Changes in winepath behavior, stripping the ending path separator (Bug #58615).
Availability:
The source code for Wine 10.14 can be downloaded from https://dl.winehq.org/wine/source/10.x/wine-10.14.tar.xz. Binary packages will be available on the respective download sites, and documentation can be found at https://gitlab.winehq.org/wine/wine/-/wikis/Documentation.
Change log:
Adam Markowski (2):
po: Update Polish translation.
po: Update Polish translation.
Alexandre Julliard (39):
tapi32: Move registry keys out of wine.inf.
win32u: Add NtGdiCancelDC() stub.
win32u: Implement NtUserGetCursorPos().
win32u: Implement NtGdiGet/SetMiterLimit().
server: Add a helper to check a process wow64 status.
include: Always use Unicode string constants for the PE build.
server: Use LIST_FOR_EACH_ENTRY in more places.
cabinet: Use the correct structure for DllGetVersion().
rsaenh: Don't reset key when nothing was encrypted.
winebuild: Only allow thiscall functions on i386.
server: Fix get_next_hook return value when no hook is found.
kernel32: Preserve trailing slash for existing paths in wine_get_dos_file_name().
kernel32: Preserve trailing slash for existing paths in wine_get_unix_file_name().
win32u: Define all stubs as syscalls.
vkd3d: Import upstream release 1.17.
sxs: Add support for language in manifest names.
sxs: Support XML escaping in manifest names.
sxs: Take manifest language into account when building the file name.
sxs: Install policy files the same way as normal manifests.
win32u: Disable some unused code when EGL is missing.
gitlab: Update CI image to debian trixie.
setupapi: Use SetupDiGetActualSectionToInstallW instead of duplicating that logic.
setupapi: Add support for Include directive.
setupapi: Add support for Needs directive.
wine.inf: Use Needs directive to reduce duplication.
winedump: Remove const from a member that is written to.
kernel32/tests: Clear FPU status flags before checking control word.
ntdll/tests: Also test mxcsr register in user callbacks.
ntdll/tests: Use a direct syscall to test xmm registers.
gdi32/tests: Remove some workarounds for NT4.
gdi32: Handle the default color profile on the GDI side.
gdi32: Handle the ICM\mntr key on the GDI side.
winex11: Create the ICM profile file at startup.
win32u: Remove the __wine_get_icm_profile() syscall.
win32u: Remove the GetICMProfile driver entry point.
amstream/tests: Use nameless unions/structs.
qcap: Use nameless unions/structs.
qedit: Use nameless unions/structs.
winegstreamer: Use nameless unions/structs.
Alexandros Frantzis (2):
winewayland: Mark only windows with per-pixel alpha as layered.
winewayland: Handle NULL values for xkb layout name and description.
Anders Kjersem (1):
advpack: Support ADN_DEL_IF_EMPTY flag in DelNode().
Attila Fidan (1):
winegstreamer/wma_decoder: Return S_OK from AllocateStreamingResources().
Aurimas Fišeras (2):
po: Update Lithuanian translation.
po: Update Lithuanian translation.
Bernhard Übelacker (8):
ntdll/tests: Mark test as broken with old Windows versions.
ntdll: Fix XState data initialisation with non-AVX CPUs.
kernel32/tests: Test paths in GetFinalPathNameByHandleW exceeding MAX_PATH.
kernel32: Handle paths in GetFinalPathNameByHandleW exceeding MAX_PATH.
bluetoothapis/tests: Avoid crash in gatt tests with some Windows versions.
kernelbase/tests: Fix test failing with old Windows 10.
ntdll/tests: Add check for len and avoid CommitSize with old Windows.
propsys/tests: Skip tests of properties not supported by old Windows.
Brendan McGrath (1):
winegstreamer: Only add the capsfilter for avdec_h264.
Brendan Shanks (1):
ntdll: Implement NtGetCurrentProcessorNumber() with pthread_cpu_number_np() when available on macOS.
Connor McAdams (8):
ntoskrnl/tests: Add tests for getting IRP_MN_QUERY_DEVICE_TEXT based device properties.
ntoskrnl: Set DEVPKEY_Device_BusReportedDeviceDesc from driver.
winebus: Handle IRP_MN_QUERY_DEVICE_TEXT.
hidclass: Print a warning for unhandled IRP_MN_QUERY_DEVICE_TEXT text types.
winebth.sys: Print a warning for unhandled IRP_MN_QUERY_DEVICE_TEXT text types.
wineusb.sys: Print a warning for unhandled IRP_MN_QUERY_DEVICE_TEXT text types.
winebus: Generate unique container IDs when adding devices.
winebus: Override device instance enumerator string if bus type is known.
Conor McCarthy (1):
winegstreamer: Use a stride alignment of 2 for NV12 in align_video_info_planes().
Dmitry Timoshkov (3):
comdlg32: PRINTDLG_UpdatePrintDlgW() should update dmCopies field in DEVMODE.
kernel32/tests: Test FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_POSIX_SEMANTICS | FILE_ATTRIBUTE_DIRECTORY.
kernelbase: For FILE_FLAG_BACKUP_SEMANTICS also handle FILE_ATTRIBUTE_DIRECTORY in CreateFile.
Elizabeth Figura (3):
qcap/tests: Test subtype validation in QueryAccept() and SetFormat().
quartz/tests: Add more tests for video window style.
quartz: Preserve the current visibility in IVideoWindow::put_Style().
Esme Povirk (1):
mscoree: Update Wine Mono to 10.2.0.
Gabriel Ivăncescu (4):
jscript: Allow objects that expose "length" prop for Function.apply under certain conditions.
jscript: Return proper error when passing wrong type to Function.apply.
jscript: Fallback to Object's toString for Arrays when 'this' isn't an array in ES5 mode.
jscript: Fix error value when passing non-string 'this' to String's toString.
Georg Lehmann (3):
winevulkan: Reorder bitmasks to handle aliases correctly.
winevulkan: Disable h265 extensions.
winevulkan: Update to VK spec version 1.4.325.
Gerald Pfeifer (1):
winebus.sys: Use uint16_t instead of __u16.
Hans Leidekker (11):
msi: Make assembly caches global.
msi: Handle .NET assemblies in MSI_GetComponentPath().
rsaenh: Use TomCrypt for hash implementations.
include: Comment references to undefined static interfaces.
include: Define IRandomAccessStreamStatics.
include: Define ISystemMediaTransportControlsStatics.
widl: Require static interfaces to be defined.
widl: Require activation interfaces to be defined.
widl: Require composition interfaces to be defined.
widl: Require runtimeclass contracts to be defined.
winscard: Handle NULL send parameter in SCardTransmit().
Haoyang Chen (1):
qcap/vfwcapture: Validate the subtype in find_caps().
Henri Verbeet (4):
d3d11/tests: Test that sampler states with anisotropic filtering and zero MaxAnisotropy can be created.
d3d10core/tests: Test that sampler states with anisotropic filtering and zero MaxAnisotropy can be created.
d3d11: Disable anisotropic filtering for sampler states with zero MaxAnisotropy.
wined3d: Disable anisotropic filtering for zero max_anisotropy in sampler_desc_from_sampler_states().
Ignacy Kuchciński (1):
windows.storage: Split ApplicationData.
Jacob Czekalla (6):
hhctrl.ocx: Check for a NULL web_browser before QueryInterface.
wininet/tests: Add more http time test strings.
wininet: Fix parsing order of http times.
wininet: Fix year parsing to include millennium.
comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
comctl32/tests: Add a test for treeview deletion during NM_CLICK in LBUTTONDOWN.
Jiangyi Chen (1):
opengl32: Perform cAccumBits filtering if specified in wglChoosePixelFormat().
Joe Souza (1):
cmd: Treat most delimiters as literals if user specified quotes.
Keigo Okamoto (3):
winealsa: Send All Notes Off and Reset Controllers.
winecoreaudio: Send All Notes Off and Reset Controllers.
wineoss: Send All Notes Off and Reset Controllers.
Marc-Aurel Zent (5):
ntdll: Implement ProcessPriorityBoost class in NtQueryInformationProcess.
ntdll: Implement ProcessPriorityBoost class in NtSetInformationProcess.
kernelbase: Implement GetProcessPriorityBoost.
kernelbase: Implement SetProcessPriorityBoost.
kernel32/tests: Add tests for GetProcessPriorityBoost/SetProcessPriorityBoost.
Mike Kozelkov (1):
winbio: Add stub DLL.
Mohamad Al-Jaf (9):
cryptxml: Add stub dll.
include: Add cryptxml.h.
cryptxml: Implement CryptXmlOpenToDecode() stub.
cryptxml: Implement CryptXmlClose().
cryptxml: Implement CryptXmlGetDocContext().
cryptxml: Implement CryptXmlGetSignature().
cryptxml: Implement CryptXmlVerifySignature() stub.
cryptxml: Implement CryptXmlGetStatus().
cryptxml/tests: Add some signature verification tests.
Nikolay Sivov (5):
d2d1: Add some helpers for geometry figure manipulation.
d2d1: Implement ellipse geometry simplification.
d2d1: Implement rounded rectangle geometry simplification.
fonts: Fix "O" glyph in Tahoma Bold bitmap strikes.
d3d10/tests: Compile more test effects from sources.
Paul Gofman (35):
ntdll: Factor out chksum_add() function.
ntdll: Support SOCK_RAW / IPPROTO_ICMPV6 fallback over SOCK_DGRAM.
ws2_32/tests: Test ICMPv6 ping.
ntdll/tests: Add more tests for NtQueryVirtualMemory( MemoryRegionInformation ).
ntdll: Factor out get_memory_region_size() function.
ntdll: Reimplement get_memory_region_info() on top of get_memory_region_size().
ntdll: Add semi-stub for NtQueueApcThreadEx2().
ntdll: Validate reserve handle in NtQueueApcThreadEx2().
ntdll: Pass user APC flags to call_user_apc_dispatcher().
server: Do not allow queueing special APCs to wow64 threads.
ntdll: Implement QUEUE_USER_APC_CALLBACK_DATA_CONTEXT in NtQueueApcThreadEx2() on x64.
ntdll: Use NtContinueEx in KiUserApcDispatcher on x64.
kernelbase: Implement QueueUserAPC2().
server: Check thread and call parameters in queue_apc() for APC_USER.
msvcp140_atomic_wait: Semi-stub __std_tzdb_get_time_zones() / __std_tzdb_delete_time_zones().
msvcp140_atomic_wait: Semi-stub __std_tzdb_get_current_zone() / __std_tzdb_delete_current_zone().
msvcp140_atomic_wait: Stub __std_tzdb_get_leap_seconds() / __std_tzdb_delete_leap_seconds().
kernelbase: Preserve last error in OutputDebugStringA().
kernel32: Preserve last error in OutputDebugStringA().
kernel32/tests: Test last error preservation in OutputDebugString().
ntdll/tests: Test last error preservation in OutputDebugString() with debugger.
winex11.drv: Only create dummy parent when needed in create_client_window().
win32u: Avoid calling server in NtUserGetKeyState() when input keystate is in sync.
nsiproxy.sys: Get rid of echo request thread.
nsiproxy.sys: Bind to source address in icmp_send_echo().
nsiproxy.sys: Store socket type in struct icmp_data.
iphlpapi: Factor out icmp_send_echo() function.
iphlpapi/tests: Refactor APC testing in testIcmpSendEcho().
iphlpapi: Only supply APC routine if no event in icmp_send_echo().
iphlpapi: Implement Icmp6ParseReplies().
iphlpapi: Implement Icmp6CreateFile().
nsiproxy.sys: Don't try to check for original packet for ping socket.
iphlpapi: Implement Icmp6SendEcho2().
iphlpapi/tests: Add tests for Icmp6SendEcho2().
iphlpapi: Avoid leaking APC context in icmp_send_echo().
Rémi Bernon (69):
widl: Wrap strappend parameters in a new struct strbuf.
widl: Introduce a new append_basic_type helper.
widl: Remove unnecessary recursion for TYPE_BITFIELD.
widl: Move some type name construction out of write_type_left.
joy.cpl: Read the device state when getting selected effect.
winetest: Set winetest_mute_threshold to 4 when running tests.
user32: Use init_class_name(_ansi) in FindWindowEx(A|W).
win32u: Drop unnecessary NtUserCreateWindowEx version strings.
win32u: Add a helper to add atom / strings to server requests.
server: Simplify create_class atom validation check.
server: Unify reading class atom / name from requests.
widl: Introduce a new write_record_type_definition helper.
widl: Cleanup indentation and variables in write_type_left.
widl: Split write_type_left into a write_type_definition_left helper.
widl: Introduce a new append_type_left helper.
win32u: Move nulldrv client surface code from vulkan.c.
win32u: Introduce a new framebuffer object GL surface.
win32u: Create render buffers for double / stereo buffering.
win32u: Create depth attachments for the FBO surface.
widl: Remove now unnecessary write_callconv argument.
widl: Cleanup indentation and variables in write_type_right.
widl: Inline write_args into write_type_right.
widl: Introduce a new append_declspec helper.
opengl32: Hook glGet(Booleanv|Doublev|Floatv|Integer64v).
opengl32: Share wgl_context structure definition with win32u.
opengl32: Keep track of draw/read framebuffer binding.
opengl32: Return the tracked FBOs when using FBO surfaces.
include: Add gameinput.idl.
gameinput: Introduce new DLL.
dinput/tests: Add some gameinput tests.
winebus: Generate unique serial numbers when adding devices.
user32/tests: Add more GetClassInfo tests.
win32u: Forbid setting GCW_ATOM class info.
win32u: Introduce helpers to check desktop and message class.
user32: Implement integral class name versioning support.
win32u: Remove now unnecessary integral atom specific handling.
server: Return the class base atom from create_class.
opengl32: Keep track of default FBO read/draw buffers.
opengl32: Return the tracked FBO buffers when using FBO surfaces.
opengl32: Remap read / draw FBO buffers when using FBO surfaces.
opengl32: Redirect default framebuffer when using FBO surfaces.
wine.inf: Fix section name for DefaultInstall.ntx86 services.
win32u: Simplify setting extra class info in set_class_long.
win32u: Use set_class_long_size for NtUserSetClassWord.
win32u: Use get_class_long_size for get_class_word.
server: Split get_class_info request from set_class_info.
server: Get rid of set_class_info request flags.
widl: Keep track of statements source locations.
widl: Allow explicit registration by referencing runtimeclasses.
windows.storage.applicationdata: Register runtimeclasses explicitly.
windows.storage: Register runtimeclasses explicitly.
wintypes: Register runtimeclasses explicitly.
include: Remove now unnecessary registration ifdefs.
opengl32: Initialize viewport when using FBO surface.
win32u: Create a separate draw FBO for multisampled formats.
opengl32: Resolve multisample draw buffer when using FBO surfaces.
win32u: Remove unnecessary HDC parameter from client_surface_present.
win32u: Remove unnecessary HDC parameter from p_surface_create.
winex11: Remove unnecessary members from struct gl_drawable.
windows.ui: Register runtimeclasses explicitly.
windows.ui.xaml: Register runtimeclasses explicitly.
coremessaging: Register runtimeclasses explicitly.
twinapi.appcore: Register runtimeclasses explicitly.
windows.applicationmodel: Register runtimeclasses explicitly.
windows.system.profile.systemid: Register runtimeclasses explicitly.
windows.system.profile.systemmanufacturers: Register runtimeclasses explicitly.
windows.globalization: Register runtimeclasses explicitly.
appxdeploymentclient: Register runtimeclasses explicitly.
cryptowinrt: Register runtimeclasses explicitly.
Tim Clem (3):
ntdll: Initialize return value in fork_and_exec.
ntdll: Zero the process and thread handles when creating a Unix process.
kernelbase: Zero the RTL_USER_PROCESS_PARAMETERS in CreateProcessInternalW.
Tingzhong Luo (1):
shell32: Support the UserProgramFiles folder.
Tres Finocchiaro (1):
winebuild: Add flag to disable dynamicbase/aslr.
Tyson Whitehead (9):
joy.cpl: Use correct interface for effect AddRef call.
joy.cpl: Remove needless device caps retrieval.
joy.cpl: Remove incorrect DIEP_TYPESPECIFICPARAMS flag usage.
joy.cpl: Cleanup selected device Acquire / Unacquire logic.
joy.cpl: Fix effect axes / direction in SetParameters call.
joy.cpl: Avoid restarting effect while button is pressed.
joy.cpl: Turn off autocenter for every device on creation.
joy.cpl: Add specific parameters based on type and not effect GUID.
winebus: SDL backend FF effect angle requires 32 bits.
Vibhav Pant (9):
vccorlib140: Add semi-stub for Platform::Details::Heap::{Allocate, Free}.
vccorlib140: Add stub for Platform::Details::{Allocate(ptrdiff_t, size_t), ControlBlock::ReleaseTarget}.
vccorlib140: Implement Platform::Details::{Allocate(ptrdiff_t, size_t), ControlBlock::ReleaseTarget}.
vccorlib140: Add stub for __abi_make_type_id, Platform::Type{Equals, GetTypeCode, ToString, FullName::get}.
vccorlib140: Implement __abi_make_type_id.
vccorlib140: Implement Platform::Type::{Equals, GetTypeCode, ToString, FullName::get}.
vccorlib140: Add stub for Platform::Details::CreateValue.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
William Horvath (2):
ntdll: Check for invalid gs_base in the 64-bit segv_handler.
ntdll/tests: Re-enable a previously crashing test.
Yuxuan Shui (6):
include: Make sure to null terminate string in wine_dbg_vsprintf.
server: Fix use-after-free of handle entry.
makefiles: Don't delete Makefile if makedep is interrupted.
dmime: Fix use-after-free after performance_CloseDown.
msi/tests: Fix wrong character counts passed to RegSetValueExA.
ole32: Don't get metafile extent if there is no metafile.
Zhiyi Zhang (2):
user32/tests: Add more SendMessageCallbackA/W() tests with NULL callback.
win32u: Put the message in the queue when the callback pointer is NULL and the callback data is 1.
Ziqing Hui (1):
dwrite: Add fallback for Dingbats.