The Wine development release 6.9 is now available.

What's new in this release (see below for details):
  - WPCAP library converted to PE.
  - Support for paper forms in the print spooler.
  - More math functions from Musl in the C runtime.
  - Various bug fixes.

The source is available from the following locations:

  https://dl.winehq.org/wine/source/6.x/wine-6.9.tar.xz
  http://mirrors.ibiblio.org/wine/source/6.x/wine-6.9.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 6.9 (total 25):

  20439  TroopMaster hangs on startup
  24631  comctl32:listview NM_HOVER tests sometimes fail
  28083  Agenda Circling Forth GPU particle demo:bunch of fixme and errors
  32749  Implement atl100.dll.AtlAxDialogBoxW to show error dialogs (Visual Studio 2010 (10.0) Express Edition)
  33846  crash on unimplemented function OpenCL.dll.clRetainDevice (clinfo)
  34314  Touhou Danmakufu 0.12m crashes on start (DMUSIC_CreateMidiOutPortImpl is a stub)
  34756  32-bit Visual C++ 2010 Express full installer throws an exception with wine-mono
  43377  msxml3:domdoc Crashes in wow64 due to double free of properties
  44813  Some applications fail when calling ntdll.NtReadFile on a directory (expect STATUS_INVALID_DEVICE_REQUEST)
  47150  Overwatch freezes when new menu music starts playing
  47866  comctl32:datetime: Fails in the Arabic locale
  47872  gdiplus:font fails in Japanese locale on Windows 10
  48054  gdi32:bitmap fails on Windows XP and 2003
  48061  WineTest: get_subtests() fails randomly
  50086  user32:monitor tests timeout
  50830  Process Hacker 2.38 crashes on unimplemented function advapi32.dll.LsaEnumerateAccounts
  50843  infosoft:infosoft has 2 failures on all Windows version up to Win10 1507
  50844  infosoft:infosoft crashes on Windows 10 1607+
  50853  Elgato Stream Deck 4.9.3 (.NET 4.5 app) installer: 'WINE_MONO_TRACE=all' crashes Wine-Mono
  51047  Significant performance regression in The Sims 2
  51080  DCS World updater - not detecting selected windows version
  51101  Regression in PGVDemo: C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\mscorwks.dll could not be loaded
  51117  Silverlight_x64.exe (part of LEGO MINDSTORMS EV3 Home Edition installer) crashes
  51131  The 64-bit msxml3:domdoc crashes on Windows
  51151  The 64-bit psapi:psapi_main fails in Wine

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

Changes since 6.8:

Alexandre Julliard (19):
      include: Remove context definitions for obsolete platforms.
      include: Define all the context structures on all platforms.
      ntdll: Implement RtlWow64GetCpuAreaInfo().
      ntdll/tests: Don't skip all tests if a function is missing.
      ntdll/tests: Add tests for Wow64 TEB and PEB information.
      server: Send TEB and PEB in the process_init_done request.
      ntdll: Always send the native TEB pointer to the server.
      ntdll: Always send the native PEB pointer to the server.
      ntdll: Add a helper function to set the thread id.
      ntdll: Allocate a separate 64-bit stack for Wow64 threads.
      ntdll: Only check the is_wow64 flag on 32-bit platforms.
      ntdll: Store the Wow64 context at the top of the 64-bit stack.
      ntdll: Make the server context conversion functions generic.
      ntdll: Pass a server context to server_select().
      ntdll: Export RtlWow64Get/SetThreadContext() on all 64-bit platforms.
      ntdll: Add platform-specific helpers for getting/setting the Wow64 context.
      kernelbase: Fix PEB address for Wow64.
      ntdll/tests: Only load RtlWow64GetCpuAreaInfo() on 64-bit.
      kernelbase: Fix process access rights in DebugActiveProcess().

Alistair Leslie-Hughes (1):
      include: Add IXMLHTTPRequest2/3 interfaces.

Andrew Eikum (2):
      shell32: Avoid gcc 11 misleading-indentation warning.
      windowscodecs: Avoid types deprecated in libtiff 4.3.

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

Biswapriyo Nath (1):
      include: Add more PROPERTYKEY declarations in propkey.h.

Brendan Shanks (1):
      wined3d: Add GPU information for Intel UHD Graphics 630.

Derek Lesho (5):
      winegstreamer: Ensure that the source reports both PCM and floating point audio formats.
      winevulkan: Add support for unwrapping handles in thunks.
      winevulkan: Use automatically-generated thunk for vkCmdExecuteCommands.
      winevulkan: Use automatically-generated thunk for vkQueueSubmit.
      winevulkan: Specify which structures to ignore in STRUCT_CHAIN_CONVERSIONS.

