Wine Announcement

The Wine development release 8.11 is now available.

What's new in this release:
  - More mouse cursor clipping improvements.
  - Support for TLS alerts.
  - Increased available address space in WoW64 mode.
  - Various bug fixes.

The source is available at:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git
repository. Check 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.11 (total 26):

 - #48811  StarCraft II fails to load in staging
 - #51640  LibreOffice 7.2.0 crashes while browsing directories
 - #53682  wineboot shows "user_check_not_lock BUG: holding USER lock" on aarch64 since wine-7.14
 - #54380  Installed windows driver triggers a window when running any program in winXP mode (unimplemented function ntoskrnl.exe.Ke386QueryIoAccessMap)
 - #54442  experimental wow64 mode: doesn't show some graphical windows
 - #54738  msi:action - The 64-bit test_register_class_info() fails in Wine
 - #54742  The 64-bit advapi32:registry breaks the 32-bit test_redirection() in Wine
 - #54751  The 64-bit advapi32:registry breaks test_CoGetPSClsid() in ole32:compobj in Wine
 - #54797  Lunar Magic 3.33: Crashes with BadWindow unless WINEDEBUG=+all
 - #54848  dnsapi:query - test_DnsQuery() fails on Rémi's Wine test machines
 - #54980  wine lost ability to correctly handle printer(CUPS)-supplied fonts (several programs)
 - #54993  Framemaker 8 crashes in internal search operation
 - #55013  user32:monitor - test_EnumDisplayMonitors() sometimes fails on Linux
 - #55016  xaudio2_8:xaudio2 - test_simple_streaming() crashes on Windows 8+
 - #55027  Microsoft Office: IME result string may get doubled when edit is done
 - #55042  IDictionary::Add() fails to add entries with numerical keys that have the same hashes
 - #55043  Z-Vision for Windows: Assertion failed when clicking "LOAD" button.
 - #55046  ALT-TAB broken with virtual desktop and capture mouse (regression: 8.9 -> 8.10)
 - #55047  d3d test_cursor_clipping() fails
 - #55050  Wine stucks when creating prefix
 - #55051  Build regression in wine 8.10 using clang on aarch64 (error in backend: Invalid register name "x18")
 - #55055  Japanese IME fails to clear composition string when deleting the only remaining character
 - #55074  Multiple apps fail to show anything after launch in virtual desktop mode (Steam, Ubisoft Connect)
 - #55088  Program crashes when Common Dialog File open function is called
 - #55091  preloader build failure with GOTPCREL relocation
 - #55097  cmd.exe does not handle PATH with leading or sequential semicolons


Changes since 8.10:

Akihiro Sagawa (1):
      commdlg: Fix dialog template parser when caption starts with a DBCS character.

Alex Henrie (21): Fix memory leak on error path in session_worker_thread_cb (scan-build).
      shell32: Fix memory leak on error path in FolderItems_Constructor (scan-build).
      rpcrt4: Don't use GetProcAddress for ole32 functions.
      wldap32: Clean up LDAP_OPT_API_INFO.
      wusa: Zero out identity on error path in read_identity.
      msi: Fix memory leak on error path in MSI_OpenPackageW (scan-build).
      msi: Fix double free on error paths in TransformView_Create (scan-build).
      winhttp: Fix memory leak on error path in request_get_codepage (scan-build).
      msi: Fix memory leaks in HANDLE_CustomType23 (scan-build).
      combase: Don't export hProxyDll or rpc_execute_call.
      comdlg32: Don't use GetProcAddress for SHSimpleIDListFromPath.
      comctl32: Remove duplicate declarations of MONTHCAL functions.
      hhctrl: Initialize item->items to NULL in parse_index_sitemap_object (scan-build).
      urlmon: Don't export urlmon_instance.
      wininet: Don't overallocate in urlcache_encode_url_alloc (scan-build).
      conhost: Use correct pointer type in edit_line_transpose_words (scan-build).
      advpack: Check the return value of adv_install in DoInfInstallW (scan-build).
      wbemprox: Fix memory leak on error path in enum_key (scan-build).
      sane: Fix use after free in create_item (scan-build).
      crypt32: Don't export CRYPT_CopyReversed.
      ws2_32: Don't export num_startup.

