Wine Announcement

The Wine development release 6.10 is now available.

What's new in this release (see below for details):
  - Mono engine updated to version 6.2.0, with upstream updates.
  - Shell folders naming scheme follows recent Windows.
  - WinePulse library converted to PE.
  - More math functions from Musl in the C runtime.
  - Various bug fixes.

The source is available from the following locations:

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 6.10 (total 25):

  15781  Multiple Office/MSAccess applications fail on startup due to 'ICreateTypeInfo2_fnDeleteImplType' stub (AllInOne-Office 4.x/5.11, Acclaim Cashbook)
  29903  Multiple games and applications fail to enumerate processes due to 'wtsapi32.WTSEnumerateProcessesW' stub (Visual Studio 2005, .NET 2.0 SDK DbgCLR, Akamai DL Manager, Dekaron)
  31310  TIE: Fighter: Collectors Edition (1998 Tie Fighter collectors series, remake of the original 1995 DOS version) crashes on startup
  34746  Dino Crisis Demo doesn't play video sequences even though Indeo codecs are installed
  36010  Changing font resolution on winecfg changes default main font to Tahoma
  41253  GZDoom Builder 2.3 (.NET 3.5 app) crashes with Wine-Mono when trying to open new project or existing map
  46320  Multiple applications and games need support for Windows Vista+ User Shell Folder layout, specifically 'Local AppData' (Amazon Kindle for PC)
  47180  Nocturne unhandled exception bug on startup
  47915  League of Legends 9.20: Crash after champ select
  48043  user32:dce has a pair of random failures
  48094  Simplify debugging test timeouts
  48507  osu! icons in the setting and music player are not being rendered
  49663  Performance regression in TrackMania Nations Forever
  49801  Freight Yard Manager 5.x crashes on start with wine-mono
  50147  Microsoft WebView2 "evergreen bootstrapper"/installer needs IStream::CopyTo()
  50224  Grand Theft Auto 4: Crashes when starting the game
  50366  Starcraft Remastered fails to create a local LAN game (needs undocumented socket "recv" ioctl 0x12014)
  50613  several Wine Mono tests fail to load a referenced assembly on x86_64
  50974  Multiple applications fail to open \Device\Afd\xxx with non-empty final element (Rust applications using the Mio or Smol libraries, Starcraft Remastered)
  50975  Multiple applications need an implementation of undocumented socket "poll" ioctl 0x12027 (Rust applications using the Mio or Smol libraries, Starcraft Remastered)
  50987  dinput8:device fails on the w10pro64_fr TestBot VM
  50988  New ProcessBasicInformation() failure in kernel32:process
  50989  ntdll:time: New intermittent QpcSystemTimeIncrement failure
  51188  test_user_shared_data() fails in ntdll:virtual
  51209  Regression: Wine-mono installers in the parent folder of build trees can not be found


Changes since 6.9:

Alex Henrie (5):
      kernel32: Fix return type of GetMaximumProcessorGroupCount.
      kernel32: Reimplement GetActiveProcessorGroupCount on top of GetLogicalProcessorInformationEx.
      kernel32: Reimplement GetActiveProcessorCount on top of GetLogicalProcessorInformationEx.
      kernel32: Reimplement GetMaximumProcessorCount on top of GetLogicalProcessorInformationEx.
      kernel32: Reimplement GetMaximumProcessorGroupCount on top of GetLogicalProcessorInformationEx.

Alexandre Julliard (22):
      ntdll: Replace __wine_make_process_system by a Wine-specific NtSetInformationProcess() class.
      ntdll: Store debug options in the PEB memory block.
      ntdll: Fetch the debug channels from the PEB memory block on the PE side.
      taskmgr: Fetch the debug channels from the PEB memory block.
      ntdll: Always put the pthread stack at the top of the 64-bit stack if there's one.
      server: Use a standard user APC also for timers.
      ntdll: Pass the result status to call_user_apc_dispatcher().
      ntdll: Implement NtTestAlert().
      ntdll: Pass an extra context arguments to APC functions on 64-bit.
      ntdll: Fill the Wow64 PEB and process parameters.
      ntdll: Free the initial process parameters once they are copied.
      ntdll: Remove no longer used syswow64 directory string.
      kernel32: Fix GetLogicalProcessorInformationEx() usage.
      winebuild: Store all parameters on the stack for syscall thunks on ARM.
      winebuild: Add support for multiple syscall descriptor tables.
      ntdll: Store exception jump buffer in the per-thread data.
      ntdll: Get rid of raise_func_trampoline() on x86-64.
      ntdll: Use a single syscall dispatcher controlled by global flags on x86-64.
      ntdll: Use a single syscall dispatcher controlled by global flags on i386.
      ntdll: Get rid of signal_init_syscalls().
      ntdll: Use appropriate context constants where possible.
      kernelbase: Move CopyContext() implementation to ntdll.