Dmitry Timoshkov (3):
      msxml3/tests: Execute ProcessingInstruction tests before other tests to avoid crashes under 64-bit Windows.
      msxml3/tests: Add some tests for IVBSAXContentHandler::startElement() and IVBSAXContentHandler::endElement().
      msxml3: IVBSAXContentHandler::startElement() should also check *namespaceURI for NULL.

Dongwan Kim (1):
      gdiplus: Implement GdipEnumerateMetafileSrcRectDestRectI.

Esme Povirk (1):
      slc: Return a non-zero handle from SLOpen.

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

François Gouget (16):
      infosoft/tests: Fix the infinite loop and crash on Windows 10 1607+.
      infosoft/tests: Improve the failure messages.
      infosoft/tests: Fix the pfnFillTextBuffer() return value.
      infosoft/tests: Fix refilling the text buffer.
      kernel32/tests: Fix the spelling of a comment.
      urlmon/tests: Fix the spelling of a comment.
      winevulkan: Fix the spelling of a make_vulkan comment.
      advapi32/tests: Trace GetLastError() when an event log API fails.
      advapi32/tests: Trace failures to open the event log.
      mshtml/tests: Fix the spelling of an ok() message.
      advapi32/tests: Time zones should have both MUI and regular strings.
      user32/tests: Avoid copying the clipboard buffer sizes everywhere.
      user32/tests: Fix the clipboard CF_LOCALE test.
      schedsvc: Fix the spelling of a comment.
      user32/tests: Fix the clipboard format id vs. atom table checks.
      mstask/tests: Work around race conditions with the task scheduler process.

Giovanni Mascellani (1):
      winegstreamer: Advertise support for thinned or reverse playback.

Hans Leidekker (22):
      wpcap: Move pcap support to a new Unix library.
      wpcap: Implement some more functions.
      wpcap: Build with msvcrt.
      wpcap: Use CRT memory allocators.
      wpcap: Get rid of the wine_ prefix.
      ws2_32: Add support for hints in GetAddrInfoExW.
      webservices: Implement WsGetChannelProperty(WS_CHANNEL_PROPERTY_STATE).
      webservices/tests: Wait for the listener to be ready.
      webservices: Create the connection in WsOpenChannel.
      webservices/tests: Add an async client test.
      webservices: Implement WsAbortChannel.
      webservices: Always queue an async in WsReceiveMessage and WsRequestReply.
      webservices: Add async support in WsShutdownSessionChannel.
      webservices: Add async support in WsCloseChannel.
      webservices: Add async support in WsOpenChannel.
      webservices: Add async support in WsSendMessage.
      webservices: Add async support in WsSendReplyMessage.
      webservices: Add async support in WsReadMessageStart.
      webservices: Add async support in WsReadMessageEnd.
      webservices: Add async support in WsWriteMessageStart.
      webservices: Add async support in WsWriteMessageEnd.
      webservices: Return WS_S_END when we receive an end frame.

Haoyang Chen (2):
      gdi32: Fix a memory leak.
      gdiplus: Avoid filtering of special characters.

Henri Verbeet (1):
      winedump: Make print_longlong() work on 64-bit.

Hugh McMaster (12):
      reg: Fail if access is denied when deleting registry data.
      reg: Update the STRING_VALUEALL_FAILED resource string.
      reg: Update an error message.
      reg/tests: Add further syntax tests for the 'copy' command.
      reg/tests: Add data tests for the 'copy' command.
      reg/tests: Add missing return code checks.
      reg/tests: Add complex data and hex type tests for the 'copy' command.
      reg/tests: Add more data tests for the 'copy' command.
      reg/tests: Add key and value order tests for the 'copy' command.
      reg: Fix a typo in a function definition.
      reg: Add initial support for the 'copy' command.
      reg: Fail if one or more arguments follow a help switch.

Huw D. M. Davies (7):
      include: Add winspool form string type defines.
      winspool: Forward the unicode forms functions to localspl.
      localspl: Implement EnumForms().
      localspl: Implement GetForm().
      winspool: Forward GetFormA() to GetFormW().
      winspool: Forward EnumFormsA() to EnumFormsW().
      winspool/tests: Add tests for GetFormA().

