WineHQ

Wine Announcement

The Wine development release 8.10 is now available.

What's new in this release:
  - All PE->Unix transitions go through the syscall interface.
  - Mouse cursor clipping improvements.
  - Support for virtual memory placeholders.
  - Locale and timezone data updates.
  - Various bug fixes.

The source is available at:

  https://dl.winehq.org/wine/source/8.x/wine-8.10.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.

----------------------------------------------------------------

Bugs fixed in 8.10 (total 13):

 - #18889  Multiple isolation-aware applications fail to load (MSN Messenger Live 2009, Lync 2010, Adobe Premiere Pro CS3, Quicken 201X)(embedded PE manifest search should support ISOLATIONAWARE_MANIFEST_RESOURCE_ID)
 - #24946  uTorrent 2.2.0 hangs on startup (FD_WRITE event is reported over and over in WSAEnumNetworkEvents for a bound UDP socket)
 - #27827  Creo Elements/Direct Modeling Express 4.0/6.0 loader failure due to missing msvcrt.dll dependency (native netapi32.dll imports msvcrt functions)
 - #47808  Cygwin's mintty.exe crashes with a stack overflow
 - #52868  TwitchTest crashes on unimplemented function IPHLPAPI.DLL.GetPerTcpConnectionEStats
 - #53092  Animated Puzzles crashes on start
 - #54410  .NET 3.5 Checkbox checkmarks should be black instead of "Foreground" color
 - #54599  Honeygain crashes on unimplemented function IPHLPAPI.DLL.GetCurrentThreadCompartmentId
 - #54810  PmxEditor 0.2.7.5 doesn't start after Wine 8.4.
 - #54913  ntdll: NtDuplicateToken has wrong prototype
 - #54949  user32:msg gets an extra WM_NCPAINT in ShowWindow(child, SW_SHOW)
 - #54991  Chinese IME no longer works in Naver LINE since Wine 8.9
 - #55008  wininet:http - test_secure_connection() fails on Windows and Wine

----------------------------------------------------------------

Changes since 8.9:

Akihiro Sagawa (1):
      winex11: Ignore BadWindow errors caused by XConfigureWindow.

Alex Henrie (29):
      iphlpapi: Add GetCurrentThreadCompartmentId stub and a test.
      iphlpapi: Add GetPerTcpConnectionEStats stub.
      bcrypt/tests: Don't allocate inside todo_wine and free outside of it.
      iphlpapi/tests: Use ~0u instead of ~0ul in testGetIpNetTable.
      winegstreamer: Pass a QWORD pointer to IMFByteStream_GetLength.
      wusa: Fix double free on error path in read_update_package (scan-build).
      mscms: Fix double free on error path in EnumColorProfilesA (scan-build).
      msi: Return ERROR_OUTOFMEMORY if calloc fails in TransformView_Create (scan-build).
      msi: Make TransformView_Create static.
      msi: Fix memory leak in ready_media (scan-build).
      wbemprox: Fix memory leak on error path in create_view (scan-build).
      jscript: Fix memory leak on error path in String_replace (scan-build).
      jscript: Remove unnecessary call to malloc in strbuf_ensure_size.
      conhost: Fix memory leak on error path in edit_line_move_to_history (scan-build).
      localspl: Fix memory leak in lpr_start_doc (scan-build).
      msvcrt: Use 'else if' in _wgetcwd.
      wineusb: Fix memory leaks on error paths in usb_submit_urb (scan-build).
      kerberos: Fix memory leaks in (wow64_)query_ticket_cache (scan-build).
      dnsapi: Fix memory leak on error path in do_query_netbios (scan-build).
      hhctrl: Fix memory leak on error path in resolve_filename (scan-build).
      wldap32: Fix memory leak on error path in ldap_start_tls_sW (scan-build).
      jscript: Fix memory leak on error path in regexp_string_match (scan-build).
      vbscript: Fix memory leak on error path in RegExp2_Execute (scan-build).
      wininet: Fix memory leaks on error paths in INTERNET_LoadProxySettings (scan-build).
      vbscript: Fix memory leak on error path in alloc_vbscode (scan-build).
      rpcrt4: Replace RPCRT4_strndupA with strdup.
      winhttp: Fix double free on error path in queue_task (scan-build).
      msi: Fix memory leak on error path in MSI_ProcessMessage (scan-build).
      regedit: Fix memory leak on error path in GetItemPath (scan-build).