Alistair Leslie-Hughes (3):
      wbemprox: Support only getting type in record_get_value.
      wbemprox: Support using record in IWbemClassObject Next.
      gdi32: Don't override FontSubstitutes on a DPI only change.

Andrew Eikum (5):
      shell32: Use stored registry path for known folder symlinks.
      shell32: Use winvista+ AppData paths.
      shell32: Calculate known folder paths from parent and relative path.
      shell32/tests: Add tests to show relative known folder paths match SHGetKnownFolderPath.
      shell32: Use correct environment substitution for FOLDERID_Public.

Anton Baskanov (6):
      quartz/tests: Test that IMediaPosition is also checked when renderers are counted.
      quartz: Check for IMediaPosition when counting renderers.
      strmbase: Don't reset EOS on renderer paused->running state transition.
      strmbase: Defer EC_COMPLETE until the renderer is running.
      quartz/dsoundrender: Don't reset EOS on paused->running state transition.
      quartz/dsoundrender: Defer EC_COMPLETE until running.

Arkadiusz Hiler (1):
      dinput8: Use scan codes to test uAppData.

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

Austin English (1):
      readme: Document Libera Chat migration.

Damjan Jovanovic (4):
      shell32: Fix a lock leak.
      shell32: Support the CF_HDROP format too when pasting from the context menu.
      shell32: Use the paste_pidls() helper function for the CFSTR_SHELLIDLISTW format too.
      msxml3/tests: Add some regex tests.

Daniel Lehman (2):
      ntdll/tests: Clean up temp file.
      ntdll: Silence clang warning.

Dmitry Timoshkov (4):
      msxml3: Implement ::get_attributes() for "xml" processing instruction node.
      msxml3: Implement IXMLDOMNamedNodeMap::getNamedItem() for a processing instruction node.
      msxml3: When saving XML use encoding specified in the processing instruction.
      wininet: Reset buffer size before each call to HTTP_HttpQueryInfoW.

Esme Povirk (4):
      gdiplus: Implement reference counting for private font families.
      mscoree: Update Wine Mono to 6.2.0.
      sppc: Add stub dll.
      slc: Move shared exports to sppc.

Floris Renaud (1):
      po: Update Dutch translation.

François Gouget (12):
      ucrtbase/tests: Add the trailing linefeed to an ok() message.
      kernel32/tests: Fix the spelling of an ok() message.
      ntdll: Update the STATUS_NO_SUCH_DEVICE error mapping.
      ntdll/tests: Fix the XState AllFeatureSize check on old CPUs.
      user32/tests: Fix a typo in a comment.
      user32/tests: Trace GetLastError() when OpenClipboard() fails in edit.
      ole32: Fix the spelling of a comment.
      user32: Debugstr_format() should not modify the last error.
      user32/tests: Use wine_{push,pop}_context() to simplify test_synthesized().
      user32/tests: Use winetest contexts to simplify test_string().
      user32/tests: Protect OpenClipboard() from interference.
      user32/tests: Protect GetOpenClipboardWindow() from interference.

Giovanni Mascellani (2):
      mf/samplegrabber: Handle paused state.
      winegstreamer: Improve reported supported rates values for the media source.

Hans Leidekker (3):
      webservices: Buffer whole messages to be sent.
      webservices: Properly initialize messages.
      webservices: Support IPv6 address format in WsDecodeUrl.

Haoyang Chen (1):
      rsaenh: Fix a typo in a comment.

Henri Verbeet (1):
      wined3d: Allow zero width/height for fullscreen swapchains as well in wined3d_swapchain_resize_buffers().