Jacek Caban (33):
      winebuild: Use clang -print-prog-name to find LLVM tools.
      winepulse: Move synchronization functions to unix lib.
      winepulse: Move pulse_test_connect to unix lib.
      winepulse: Move pulse main loop to unix lib.
      winepulse: Store channel count directly in ACImpl.
      winepulse: Introduce pulse_stream struct.
      winepulse: Move pulse stream destruction to unix lib.
      winepulse: Move pulse stream initialization to unix lib.
      winegcc: Use msvcrt by default for PE targets.
      configure: Try using pure clang as a cross compiler when mingw is not available.
      winepulse: Move pulse_read to unix lib.
      winepulse: Move pulse_stop to unix lib.
      winepulse: Store volume levels in pulse_stream.
      winepulse: Adjust pulse stream volumes for master volume.
      winepulse: Adjust pulse stream volumes for session volumes.
      winepulse: Set pulse master volume to 0 when session is muted.
      winepulse: Move mult_* functions to separated file.
      winepulse: Move pulse_write to unix lib.
      winepulse: Move timer loop to unix lib.
      msvcrt: Add sincos to importlib.
      winepulse: Move pulse_start to unix lib.
      winepulse: Move pulse_reset to unix lib.
      winepulse: Move pulse_get_render_buffer to unix lib.
      winepulse: Move release_render_buffer to unix lib.
      winepulse: Move pulse_set_event_handle to unix lib.
      winepulse: Move pulse_get_buffer_size to unix lib.
      winepulse: Move pulse_get_latency to unix lib.
      winepulse: Move pulse_get_current_padding to unix lib.
      winepulse: Move pulse_get_capture_buffer to unix lib.
      winepulse: Move pulse_release_capture_buffer to unix lib.
      winepulse: Move pulse_get_next_packet_size to unix lib.
      winepulse: Move pulse_get_frequency to unix lib.
      vulkan-1/tests: Don't destroy device if it wasn't created.

Liam Middlebrook (2):
      winevulkan: Allow some experimental VK extensions to be translated.
      winevulkan: Update to VK spec version 1.2.178.

Louis Lenders (2):
      kernel32: Remove entry for BasepDebugDump.
      advapi32: Add stub for LsaEnumerateAccounts.

Martin Storsjo (2):
      widl: Allow switching between 32 and 64 bit ARM with the -m32/64 option.
      widl: Pick up the target arch from a prefix on argv[0].

Nikolay Sivov (9):
      dwrite: Check for allocation failures of glyph buffers.
      mfplat: Use CRT allocation functions.
      include: Add missing prototypes to mfapi.h.
      mfmediaengine: Keep latest video frame buffer.
      mfmediaengine: Keep device manager reference.
      mfmediaengine: Explicitly store output video format.
      mfmediaengine: Initial implementation of TransferVideoFrame() for ID3D11Texture2D destination.
      dwrite/tests: Add some tests for HitTestTextRange().
      dwrite/layout: Remove duplicated helper.

Paul Gofman (9):
      kernel32/tests: Use sizeof(STARTUPINFOEX) for STARTUPINFOEX.STARTUPINFO.cb in process tests.
      wbemprox: Check for method existence in class_object_GetMethod().
      wbemprox: Partially implement Win32_Process.Create method.
      server: Support nested jobs.
      server: Send completions for existing job processes when adding completion port.
      kernelbase: Support PROC_THREAD_ATTRIBUTE_JOB_LIST in UpdateProcThreadAttribute().
      kernelbase: Pass PROC_THREAD_ATTRIBUTE_JOB_LIST to NtCreateUserProcess().
      ntdll: Validate job handles at process creation.
      server: Support process job lists.