Alexandre Julliard (46):
      include: Don't align the stack for PE builds.
      ntdll: Use x18 for the TEB on ARM64.
      ntdll: Use nameless unions/structs for loader data.
      ntdll: Use nameless unions/structs for CPU-related data.
      ntdll: Use nameless unions/structs for IO_STATUS_BLOCK.
      include: Only enable the non-inline NtCurrentTeb() on the Unix side.
      wineps: Don't use CDECL for private functions.
      win32u: Don't use WINAPI for the font enumeration function.
      win32u: Don't use WINAPI for private functions.
      ntdll: Don't pass arguments on the stack for user callbacks on ARM64.
      ntdll: Don't pass arguments on the stack for user callbacks on x86-64.
      ntdll: Don't pass arguments on the stack for user callbacks on i386.
      ntdll: Don't pass arguments on the stack for user callbacks on ARM.
      ntdll: Don't use WINAPI for KeUserModeCallback().
      ntdll: Store the PE function pointers as simple void pointers.
      include: Only declare __wine_unix_call() on the PE side.
      ntdll: Use the sysv ABI for the %fs allocation function.
      ntdll: Use the sysv ABI for setjmp/longjmp on the Unix side.
      ntdll: Use the default ABI for all functions on the Unix side.
      kernelbase: Update timezone data to version 2023c.
      nls: Update locale data to CLDR version 43.
      xslt: Import upstream release 1.1.38.
      xml2: Import upstream release 2.11.4.
      kernelbase: Use nameless unions/structs for loader data.
      kernelbase: Use nameless unions/structs for CPU-related data.
      kernelbase: Use nameless unions/structs for IO_STATUS_BLOCK.
      kernel32: Use nameless unions/structs.
      server: Send the APC call data as vararg in the queue_apc request.
      server: Send the APC call data as vararg in the select request.
      wininet/tests: Update expected WineHQ certificate.
      ntdll: Support adding overlapping ranges in mmap_add_reserved_area().
      ntdll: Add a helper function to unmap memory above the user space limit.
      ntdll: Reimplement unmap_area() to avoid recursion and callbacks.
      ntdll: Reimplement map_fixed_area() to avoid recursion and callbacks.
      ntdll: Reimplement allocation inside a reserved area without using a callback.
      ntdll: Reimplement allocation of the virtual heap without using a callback.
      ntdll: Reimplement fill_basic_memory_info() without using a callback.
      ntdll: Reimplement virtual_release_address_space() without using a callback.
      ntdll: Report the remaining part of the 64K after a view as free.
      ntdll: Use the full 4Gb for large address aware applications on Wow64.
      ntdll: Update the reserved range on 64-bit to match the preloader.
      ntdll: Use the sysv ABI for __wine_syscall_dispatcher_return().
      winebuild: Set a 64-bit base address for generated 64-bit dlls.
      winebuild: Update target-dependent characteristics after option parsing.
      winedump: Dump version resources in a more structured way.
      winedump: Dump manifest resources in a more structured way.

Alistair Leslie-Hughes (5):
      xactengine: Correct interfaces for IXACT3Cue.
      include: Use STDMETHOD when returning HRESULT.
      krnl386.exe16: Don't overflow when calculating size.
      xactengine: Correct XACTNOTIFICATIONTYPE_MAX value.
      xactengine: IXACT3EngineImpl_CreateSoundBank isn't a stub.

André Zwing (1):
      wow64: Ignore Thumb flag when parsing ARM syscall number.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Bernhard Kölbl (1):
      mf/tests: Remove duplicate call to MFStartup().

Bernhard Übelacker (1):
      comdlg32: Avoid crash in RemoveControlItem.

Billy Laws (1):
      configure: Stash host LDFLAGS when configuring cross-compilers.

Connor McAdams (4):
      uiautomationcore: Put general purpose helper functions into separate source file.
      uiautomationcore: Add global interface table helper functions.
      uiautomationcore: Respect ProviderOptions_UseComThreading on advise events interfaces.
      uiautomationcore: Get IRawElementProviderAdviseEvents interfaces from embedded fragment root providers.

Daniel Lehman (2):
      msi: Release record instead of free.
      riched20: Update paragraph position in marked tree.

David Kahurani (1):
      gdiplus: Handle Windows style newline.