Hugh McMaster (7):
      reg: Remove two unused string resources.
      reg: Group resource IDs by source location.
      reg: Partially implement the 'copy' command.
      reg: Support recursion in the 'copy' command.
      reg: Fail if the source and destination keys are the same when copying.
      reg/tests: Test whether the 'copy' command copies user-defined key classes.
      reg: Prompt the user to confirm whether they want to overwrite existing values when copying a key.

Jacek Caban (26):
      winepulse: Move pulse_get_position to unix lib.
      winepulse: Simplify checks for stream being initialized.
      winepulse: Move pulse_is_started to unix lib.
      winepulse: Simplify IAudioStreamVolume::SetChannelVolume implementation.
      winepulse: Simplify IAudioStreamVolume::GetChannelVolume implementation.
      winepulse: Allocate ACImpl volumes when channel count is known.
      winepulse: Build with msvcrt.
      ntdll: Make get_machine_wow64_dir static.
      ntdll: Use DECLSPEC_HIDDEN for a few more symbols.
      winepulse: Use event handle to signal main loop readiness.
      winepulse: Use a critical section for PE-side locking.
      winepulse: Use native memory allocators where possible.
      winepulse: Use NtAllocateVirtualMemory for tmp_buffer.
      winepulse: Use NtAllocateVirtualMemory for local_buffer.
      d3dcompiler: Use return value in read_dword.
      winevulkan: Reflect USE_STRUCT_CONVERSION in _host typedefs.
      winevulkan: Remove no longer needed #ifdefs from dispatch tables.
      winevulkan: Remove no longer needed #ifdefs.
      winevulkan: Directly use host vkGetPhysicalDeviceProperties in wine_vkCreateDevice.
      winevulkan: Make core function thunks static.
      winegcc: Use -soname for unix libs.
      winegcc: Link unix libs directly to native libraries.
      ntdll: Introduce wine_unix_call.
      makedep: Make unix libs depend on
      winepulse: Wrap unix call parameters in structs.
      winepulse: Use syscall interface to call unix lib.

Jactry Zeng (4):
      riched20/tests: Simplify tests of IRichEditOle_InsertObject() by improving CHECK_REOBJECT_STRUCT().
      riched20/tests: Add INSERT_REOBJECT() for simplifying tests of IRichEditOle_InsertObject().
      riched20/tests: Test IRichEditOle_InsertObject() with specified character position.
      riched20/tests: Test ITextServices_TxGetText() with OLE obejct.

Jefferson Carpenter (2):
      msxml3: Null check newChild in DOMDocument insertBefore.
      msxml3: Null check newNode in domelem insertBefore.

Jiangyi Chen (1):
      gdi32: Delete the external font reg key when face's name matches but the file path does not.

Lauri Kenttä (1):
      po: Update Finnish translation.

Matteo Bruni (6):
      d3dcompiler: Fix typo in struct d3dcompiler_shader_reflection.
      wined3d: Don't skip FFP vertex pipeline state handlers when STATE_VDECL is dirty.
      wined3d: Rename gen_ffp_frag_op().
      wined3d: Avoid Y correction on dFdy when using FBO ORM.
      wined3d: Remove access to gl_info from find_ps_compile_args().
      wined3d: Don't pass the swizzle map to find_vs_compile_args() separately.

Michael Stefaniuc (1):
      fusion/tests: Use wide-char string literals.

Nikolay Sivov (22):
      mfplat/allocator: Apply default bindflags only for RGBA formats.
      evr/mixer: Preserve output stream types order.
      evr/mixer: Return cloned instances for output type candidates.
      evr/mixer: Test format only when setting output type.
      mfplat: Add some attributes for tracing.
      mf/session: Do not drop pending commands when clearing current presentation.
      mfplay: Enable source type enumeration.
      mf/topology: Implement MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES connection method.
      mfmediaengine: Add missing initialization of vertex buffer components (Coverity).
      propsys: Add support for VT_VECTOR|VT_UI1 type in PropVariantCompareEx().
      evr/mixer: Set aperture attributes for output type candidates.
      evr/presenter: Use correct sample size attribute value when setting output mixer type.
      evr/presenter: Make sure to use positive stride for output mixer types.
      mfplat: Implement MFInitVideoFormat_RGB().
      evr: Add a forward for MFGetStrideForBitmapInfoHeader().
      mfmediaengine: Enable source type enumeration.
      msctf: Maintain context reference in ranges.
      msctf/range: Remove unused argument from range creation helper.
      msctf/range: Update to ITfRangeACP.
      msctf: Add ITextStoreACPServices::CreateRange().
      mfplat: Remove remaining typedef for bytestream object structure.
      winegstreamer: Fix assert condition.