Piotr Caban (50):
      msvcrt: Don't compile msvcr120 math functions in older versions.
      msvcrt: Import rint implementation from musl.
      msvcrt: Import rintf implementation from musl.
      msvcrt: Implement lrint using rint function.
      msvcrt: Implement lrintf using rintf function.
      msvcrt: Implement llrint using rint function.
      msvcrt: Implement llrintf using rintf function.
      msvcr120: Fix setting status word in fesetenv.
      msvcr120: Add feupdateenv implementation.
      msvcr120: Add feupdateenv tests.
      msvcr120: Add feraiseexcept implementation.
      msvcr120: Don't modify fenv_t members in math functions.
      msvcr120: Don't modify fenv_t members in _except1.
      ucrtbase: Store sse and x87 status in fegetenv function family.
      ucrtbase: Store sse and x87 exception in fexcept_t.
      include: Fix denormals handling in _fpclassf inline implementation.
      msvcrt: Import neabyintf implementation from musl.
      msvcrt: Import neabyint implementation from musl.
      msvcrt: Import nextafter implementation from musl.
      msvcrt: Import nextafterf implementation from musl.
      msvcrt: Call nextafter in nexttoward implementation.
      msvcrt: Import nexttowardf implementation from musl.
      msvcrt: Import cbrtf implementation from musl.
      msvcrt: Import cbrt implementation from musl.
      msvcrt: Import ceil implementation from musl.
      msvcrt: Import ceilf implementation from musl.
      msvcrt: Import floorf implementation from musl.
      msvcrt: Import floor implementation from musl.
      msvcrt: Import truncf implementation from musl.
      msvcrt: Import trunc implementation from musl.
      msvcrt: Import fmod implementation from musl.
      msvcrt: Import fmodf implementation from musl.
      msvcrt: Import modf implementation from musl.
      msvcrt: Import modff implementation from musl.
      msvcrt: Import remquo implementation from musl.
      msvcrt: Import remquof implementation from musl.
      ucrtbase: Copy fenv tests from msvcr120.
      msvcrt: Import remainder implementation from musl.
      msvcrt: Import remainderf implementation from musl.
      msvcrt: Import erfcf implementation from musl.
      msvcrt: Import erff implementation from musl.
      msvcrt: Import erfc implementation from musl.
      msvcrt: Import erf implementation from musl.
      msvcp90: Depend on compiler in _Getcvt implementation if possible.
      msvcp90: Depend on compiler in _Getcoll implementation if possible.
      msvcp90: Depend on compiler to handle returning struct in _Getctype.
      msvcrt: Import _logb implementation from musl.
      msvcrt: Import _logbf implementation from musl.
      msvcrt: Import sin implementation from musl.
      msvcrt: Import cos implementation from musl.

Rémi Bernon (21):
      hidclass.sys: Use __wine_send_input to send device notifications.
      server: Add rawinput union to hw_input_t / INPUT_HARDWARE.
      server: Add RIM_TYPEHID type / hid member to rawinput union.
      user32: Send WM_INPUT_DEVICE_CHANGE / RAWINPUT to the server.
      server: Add process argument to find_rawinput_device.
      server: Add an explicit message field in rawinput_message.
      server: Add support for RIDEV_DEVNOTIFY rawinput flag.
      server: Broadcast rawinput messages when desktop is NULL.
      server: Implement WM_INPUT_DEVICE_CHANGE message dispatch.
      user32: Update keyboard / mouse rawinput device paths.
      hidclass.sys: Send rawinput messages with HID report.
      user32/tests: Skip inconsistent OemKeyScan tests on non-us keyboard.
      user32/tests: Initialize the cursor position in test_GetRawInputBuffer.
      user32/tests: Recreate the window to make it more likely to have focus.
      user32: Factor IsRectEmpty driver check in ShowWindow.
      user32: Add a default ShowWindow implementation.
      user32: Return WAIT_TIMEOUT in nulldrv_MsgWaitForMultipleObjectsEx.
      user32: Duplicate klid to HKL high word in LoadKeyboardLayoutW.
      explorer: Create systray for the null graphics driver.
      user32: Add a default WindowPosChanging implementation.
      user32/tests: Use int for wait_move_event delay type.

Shawn M. Chapla (1):
      wine.inf: Don't use DDE for winebrowser by default.

Stefan Dösinger (1):
      winemac.drv: Set view.WantsBestResolutionOpenGLSurface.