Davide Beatrici (38):
      wined3d: Fix uninitialized variable warning.
      winepulse: Move AudioClient3 into mmdevapi.
      winealsa: Use mmdevapi's AudioClient3.
      winecoreaudio: Use mmdevapi's AudioClient3.
      wineoss: Use mmdevapi's AudioClient3.
      winepulse: Move AudioClient2 into mmdevapi.
      winealsa: Use mmdevapi's AudioClient2.
      winecoreaudio: Use mmdevapi's AudioClient2.
      wineoss: Use mmdevapi's AudioClient2.
      winepulse: Always initialize ref to 1 in session wrapper.
      winepulse: Move session_wrapper_create into mmdevapi.
      winealsa: Use mmdevapi's session_wrapper_create.
      winecoreaudio: Use mmdevapi's session_wrapper_create.
      wineoss: Use mmdevapi's session_wrapper_create.
      winepulse: Lock sessions in AudioClient's GetService.
      winepulse: Move AudioClient's GetService into mmdevapi.
      winealsa: Use mmdevapi's AudioClient's GetService.
      winecoreaudio: Use mmdevapi's AudioClient's GetService.
      wineoss: Use mmdevapi's AudioClient's GetService.
      winepulse: Move AudioClient's SetEventHandle, Reset, Stop into mmdevapi.
      winealsa: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
      winecoreaudio: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
      wineoss: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
      winepulse: Lock sessions in AudioClient's Start.
      winecoreaudio: Lock sessions in AudioClient's Start.
      winepulse: Move AudioClient's Start into mmdevapi.
      winealsa: Use mmdevapi's AudioClient's Start.
      winecoreaudio: Use mmdevapi's AudioClient's Start.
      wineoss: Use mmdevapi's AudioClient's Start.
      winepulse: Move AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported into mmdevapi.
      winealsa: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
      winecoreaudio: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
      wineoss: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
      winepulse: Move AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize into mmdevapi.
      winealsa: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
      winecoreaudio: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
      wineoss: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
      mmdevapi: Handle CreateThread() failure in AudioClient's Start.

Eric Pouech (5):
      dbghelp: Better handle very long C++ qualified identifiers in dwarf.
      dbghelp/tests: Fix process kind detection on old Windows machines.
      dbghelp/tests: Review old-wow64 expected values.
      dbghelp/tests: Add more tests for module imagename handling.
      dbghelp: Reimplement EnumerateLoadedModules().

Gabriel Ivăncescu (6):
      mshtml: Fix classList toggle() when return value pointer is NULL.
      jscript: Return undefined for empty RegExp captures in ES5+ mode.
      jscript: Throw proper error for unexpected quantifiers in RegExp.
      jscript: Throw proper error for out of memory conditions in RegExp.
      mshtml/tests: Test RegExp.toString on object with separate RegExp flag props.
      mshtml: Handle protocols with no ports when checking target origin.

Georg Lehmann (1):
      winevulkan: Update to VK spec version 1.3.251.

Giovanni Mascellani (6):
      dxgi: Document some struct d3d12_swapchain fields.
      dxgi: Rename d3d12_swapchain_prepare_command_buffers().
      dxgi: Store Vulkan formats in the swapchain object.
      dxgi: Factor out d3d12_swapchain_create_image_resources().
      dxgi: Move non-Vulkan-specific code out of d3d12_swapchain_create_vulkan_swapchain().
      dxgi: Move Vulkan-specific code to d3d12_swapchain_create_vulkan_swapchain().

Jacek Caban (8):
      win32u: Use syscall interface for all ntuser functions.
      win32u: Implement NtGdiIcmBrushInfo and use it instead of __wine_get_brush_bitmap_info.
      win32u: Extend NtGdiSetDIBitsToDeviceInternal for SetDIBits implementation.
      win32u: Don't return full OUTLINETEXTMETRICW from __wine_get_file_outline_text_metric.
      win32u: Use syscall interface for all exports.
      ntdll: Get rid of hacks for direct unix calls.
      wineps: Don't include gdi_driver.h from PE module.
      win32u: Don't use CDECL for gdi_dc_funcs entries.