Paul Gofman (4):
      ntdll/tests: Do not test old xstate structure details in test_user_shared_data().
      server: Check for system regs before suspending for ptrace.
      ntdll/tests: Don't consider zero 'AllFeatures' value in USD broken.
      server: Do not allow parenting non-empty job.

Piotr Caban (37):
      msvcrt: Remove cos from unixlib.
      msvcrt: Import tan implementation from musl.
      msvcrt: Import cosf implementation from musl.
      msvcrt: Import sinf implementation from musl.
      msvcrt: Import tanf implementation from musl.
      msvcrt: Update search position when no token was found in strtok.
      msvcrt: Import acoshf implementation from musl.
      msvcrt: Import acosh implementation from musl.
      msvcrt: Import asinhf implementation from musl.
      msvcrt: Import asinh implementation from musl.
      msvcrt: Import atanf implementation from musl.
      msvcrt: Import atanh implementation from musl.
      user32: Depend on SetWindowPos to refresh window manager hints in SetWindowRgn.
      msvcrt: Import expm1 implementation from musl.
      msvcrt: Import expm1f implementation from musl.
      msvcrt: Import cosh implementation from musl.
      msvcrt: Import coshf implementation from musl.
      msvcrt: Import sinh implementation from musl.
      msvcrt: Import sinhf implementation from musl.
      msvcrt: Import tanh implementation from musl.
      msvcrt: Import tanhf implementation from musl.
      msvcrt: Use __scalbn helper in ldexp implementation.
      msvcrt: Import fma implementation from musl.
      msvcrt: Import frexp implementation from musl.
      msvcrt: Import frexpf implementation from musl.
      msvcrt: Import _hypot implementation from musl.
      msvcrt: Import _hypotf implementation from musl.
      msvcrt: Import log implementation from musl.
      msvcrt: Import logf implementation from musl.
      msvcrt: Import log1p implementation from musl.
      msvcrt: Import log1pf implementation from musl.
      msvcrt: Import log10 implementation from musl.
      msvcrt: Import log10f implementation from musl.
      msvcrt: Import log2f implementation from musl.
      msvcrt: Import log2 implementation from musl.
      msvcrt: Import lgamma implementation from musl.
      msvcrt: Import lgammaf implementation from musl.

Roberto Pungartnik (3):
      po: Update Brazilian Portuguese translation.
      ntdll: Fix IOCTL_AFD_WINE_SENDMSG irda member misreference.
      po: Update Brazilian Portuguese translation.

Robin Ebert (1):
      ntdll: Fix a file descriptor leak.