Zebediah Figura (71):
      d3dcompiler/tests: Use winetest_push_context().
      server: Avoid calling get_unix_fd() in IOCTL_AFD_CREATE.
      server: Do not call sock_reselect() on an uninitialized socket.
      ws2_32/tests: Clean up and expand tests for WSAPoll().
      ws2_32/tests: Add a couple of tests for passing empty buffers to recv().
      ws2_32/tests: Test calling ConnectEx() on a socket which is being accepted into.
      wined3d: Use the correct device context ops in wined3d_device_context_issue_query().
      d3d11: Rename d3d11_immediate_context to d3d11_device_context.
      d3d11: Store a d3d_device pointer in struct d3d11_device_context.
      ws2_32/tests: Do not close the port passed to CreateIoCompletionPort separately from the port returned.
      ws2_32/tests: Add more tests for connect() and ConnectEx() with completion ports.
      ws2_32/tests: Add some tests for shutdown().
      sechost: Allow hexadecimal and string rights flags to be interleaved.
      ws2_32/tests: Clean up and expand tests for DisconnectEx().
      ws2_32/tests: Add some tests for shutdown with completion ports.
      server: Add a helper to post socket events.
      server: Rename "pmask" to "pending_events".
      server: Rename "hmask" to "reported_events".
      d3d11/tests: Add more tests for state clear and restore via FinishCommandList and ExecuteCommandList.
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_feature_level().
      wined3d: Pass a wined3d_device_context to wined3d_cs_push_constants().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_texture().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_texture_state().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_sampler_state().
      quartz/dsoundrender: Remove the no longer used "play_time" field.
      ntdll: Use %I64x instead of %lx to trace 64-bit values.
      server: Reset the reported event mask in set_socket_event only when using window messages.
      ws2_32/tests: Verify that recv() does not reset a pending FD_CLOSE.
      server: Do not send messages for events that are not currently being selected for.
      ws2_32: Clear FD_OOB instead of FD_READ when receiving OOB data.
      server: Post socket events only if selecting for them.
      server: Poll for FD_CLOSE even if we cannot receive more data.
      server: Always clear pending messages in sock_wake_up().
      include: Rename Wine-specific socket ioctls.
      include: Use FILE_ANY_ACCESS for wine-specific socket ioctls.
      server: Implement IOCTL_AFD_LISTEN.
      ws2_32: Use IOCTL_AFD_LISTEN.
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_transform().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_clip_plane().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_material().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_light_enable().
      wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_light().
      quartz/tests: Remove the no longer used TestFilterImpl structure.
      quartz/tests: Use CRT memory allocators.
      server: Also clear pending events in set_socket_event.
      winegstreamer: Use a static buffer to enumerate stream types in media_stream_init_desc().
      include: Print context information after the message type.
      wined3d: Make wined3d_texture_set_map_binding() static.
      wined3d: Pass a wined3d_device_context to wined3d_device_set_light().
      wined3d: Pass a wined3d_device_context to wined3d_device_set_render_state().
      wined3d: Pass a wined3d_device_context to wined3d_device_set_state().
      quartz/tests: Avoid testing the result of GetQueueStatus().
      quartz/tests: Fix some test failures related to thread timing.
      ws2_32: Cache the synchronous I/O event in the per-thread data.
      ws2_32: Remove a leftover cast.
      server: Allow polling on an fd after it was removed.
      server: Introduce IOCTL_AFD_WINE_CONNECT.
      ws2_32: Use IOCTL_AFD_WINE_CONNECT in ConnectEx().
      ws2_32: Use IOCTL_AFD_WINE_CONNECT in connect().
      winegstreamer: Shut down the read thread before releasing the IMFByteStream.
      winegstreamer: Make the file_size field of struct parser into a local variable.
      advapi32: Quiet a couple of noisy FIXMEs.
      ntdll/tests: Fix a copy-paste error in an ok message.
      ws2_32: Do not use SHUT_RD.
      server: Introduce IOCTL_AFD_WINE_SHUTDOWN.
      ws2_32: Use IOCTL_AFD_WINE_SHUTDOWN in WS2_DisconnectEx().
      ws2_32: Use IOCTL_AFD_WINE_SHUTDOWN in WS_shutdown().
      wined3d: Use wined3d_device_context functions internally where possible.
      wined3d: Remove no longer used wined3d_device functions.
      ws2_32/tests: Extend WSARecvMsg() tests a bit.
      ws2_32/tests: Add some tests for SO_RCVTIMEO.

Zhiyi Zhang (12):
      include: Add fUseStandardBidi field in SCRIPT_CONTROL.
      user32: Use wait_graphics_driver_ready() in load_desktop_driver().
      winedump: Dump the distance array for EMR_EXTTEXTOUTW records.
      user32/tests: Do not change adapters to every available modes.
      winex11.drv: Support reporting emulated display depth.
      user32/tests: Add display DC color depth tests.
      user32: Optimize getting monitor count with GetSystemMetrics().
      user32: Optimize getting primary monitor rectangle with GetSystemMetrics().
      user32: Optimize getting virtual screen rectangle with GetSystemMetrics().
      user32: Use get_primary_monitor_rect() helper.
      user32: Add a cache for EnumDisplayDevicesW().
      winex11.drv: Add a cache for querying XRandR 1.4 current modes.

Ziqing Hui (4):
      windowscodecs: Add stub for IWICDdsEncoder.
      windowscodecs/tests: Test DDS parameters for encoder.
      windowscodecs: Implement IWICDdsEncoder_GetParameters.
      windowscodecs: Implement IWICDdsEncoder_SetParameters.

--
Alexandre Julliard
julliard@winehq.org