Alexandre Julliard (39):
      include: Remove redundant __WINE_USE_MSVCRT checks.
      makefiles: Define WINE_UNIX_LIB for all files that are built for Unix.
      loader: Make the loader position-independent on 64-bit.
      winegcc: Fix an uninitialized variable warning in the PE build.
      wow64: Don't force wow64 dlls to load at low addresses.
      kernel32/tests: Fix the PROCESS_BASIC_INFORMATION exit status type.
      server: Also enforce the size of varargs data structures.
      ntdll: Support the lower memory limit in MEM_ADDRESS_REQUIREMENTS.
      ntdll: Allocate 64-bit and kernel stacks in high memory.
      ntdll: Load modules with a high base address in high memory.
      ntdll: Make only the necessary pages writable in the ARM64EC code map.
      kernelbase: Don't define stdcall functions on non-i386.
      ntdll: Don't define stdcall functions on non-i386.
      wow64cpu: Don't define stdcall functions on non-i386.
      include: Don't support stdcall functions on non-i386.
      makefiles: Pass the dll extension from configure.
      makefiles: Make the dll extension a per-architecture variable.
      makefiles: Don't build native import libraries for PE-only build.
      makefiles: Disable native import libraries on ARM64.
      conhost: Use nameless union/structs.
      explorer: Use nameless union/structs.
      ipconfig: Use nameless union/structs.
      netstat: Use nameless union/structs.
      oleview: Use nameless unions/structs.
      regedit: Use nameless unions/structs.
      services: Use nameless unions/structs.
      include: Disallow fastcall functions in Unix libraries.
      loader: Force building the main loader as PIE on 64-bit.
      loader: Always build the main loader as PIE if we have a preloader.
      loader: Build the preloader as PIE on 64-bit.
      winecfg: Use nameless unions/structs.
      winedbg: Use nameless unions/structs.
      winefile: Use nameless unions/structs.
      winemenubuilder: Use nameless unions/structs.
      winhlp32: Use nameless unions/structs.
      wordpad: Use nameless unions/structs.
      wow64: Map a copy of ntdll to build the syscall table.
      ntdll: Implement _errno().
      wow64: Don't load the 32-bit ntdll as an image to avoid debugger notifications.

Alistair Leslie-Hughes (1):
      wbemdisp: Support DISPATCH_PROPERTYGET in Object Invoke.

Andrey Gusev (1):
      include: Add flags in D3D11_RESOURCE_MISC_FLAG.

Bernhard Kölbl (2):
      mf: Clear queued topologies on session shutdown.
      mf: Don't leak sink in session_get_renderer_node_service().

Connor McAdams (10):
      uiautomationcore: Store all events in an event list.
      uiautomationcore: Clone UiaCacheRequest structure passed to UiaAddEvent.
      uiautomationcore: Add support for cloning UiaCondition structures.
      uiautomationcore: Implement UiaRaiseAutomationEvent.
      uiautomationcore: Unconditionally match all events registered on the desktop node with a scope of subtree.
      uiautomationcore/tests: Add tests for cross-process events.
      uiautomationcore: Add support for creating serverside events.
      uiautomationcore: Prevent creation of duplicate serverside events.
      uiautomationcore: Add support for advising providers of events on serverside events.
      uiautomationcore: Implement UiaEventAddWindow.

Daniel Lehman (1):
      wininet: Free temporary buffer in InternetQueryOptionW loop.

David Kahurani (3):
      gdiplus: Allow NULL format in GdipAddPathString.
      msi: Reject shorter/longer lines in MsiDatabaseImportA.
      msi: Convert newlines to alternate representation when exporting.

Davide Beatrici (21):
      winepulse: Move main loop logic into mmdevapi.
      winealsa: Implement main_loop in unixlib.
      winecoreaudio: Implement main_loop in unixlib.
      wineoss: Implement main_loop in unixlib.
      winepulse: Move AudioClient's Initialize's exclusive mode check into unixlib.
      winepulse: Move get_application_name into mmdevapi.
      winealsa: Call mmdevapi's get_application_name.
      winecoreaudio: Call mmdevapi's get_application_name.
      wineoss: Call mmdevapi's get_application_name.
      winepulse: Move stream_release into mmdevapi.
      winealsa: Use mmdevapi's stream_release.
      winecoreaudio: Use mmdevapi's stream_release.
      wineoss: Use mmdevapi's stream_release.
      winealsa: Use mmdevapi's set_stream_volumes.
      winecoreaudio: Use mmdevapi's set_stream_volumes.
      wineoss: Use mmdevapi's set_stream_volumes.
      winepulse: Use mmdevapi's set_stream_volumes.
      winealsa: Use create_stream's channel count in AudioClient's Initialize.
      winecoreaudio: Use create_stream's channel count in AudioClient's Initialize.
      wineoss: Use create_stream's channel count in AudioClient's Initialize.
      winepulse: Refactor AudioClient's Initialize to match other drivers.