Rémi Bernon (52):
      kernelbase: Don't strip leading dots in relative paths.
      msvcrt: Set next_token when str is empty in wcstok_s.
      dssenh/tests: Add CryptAcquireContextA last error check.
      dssenh: Return NTE_BAD_KEYSET when key cannot be opened.
      dssenh: Only fill hash buffer when it's provided.
      dinput8/tests: Flush events after creating window.
      dinput: Use IDirectInputDevice8W interface consistently.
      dinput: Use generic WtoA wrappers when possible.
      dinput: Move IDirectInputDeviceA wrappers to ansi.c.
      dinput/tests: Check IDirectInputDevice_EnumObjects error codes.
      dinput: Implement IDirectInputDevice_EnumObjects WtoA conversion.
      dinput/tests: Check IDirectInputDevice2AImpl_GetObjectInfo error codes.
      dinput: Factor out IDirectInputDevice_GetObjectInfo WtoA conversions.
      dinput: Implement IDirectInputDevice_GetEffectInfo WtoA conversion.
      dinput: Implement IDirectInputDevice_EnumEffects WtoA conversion.
      dinput: Implement IDirectInputDevice_EnumEffectsInFile WtoA conversion.
      dinput: Implement IDirectInputDevice_WriteEffectToFile WtoA conversion.
      dinput: Implement IDirectInputDevice_GetImageInfo WtoA conversion.
      dinput: Factor out IDirectInputDevice_GetCapabilities WtoA conversions.
      dinput: Factor out IDirectInputDevice_GetDeviceState WtoA conversions.
      dinput: Factor out IDirectInputDevice_GetDeviceInfo WtoA conversions.
      dinput: Factor out IDirectInputDevice_BuildActionMap WtoA conversions.
      dinput: Factor out IDirectInputDevice_SetActionMap WtoA conversions.
      dinput: Make device creation error handling consistent.
      dinput: Introduce direct_input_device_alloc helper.
      dinput: Factor out IDirectInputDevice ansi vtable.
      dinput: Prefer IDirectInputW interfaces over IDirectInputA.
      dinput: Move IDirectInput8 WtoA wrappers to ansi.c.
      dinput: Move IDirectInput7 WtoA wrappers to ansi.c.
      dinput: Factor out device creation interface queries.
      dinput: Remove the need for ANSI enum_device callback.
      dinput: Prevent a device interface leak when enumerating.
      dinput: Free axis_map when joystick device is freed.
      dinput: Rename wReserved to wReportId in DIDEVICEOBJECTINSTANCE.
      server: Add hardware_msg_data size for variable size messages.
      user32: Inform rawinput_from_hardware_message of available buffer size.
      user32: Implement WM_INPUT / RIM_TYPEHID message dispatch.
      server: Support variable sized hardware_msg_data allocation.
      server: Send HID report data with the WM_INPUT messages.
      include: Add HID generic multi axis controller usage.
      include: Add HID vendor defined usage pages.
      winebus.sys: Use macros to define HID reports.
      hidclass.sys: Use msvcrt allocation functions.
      hidclass.sys: Use nameless unions.
      hid: Use nameless unions.
      user32: Use nameless unions in rawinput.c.
      hidclass.sys: Factor HIDP_BUTTON_CAPS with HIDP_VALUE_CAPS.
      winebus.sys: Add some buttons to HID mouse input report.
      winebus.sys: Add some buttons to HID keyboard input report.
      mmdevapi: Make MMDevEnumerator a static variable.
      mmdevapi: Load devices on driver initialization.
      mmdevapi: Use a struct list to keep device list.