Jinoh Kang (7):
      kernel32/tests: Remove test for ACTCTX_FLAG_HMODULE_VALID with hModule = NULL case.
      kernel32/tests: Test setting lpResourceName to NULL for CreateActCtxW.
      ntdll: Move ACTCTX lpResourceName validation to RtlCreateActivationContext.
      kernel32/tests: Test loading assembly manifest resource inside dependencies.
      ntdll: Don't hard-code DLL manifest resource ID when looking up dependency assembly.
      user32/tests: Test for update region after showing a child window.
      server: Update parent window region when exposing previously invisible window.

Joshua Ashton (1):
      winevulkan: Include function name in asserts.

Martin Storsjö (1):
      include: Fix the use of __getReg for aarch64/msvc mode.

Michael Stefaniuc (3):
      ws2_32/tests: Remove superfluous casts to self.
      wmvcore: Remove superfluous casts to self.
      dbghelp: Remove superfluous casts to self.

Nikolay Sivov (8):
      ole32/antimoniker: Use CRT allocation functions.
      ole32/antimoniker: Fix Enum() return error code.
      ole32/classmoniker: Use CRT allocation functions.
      ole32/pointermoniker: Use CRT allocation functions.
      ole32/itemmoniker: Use CRT allocation functions.
      ole32/compositemoniker: Use CRT allocation functions.
      ole32/filemoniker: Use CRT allocation functions.
      ole32/git: Use CRT allocation functions.

Paul Gofman (13):
      ntdll: Support MEM_COALESCE_PLACEHOLDERS in NtFreeVirtualMemory().
      ntdll: Factor out unmap_view_of_section() function.
      kernelbase/tests: Add tests for MEM_PRESERVE_PLACEHOLDER with UnmapViewOfFile2().
      ntdll: Validate flags in NtUnmapViewOfSectionEx().
      ntdll: Support MEM_PRESERVE_PLACEHOLDER in NtUnmapViewOfSectionEx().
      winegstreamer: Don't pre-check sample size in wg_transform_read_mf().
      kernelbase: Don't modify non-volatile regs in RaiseException() on x64.
      ws2_32: Make wait in accept() alertable.
      ws2_32: Make wait in connect() alertable.
      ws2_32: Make wait in WSAPoll() alertable.
      ws2_32: Test wait alertability in WSAGetOverlappedResult().
      winegstreamer: Implement MFT_MESSAGE_COMMAND_DRAIN for the H264 decoder.
      winegstreamer: Implement MFT_MESSAGE_COMMAND_FLUSH for the H264 decoder.

Piotr Caban (12):
      msvcr100: Fix next writer unblocking in reader_writer_lock::unlock.
      msvcr100: Use Context to store critical_section owner.
      msvcr100: Use Context blocking functions in critical_section class.
      make_unicode: Don't use Türkiye as it can't be encoded in some locales.
      msvcr100: Use Context blocking functions in event class.
      msvcr100: Use Context blocking functions in Concurrency::wait().
      localspl: Don't pass original document name to cupsStartDocument.
      msvcr100: Fix use after free in critical_section::try_lock_for().
      msvcr100: Add support for COOPERATIVE_TIMEOUT_INFINITE timeout in critical_section.
      msvcr100: Use block_context_for helper in Concurrency::wait().
      msvcr100: Use block_context_for helper in event::wait().
      msvcr100: Use Context blocking functions in _Condition_variable class.