Eric Pouech (9):
      kernel32/tests: Extend console inheritance tests.
      include/dbghelp.h: Added some missing definitions.
      dbghelp: Create implementation basis for SymSrvGetFileIndex*().
      dbghelp/tests: Add tests for SymSrvGetIndexesInfo.
      dbghelp/tests: Add tests for SymSrvGetInfoIndexes.
      dbghelp: Implement SymSrvGetFileIndexInfo for PE modules.
      dbghelp/tests: Add explicit tests about loading ELF modules.
      dbghelp: Fix reading Wine loader's base address.
      winedump: Tidy up print out in minidumps.

Etaash Mathamsetty (2):
      ntdll: Allow RtlAllocateHeap to crash with invalid handle.
      user32: Add GetSystemDpiForProcess export.

Fabian Maurer (3):
      wineps.drv: Use afm FamilyName instead of FullName.
      mmdevapi: Don't redefine stream_handle (gcc 4.3).
      gdiplus: Refactor and add comments for easier understanding.

Gabriel Ivăncescu (27):
      jscript: Correctly implement context for indirect eval calls in ES5+ modes.
      jscript: Fix addressing invalid memory if ref is an argument.
      jscript: Fix function leak in scope_init_locals.
      jscript: Get rid of jsobj in scope_chain_t.
      jscript: Don't use iface_to_jsdisp where it's not necessary to grab it.
      jscript: Store detached args into a scope's specialized buffer.
      jscript: Start from the last argument when adding them to named locals.
      jscript: Get rid of the function instance in arguments obj.
      mshtml: Traverse and unlink AreaElements properly.
      mshtml: Fix style declaration leak in HTMLStyle_Create.
      mshtml: Fix nsIDOMNode leak when retrieving an item in the node list.
      mshtml: Fix node leak when enumerating nodes.
      mshtml: Handle failure and cleanup properly when enumerating nodes.
      mshtml: Fix leaks in create_all_list.
      mshtml: Fix element leaks in get_elem_source_index.
      mshtml: Fix text node leak in Element innerText setter.
      mshtml: Fix text node leak in OptionElement text setter.
      mshtml/tests: Fix CurrentStyle leak in test_style_filters.
      jscript: Use jsstr_empty instead of allocating empty string.
      jscript: Implement `caller` for function instances and prototype.
      jscript: Throw error when accessing `arguments` prop of bind functions.
      jscript: Don't expose Function.prototype.arguments in non-html mode.
      jscript: Store ref to scope directly instead of frame in arguments object.
      jscript: Don't use detached arguments buffer in html mode.
      jscript: Always create detached variable objects with no class.
      jscript: Properly handle passing undefined value to Number.toPrecision.
      jscript: Properly handle passing undefined value to Number.toString in ES5+ mode.

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

Giovanni Mascellani (5):
      dxgi: Do not uselessly pass queue_family_index around.
      dxgi: Remove now-useless function d3d12_swapchain_create_buffers().
      dxgi: Do not destroy D3D12 resources unless requested.
      dxgi: Only create D3D12 resources when necessary.
      dxgi: Rename and split d3d12_swapchain_destroy_buffers().

Hans Leidekker (1):
      secur32: Add support for sending TLS alerts.

Huw D. M. Davies (2):
      winepulse: Don't overwrite the result in the insufficient buffer case.
      winepulse: Return E_NOTIMPL when the property is not found.

Jacek Caban (3):
      user32: Remove no longer used setupapi import.
      win32u: Remove duplicated d3dkmdt.h include.
      configure: Use -fvisibility=hidden when building with msvcrt and cross compiler is not available.

Jactry Zeng (2):
      atl/tests: Move regular DWORD tests into a loop.
      atl: Convert REG_DWORD to a correct type.

Jinoh Kang (1):
      loader: Set the visibility of symbols in preloader to "hidden".

Liam Middlebrook (2):
      cmd/tests: Add tests for PATH separator.
      cmd: Fix empty strings between PATH separators.