Zebediah Figura (65):
      server: Don't change the status of an already terminated async.
      ntdll: Avoid accessing the I/O status block in wait_async().
      ntdll: Move struct async_fileio to unix_private.h.
      ntdll: Implement IOCTL_AFD_RECV.
      ws2_32/tests: Add some tests for IOCTL_AFD_RECV.
      user32: Handle monochrome icons in CreateIcon() and CreateCursor() instead of CreateIconIndirect().
      user32: Implement stretching of cursor and icon objects in CopyImage().
      user32: Reimplement CopyIcon() on top of CopyImage().
      user32: Implement InternalGetWindowIcon().
      d3d11/tests: Add a couple of extra tests for SRV/RTV conflict.
      wined3d: Check for SRV/RTV binding conflicts per wined3d_state.
      d3d11/tests: Add some tests for Map() on deferred contexts.
      d3d11/tests: Add some tests for UpdateSubresource() on a deferred context.
      user32: Blit the right bitmap when stretching monochrome icons in CopyImage().
      ws2_32/tests: Add some tests for opening the Afd device.
      server: Allow opening the Afd device with a file name.
      ntdll: Implement IOCTL_AFD_POLL.
      ws2_32/tests: Add tests for IOCTL_AFD_POLL.
      wined3d: Fix a spelling error in a comment.
      wtsapi32: Implement WTSEnumerateProcessesW().
      server: Mark the socket as cacheable when it is connected, marked listening, or created as connectionless.
      server: Pass -1 to set_fd_events() if the socket is not yet initialized or a not yet used TCP socket.
      server: Clear FD_OOB instead of FD_READ when receiving OOB data.
      ntdll: Introduce IOCTL_AFD_WINE_RECVMSG.
      ws2_32: Use IOCTL_AFD_WINE_RECVMSG in WS2_recv_base().
      ntdll: No longer export __wine_locked_recvmsg().
      ntdll: Introduce IOCTL_AFD_WINE_SENDMSG.
      ws2_32: Use IOCTL_AFD_WINE_SENDMSG in WS2_sendto().
      wined3d: Store the framebuffer state inline in struct wined3d_cs_clear.
      d3d11: Implement ID3D11Device::CreateDeferredContext().
      d3d11: Implement ID3D11Device1::CreateDeferredContext1().
      wined3d: Keep a list of acquired resources in struct wined3d_deferred_context.
      d3d11: Implement ID3D11DeviceContext::ClearState() using a single CS op.
      d3d11: Implement ID3D11DeviceContext::FinishCommandList().
      wined3d: Implement restoring context in wined3d_deferred_context_record_command_list().
      d3d11: Implement ID3D11DeviceContext::ExecuteCommandList().
      ntdll: Quiet some noisy ETW FIXMEs.
      ntdll: Introduce IOCTL_AFD_WINE_TRANSMIT.
      ws2_32: Use IOCTL_AFD_WINE_TRANSMIT.
      ws2_32/tests: Separate and expand tests for FIONREAD and SIOCATMARK.
      ws2_32/tests: Add more tests for FIONBIO.
      ws2_32/tests: Expand tests for SIO_KEEPALIVE_VALS.
      ws2_32/tests: Call getsockname() on the right socket.
      ws2_32/tests: Fix some more test failures on Vista and older.
      ws2_32/tests: Add some tests for unsupported socket ioctls.
      ws2_32/tests: Add more tests for SIO_GET_EXTENSION_FUNCTION_ADDRESS.
      ws2_32/tests: Expand tests for SIO_ROUTING_INTERFACE_QUERY.
      ws2_32/tests: Fix yet another test failure with Vista or older.
      ws2_32/tests: Expand tests for SIO_ADDRESS_LIST_QUERY.
      ws2_32/tests: Expand tests for SIO_GET_INTERFACE_LIST.
      ws2_32: Always return WSAEFAULT from WSAIoctl() if ret_size is NULL.
      ws2_32: Use socket_apc for WSAIoctl() completion.
      Revert "ntdll: Preserve syscall frame when calling async IO system APC.".
      server: Introduce IOCTL_AFD_WINE_FIONBIO.
      ws2_32: Use IOCTL_AFD_WINE_FIONBIO.
      server: Remove the no longer used enable_socket_event request.
      ntdll: Introduce IOCTL_WINE_AFD_COMPLETE_ASYNC.
      ws2_32: Fail with WSAEINVAL if a requested extension function is not found.
      ntdll: Introduce IOCTL_AFD_WINE_FIONREAD.
      ws2_32: Use IOCTL_AFD_WINE_FIONREAD.
      ntdll: Introduce IOCTL_AFD_WINE_SIOCATMARK.
      winebuild: Fix a typo in a comment.
      ws2_32/tests: Add more tests for sockets that cannot be accepted into.

Zhiyi Zhang (3):
      winex11.drv: Always add MWM_FUNC_CLOSE to enabled windows.
      kernel32/tests: Test GetFileAttributesExW() with a NT path not in canonical form.
      appwiz.cpl: Canonicalize paths before passing them to GetFileAttributesW().

Ziqing Hui (9):
      windowscodecs/tests: Introduce create_and_init_encoder.
      windowscodecs/tests: Add more test data for IWICDdsEncoder_SetParameters.
      windowscodecs/tests: Test CreateNewFrame for DDS encoder.
      windowscodecs: Implement IWICDdsEncoder_CreateNewFrame.
      windowscodecs: Implement DdsEncoder_CreateNewFrame on top of DdsEncoder_Dds_CreateNewFrame.
      windowscodecs/tests: Call SetParameters in create_and_init_encoder.
      windowscodecs: Implement DdsFrameEncode_Initialize.
      windowscodecs/tests: Test DDS encoder pixel format.
      windowscodecs: Implement DdsFrameEncode_SetPixelFormat.

Alexandre Julliard
[email protected]