Rémi Bernon (44):
      winegstreamer: Forbid vaapidecodebin when looking for a specific element.
      winegstreamer: Only warn on wg_transform input buffer push errors.
      winegstreamer: Set the default H264 caps profile to "baseline".
      server: Assume the internal clip message to be WM_WINE_CLIPCURSOR.
      server: Move set_cursor desktop local variable to wider scope.
      win32u: Rename user driver CreateDesktopWindow entry to SetDesktopWindow.
      win32u: Call SetDesktopWindow when desktop window is successfully created.
      explorer: Load graphics driver before calling CreateDesktopW.
      explorer: Use root window if driver doesn't implement create_desktop.
      explorer: Don't call driver create_desktop if desktop name is "root".
      explorer: Call user driver through a new CreateDesktop callback.
      wineandroid: Use the user driver interface to create host desktops.
      winex11: Use the user driver interface to create host desktops.
      explorer: Remove now unnecessary wine_create_desktop entry.
      imm32: Query the new input context in ImmAssociateContextEx / IACE_DEFAULT.
      server: Use get_hardware_msg_bit consistently to classify messages.
      win32u: Move some window functions to window.c.
      win32u: Move cursor clipping functions to input.c.
      win32u: Add a separate function to process WM_WINE_CLIPCURSOR.
      win32u: Use WM_WINE_CLIPCURSOR / TRUE for empty clipping rect.
      user32: Remove now unused virtual screen helpers.
      mf/tests: Add H264 decoder tests with concatenated streams.
      winegstreamer: Use an IMFMediaType for the internal stream type.
      winegstreamer: Generate H264 timestamps using the input type frame rate.
      winegstreamer: Use the output wg_format in CAPS sink query.
      user32/tests: Zero-initialize keyboard state array.
      user32/tests: Add a helper to run a test in a process.
      user32/tests: Test more ClipCursor reset scenarios.
      winegstreamer: Pass desired output plane alignment to wg_transform_create.
      winegstreamer: Pass desired input queue length to wg_transform_create.
      winegstreamer: Implement MF_LOW_LATENCY attribute and latency query.
      win32u: Reset cursor clipping rectangle on display mode change.
      winex11: Rely on win32u to reset clipping on display mode change.
      winex11: Reset clipping by calling NtUserClipCursor directly.
      server: Don't reset cursor clipping on foreground thread exit.
      kernelbase: Comment out DECLSPEC_HOTPATCH for ConvertThreadToFiber.
      evr/tests: Test IMFVideoDisplayControl_GetCurrentImage orientation.
      evr: Respect RGB format stride in GetCurrentImage.
      win32u: Add a reset parameter to WM_WINE_CLIPCURSOR and driver ClipCursor.
      server: Use the helper to reset the clip rect when the desktop size changes.
      server: Use a separate helper to merge WM_MOUSEMOVE messages.
      server: Queue a hardware WM_WINE_CLIPCURSOR message to the foreground thread.
      win32u: Asynchronously apply or reset ClipCursor from the hardware message.
      winex11: Remove now unnecessary ClipCursor forwarding to foreground thread.

Santino Mazza (1):
      riched20: Call ME_UpdateRepaint instead of editor_ensure_visible in set_selection.

Shaun Ren (8):
      sapi: Implement ISpObjectToken::CreateKey.
      sapi: Partially reimplement ISpObjectTokenEnumBuilder storing a token array.
      sapi: Implement token filtering and sorting in ISpObjectTokenEnumBuilder.
      sapi: Add SpMMAudioOut stub.
      sapi: Implement ISpMMSysAudio::Get/SetDeviceId.
      sapi: Add GUIDs SPDFID_Text/WaveFormatEx.
      include: Add sperror error code SPERR_UNSUPPORTED_FORMAT.
      sapi: Implement ISpMMSysAudio::Get/SetFormat.

Tim Clem (1):
      loader: Reserve some space for 32-bit top-down allocations on 64-bit.

Zebediah Figura (10):
      winebuild: Use segment prefixes in 16-bit stack switching code instead of writing out byte values.
      winebuild: Use the lretw mnemonic in wine_call_to_16().
      wow32: Use spec file imports.
      ntdll: Do not throw deadlock exceptions for Wine critical sections.
      ntdll: Simplify critical section timeout logic.
      xaudio2/tests: Add a couple of helpers to abstract the difference between versions.
      xaudio2: Move CreateAudioVolumeMeter() and CreateAudioReverb() to xapo.c.
      xaudio2: Create XAPO objects directly from CreateAudioVolumeMeter() and CreateAudioReverb().
      xaudio2: Use the preprocessor to modify definitions in xaudio2.idl and xaudio2fx.idl.
      xaudio2/tests: Fix the IID_IXAPO query.

Zhiyi Zhang (6):
      gdiplus/tests: Add pen custom line cap record and play back tests.
      gdiplus: Support recording pen custom start line cap.
      gdiplus: Support recording pen custom end line cap.
      gdiplus: Support playing back pen custom start line cap.
      gdiplus: Support playing back pen custom end line cap.
      winegstreamer: Fix check for non-zero padding in mf_media_type_from_wg_format_video().

Ziqing Hui (5):
      mf/tests: Test input type for WMA decoder DMO.
      mf/tests: Test output type for WMA decoder DMO.
      mf/tests: Split input type tests from test_wmv_decoder_media_object.
      mf/tests: Split output type tests from test_wmv_decoder_media_object.
      mf/tests: Split size info tests from test_wmv_decoder_media_object.