Nikolay Sivov (4):
      scrrun/dictionary: Compare key values in addition to their hashes.
      oleaut32/recinfo: Use CRT allocation functions.
      oleaut32/recinfo: Use CoTaskMem* allocations for the record data.
      oleaut32: Trace typelib guid in GetRecordInfoFromGuids().

Olivier F. R. Dierick (1):
      ntoskrnl.exe: Add Ke386QueryIoAccessMap stub.

Paul Gofman (1):
      crypt32: Do not create persistent container in CRYPT_CreateKeyProv().

Rémi Bernon (41):
      server: Pass the message code to get_hardware_msg_bit.
      server: Use hardware message category when checking filter.
      imm32: Avoid resizing IMCC to zero-size buffer.
      winex11: Remove now unnecessary WM_X11DRV_CLIP_CURSOR_NOTIFY.
      win32u: Move grab_pointer registry option from winex11.
      win32u: Add a clipping_reset member to user_thread_info.
      win32u: Add a clipping_cursor member to user_thread_info.
      winex11: Move clip_fullscreen_window foreground check inside it.
      win32u: Move fullscreen window cursor clipping from winex11.
      server: Update desktop cursor window when cursor pos changes.
      server: Keep track of the current desktop cursor handle.
      server: Introduce and send new WM_WINE_SETCURSOR hardware message.
      win32u: Add a hwnd parameter to SetCursor driver entry points.
      win32u: Notify drivers of cursor changes on WM_WINE_SETCURSOR.
      wineandroid: Set the window cursor immediately in SetCursor.
      winex11: Set the window cursor immediately in SetCursor.
      server: Update the DF_WINE_CREATE_DESKTOP desktop flag on opening.
      win32u: NtUserGetObjectInformation returns a BOOL, not NTSTATUS.
      winex11: Don't grab the cursor if another process is focused.
      winex11: Simplify the cursor clipping retry mechanism.
      winex11: Replace the clipping message HWND with a BOOL flag.
      winegstreamer: Introduce new stream_descriptor_set_tag helper.
      winegstreamer: Pass a struct wg_parser_stream to media_stream_create.
      winegstreamer: Factor the creation of the first stream media type.
      winegstreamer: Introduce new init_video_media_types helper.
      winegstreamer: Introduce new init_audio_media_types helper.
      winegstreamer: Pass the stream descriptor to media_stream_create.
      win32u: Remove unnecessary set_cursor new_clip rect copy.
      server: Pass set_cursor flags in WM_WINE_CLIPCURSOR wparam.
      win32u: Use a specific flag instead of shrinking the clip rect.
      winegstreamer: Remove colorimetry and chroma-site from wg_format caps.
      winegstreamer: Remove the callback mechanism from wg_allocator.
      winegstreamer: Move release_memory_sample helper around.
      winegstreamer: Lazily allocate wg_allocator unix memory.
      imm32/tests: Test how deleting a character can behave.
      imm32: Use offsets instead of lengths to decide on sending updates.
      winex11: Report empty preedit string when result string is committed.
      winex11: Make sure HIMC is opened before sending IME updates.
      win32u: Split default UpdateDisplayDevices implementation to a helper.
      win32u: Move virtual desktop display settings logic from winex11.
      configure: Build x86_64 PE code with mcmodel=small.

Shaun Ren (8):
      sapi: Partially implement ISpMMSysAudio::SetState.
      sapi: Free completed buffers asynchronously in SpMMAudio.
      sapi: Implement ISpMMSysAudio::Write.
      sapi: Implement ISpMMSysAudio::EventHandle.
      sapi: Implement ISpVoice::SetOutput.
      sapi: Implement ISpVoice::Set/GetVoice.
      sapi: Implement ISpVoice::Set/GetRate.
      sapi: Implement ISpVoice::Set/GetVolume.

Tatsuyuki Ishi (3):
      win32u: Move QueryDisplayConfig from user32.
      win32u: Cleanup naming and log messages for QueryDisplayConfig.
      win32u: Avoid SEGV in QueryDisplayConfig when run as service.

Tim Clem (1):
      ntdll: Treat read faults on readable pages as write faults on macOS.

Vladislav Timonin (2):
      shell32: Show >4GB values in size columns of My Computer.
      shell32: Don't show size for inaccessible drives in My Computer.

Zebediah Figura (1):
      xaudio2/tests: Fix the IID_IXAudio28 declaration.

Ziqing Hui (1):
      winegstreamer: Implement Flush for WMV decoder DMO.