The Wine development release 8.7 is now available.

What's new in this release:
  - DXBC shader parsing delegated to vkd3d.
  - More spool file improvements in the PostScript driver.
  - Various bug fixes.

The source is available at:

  https://dl.winehq.org/wine/source/8.x/wine-8.7.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.7 (total 17):

 - #9932   Listview highlight issues when drag&drop enabled
 - #23647  Street Fighter 4 Benchmark: Flickering screen with parallel rendering enabled
 - #32089  Window resize enters endless cycle
 - #32958  ReVolt 1207: Crashes when trying to play Stunt Arena
 - #33487  Davar bible software not working
 - #43672  Airscout program 1.2.0.5 does not load under wine 2.0.2
 - #50249  Shapes On A Plane crashes on start
 - #51625  Unravel fails to load
 - #52322  wineserver memory leak during HTTPs download (Genshin Impact Launcher, Qt5)
 - #54424  user32:edit - test_dbcs_WM_CHAR() fails on Windows in mixed locales
 - #54464  Multiple games crash on launch (Sekiro: Shadows Die Twice GOTY, Dark Souls III)
 - #54799  wininet:internet - test_InternetGetConnectedStateExA() fails in the Japanese and Chinese locales in Wine
 - #54808  Access violation in ntdll when running Adolix Split and Merge PDF with .NET Framework installed
 - #54815  wininet:internet - test_InternetErrorDlg() fails on Windows 10 1607
 - #54844  Existing prefixes keep resetting to Win10 when wine is updated
 - #54856  Final Fantasy XI Online: Opening movie doesn't play (redux part II).
 - #54882  Conemu fails to start (cannot attach to process)

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

Changes since 8.6:

Alex Henrie (2):
      kernel32/tests: Check that lpSectionBase != NULL before dereferencing.
      ntdll: Increment offset by len in build_clr_surrogate_section.

Alexandre Julliard (18):
      include: Add some CHPE definitions.
      winedump: Dump hybrid metadata also for i386 CHPE modules.
      include: Add the ARM64EC context structure.
      include: Update the PEB and TEB structures.
      zlib: Run source files through zlib2ansi to avoid K&R function definitions.
      makedep: Avoid generating empty dependencies.
      winedump: Print entry point names in code range lists.
      kernelbase: Move to a higher address on 64-bit.
      kernel32: Move to a higher address on 64-bit.
      ntdll: Reimplement RtlSetBits() to set 32 bits at a time.
      ntdll: Reimplement RtlClearBits() to clear 32 bits at a time.
      ntdll: Reimplement RtlAreBitsSet() to check 32 bits at a time.
      ntdll: Reimplement RtlAreBitsClear() to check 32 bits at a time.
      ntdll: Reimplement RtlNumberOfSetBits() to check 32 bits at a time.
      ntdll: Use a separate memory allocation for the kernel stack.
      ntdll: Use nameless unions/structs for register contexts.
      include: Add some new ProcThreadAttribute definitions.
      winedump: Fix printing of code ranges in hybrid modules.

Alexandros Frantzis (5):
      winewayland.drv: Initialize display devices once after process init.
      tools: Support building Wayland protocol source files.
      winewayland.drv: Use the output name reported by the compositor.
      winewayland.drv: Basic support for Windows monitor positioning.
      winewayland.drv: Infer and report Windows monitor positions.

Alistair Leslie-Hughes (1):
      widl: Suppress a coverity warning.

Andrey Gusev (1):
      dxgi: Update TRACE in dxgi_device_create_resource().

André Zwing (1):
      ntdll: Print RPC_S_SERVER_UNAVAILABLE exceptions.

Anton Baskanov (7):
      winegstreamer: Fix negative height image size calculation.
      winegstreamer: Call init_gstreamer() in winegstreamer_create_video_decoder().
      dsound: Remove the unused nAvgBytesPerSec field.
      dsound: Remove redundant assignments to freqAdjustNum and freqAdjustDen.
      dsound: Preserve freqAccNum value in DSOUND_RecalcFormat().
      dsound: Acquire the lock when setting 3D buffer parameters.
      dsound: Allocate big enough committedbuff up front.

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

Bernhard Übelacker (1):
      ntoskrnl: Do not leak memory by setting input buffer to NULL.

Brendan Shanks (4):
      winemac: Refactor constrain_window_frame() to use separate origin and size arguments.
      winemac: Set the Cocoa window contentMaxSize to the size limits from constrain_window_frame().
      winemac: Don't constrain surface dimensions to the onscreen part of a window.
      msvcrt: Fix crash when rethrowing after a non-C++ exception on x86_64.

Byeong-Sik Jeon (2):
      imm32: Stop updating INPUTCONTEXT hWnd member in ImmGetContext.
      imm32: Avoid updating INPUTCONTEXT hWnd on ImmSetActiveContext deactivation.

Connor McAdams (12):
      uiautomationcore: Implement UIA_ControlTypePropertyId for default HWND provider.
      uiautomationcore: Implement UIA_BoundingRectanglePropertyId for default HWND provider.
      uiautomationcore: Implement NavigateDirection_Parent navigation for default HWND provider.
      uiautomationcore: Add a default ProviderType_Proxy MSAA bridge clientside provider.
      uiautomationcore: Implement UiaGetRootNode.
      uiautomationcore: Implement IUIAutomation::GetRootElement.
      uiautomationcore: Implement conditional NavigateDirection_Parent navigation.
      uiautomationcore: Add normalization navigation to UiaGetUpdatedCache.
      uiautomationcore: Add UiaNodeFromFocus stub.
      uiautomationcore: Implement UiaNodeFromFocus.
      uiautomationcore: Implement IUIAutomation::GetFocusedElement{BuildCacheRequest}.
      uiautomationcore: Retrieve runtime ID on UiaReturnRawElementProvider thread to prevent a deadlock.

Davide Beatrici (22):
      winealsa: Export function to get AudioSessionWrapper object.
      winecoreaudio: Export function to get AudioSessionWrapper object.
      wineoss: Export function to get AudioSessionWrapper object.
      winepulse: Export function to get AudioSessionWrapper object.
      mmdevapi: Import GetAudioSessionWrapper() from driver.
      mmdevapi: Implement AudioSessionManager.
      winealsa: Remove AudioSessionManager.
      winecoreaudio: Remove AudioSessionManager.
      wineoss: Remove AudioSessionManager.
      winepulse: Remove AudioSessionManager.
      winealsa: Implement functions to lock and unlock sessions.
      winecoreaudio: Implement functions to lock and unlock sessions.
      wineoss: Implement functions to lock and unlock sessions.
      winepulse: Implement functions to lock and unlock sessions.
      winealsa: Use dedicated macros to call interface functions.
      winecoreaudio: Use dedicated macros to call interface functions.
      wineoss: Use dedicated macros to call interface functions.
      winepulse: Use dedicated macros to call interface functions.
      winealsa: Move AudioSessionControl into mmdevapi.
      winecoreaudio: Use mmdevapi's AudioSessionControl.
      wineoss: Use mmdevapi's AudioSessionControl.
      winepulse: Use mmdevapi's AudioSessionControl.

Derek Lesho (1):
      winegstreamer: Cache wg_parser input data.

Dmitry Timoshkov (1):
      shell32/tests: Add SHBindToFolderIDListParent() tests.

Eric Pouech (6):
      mf/tests: Add tests about (negative) stride handling.
      winegstreamer: In video_processor, activate a videoflip converter.
      winedbg: Let 'break symbol : line' command work again.
      dbghelp: Use source file path as stored in debug info format.
      winedbg: Simplify watch command implementation.
      winedbg: Improve size management in watch command.

François Gouget (7):
      user32/tests: Fix the DBCS WM_CHAR tests in mixed locales.
      dnsapi/tests: Make DnsQuery()'s CNAME tests more compatible with CDNs.
      wininet: Add constants for DetectAutoProxyUrl().
      wininet/tests: Add more proxy tests.
      kernel32/tests: Fix the ScrollConsoleScreenBuffer() tests on Windows 10 1909.
      msi/tests: Fix the ok() formats so they match the size of their arguments.
      msi/tests: Ok_() takes printf-style arguments.

Gabriel Ivăncescu (12):
      mshtml: Implement MediaQueryList's addListener method.
      mshtml: Implement MediaQueryList's removeListener method.
      mshtml: Use proper event type for PageTransition events.
      mshtml: Do not release the principal returned by GetPrincipal.
      mshtml: Fix factory leak in init_nsio.
      mshtml: Fix nsIFile dir leak in init_xpcom.
      mshtml: Fix URI leak in NewURI on failure.
      mshtml: Store minimum compat mode required for events in the ctor table.
      mshtml: Support cycle collection for nsChannel.
      mshtml: Fix nsChannel's load_info leak.
      mshtml: Pass actual node_ccp to ccref_decr for nodes.
      mshtml/tests: Fix element leak in elem_fire_event.

Giovanni Mascellani (11):
      mfplat/tests: Test Lock2D() on a locked D3D9 surface buffer.
      mfplat/tests: Test locking flags for D3D9 buffers.
      mfplat/tests: Independently test that locking flags are ignored for D3D9 buffers.
      mfplat: Fix locking flags usage for D3D9 buffers.
      mfplat/tests: Test Lock2D() on a locked DXGI surface buffer.
      mfplat/tests: Test locking flags for DXGI buffers.
      mfplat: Do not mark a DXGI buffer as locked if surface mapping fails.
      mfplat: Fix locking flags usage for DXGI buffers.
      mfplat: Only download surface data from GPU for DXGI buffers when reading.
      mfplat: Only upload surface data to GPU for DXGI buffers when writing.
      mfplat/tests: Test that the content of DXGI buffers is discarded when locking for writing.

Hans Leidekker (1):
      wine.inf: Use FLG_ADDREG_NOCLOBBER for CurrentMajor/MinorVersionNumber.

Henri Verbeet (12):
      d3dcompiler: Check for minimum bytecode size in d3dcompiler_get_blob_part().
      d3dcompiler: Check for minimum bytecode size in d3dcompiler_strip_shader().
      d3dcompiler: Store DXBC sections as vkd3d_shader_dxbc_section_desc structures.
      d3dcompiler: Use vkd3d_shader_serialize_dxbc() in d3dcompiler_get_blob_part().
      d3dcompiler: Use vkd3d_shader_serialize_dxbc() in d3dcompiler_strip_shader().
      d3dcompiler: Use vkd3d_shader_parse_dxbc() in d3dcompiler_get_blob_part().
      d3dcompiler: Use vkd3d_shader_parse_dxbc() in d3dcompiler_strip_shader().
      d3dcompiler: Use vkd3d_shader_parse_dxbc() in d3dcompiler_shader_reflection_init().
      wined3d: Implement shader_extract_from_dxbc() on top of vkd3d_shader_parse_dxbc().
      vkd3d: Update the version information for release 1.7.
      d3d10: Implement d3d10_effect_parse() on top of vkd3d_shader_parse_dxbc().
      d3d10: Implement parse_fx10_preshader() on top of vkd3d_shader_parse_dxbc().

Jactry Zeng (2):
      appwiz.cpl: Process messages while waiting for the uninstaller to terminate.
      appwiz.cpl: Handle WM_CLOSE and WM_COMMAND(IDCANCEL) in the support info dialog.

Jinoh Kang (6):
      kernel32/tests: Test for activation context switching between fibers.
      ntdll: Factor out reading current activation context into a helper function.
      ntdll: Store current activation context stack pointer into a local variable.
      ntdll: Use ActivationContextStackPointer instead of referencing ActivationContextStack directly.
      ntdll: Implement RtlFreeActivationContextStack().
      kernelbase: Implement activation context switching for fibers.

Martin Garton (1):
      msvcrt: Fix typo in #define.

Matteo Bruni (2):
      d3dcompiler/tests: Add a couple tests for minimum size in D3DGetBlobPart().
      d3dcompiler/tests: Add a couple tests for minimum size in D3DStripShader().

Michael Stefaniuc (3):
      threadpoolwinrt: Forward a Release() to a Release() method.
      uiautomationcore: Drop superfluous TRUE : FALSE conditional expression.
      win32u: Use ARRAY_SIZE() instead of open coding it.

Mohamad Al-Jaf (9):
      include: Add windows.graphics.capture.interop.idl file.
      include: Add appnotify.h file.
      twinapi.appcore: Add stub DLL.
      twinapi.appcore: Add RegisterAppStateChangeNotification stub.
      twinapi.appcore: Add UnregisterAppStateChangeNotification stub.
      apisetschema: Add api-ms-win-core-psm-appnotify-l1-1-0.
      shell32: Implement SHBindToFolderIDListParent().
      shell32/tests: Test SHBindToParent() last parameter behavior.
      shell32: Fix last parameter behavior in SHBindToFolderIDListParent().

Paul Gofman (4):
      ntdll: Mind LFH pending blocks in RtlDestroyHeap().
      ntdll: Avoid integer overflow in block_get_subheap().
      mfplat: Fix returned buffer length in dxgi_surface_buffer_lock().
      wined3d: Add a comment about mismatched samplers.

Piotr Caban (36):
      wineps: Rename handle count parameter in hmf_proc.
      wineps: Set text and background color during device creation.
      wineps: Handle EMR_EXTCREATEFONTINDIRECTW record in spool files.
      wineps: Handle font selection in spool files.
      wineps: Store text justification info in print processor data.
      wineps: Handle EMR_EXTTEXTOUTW record in spool files.
      wineps: Add BiDi support in EMR_EXTTEXTOUTW record.
      wineps: Clip visible rectangle to bitmap size in get_vis_rectangles.
      wineps: Handle EMR_CREATEPALETTE record in spool files.
      wineps: Handle EMR_SELECTPALETTE record in spool files.
      wineps: Handle EMR_SETDIBITSTODEVICE record in spool files.
      wineps: Handle EMR_STRETCHDIBITS record in spool files.
      wineps: Handle EMR_REALIZEPALETTE record in spool files.
      wineps: Handle EMR_RESIZEPALETTE record in spool files.
      wineps: Handle EMR_SETPALETTEENTRIES record in spool files.
      gdi32: Use EMR_REALIZEPALETTE to record RealizePalette.
      gdi32: Fix EMR_CREATEPALETTE recording.
      gdi32: Store palette in EMR_EOF record.
      gdi32/tests: Add EMF palette tests.
      wineps: Fix default device font selection.
      wineps: Fix return value in path drawing routines.
      wineps: Continue printing if path drawing function returns error.
      wineps: Reset memory DC state on every page.
      localspl: Add support for PRINTER_ATTRIBUTE_RAW_ONLY printer attribute.
      localspl: Validate datatype in StartDocPrinter.
      wineps: Reset current position on every page.
      gdi32: Store the printer info in a structure.
      gdi32: Improve EMF DC cleanup when CloseEnhMetafile is not called.
      gdi32: Factor out emf_eof helper.
      gdi32: Factor out emf_create helper.
      gdi32: Add support for creating EMF spool files.
      gdi32: Add GdiIsMetaPrintDC implementation.
      localspl: Add partial support for PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS attribute.
      gdi32: Implicitly call StartPage while drawing on printer DC.
      gdi32: Support creating EMRI_DEVMODE records in spool files.
      wineps: Handle EMRI_DEVMODE record in spool files.

Rémi Bernon (11):
      imm32/tests: Test that ImmSetOpenStatus doesn't set IMMGWL_IMC.
      imm32/tests: Check IME UI visibility vs ImmSetCompositionWindow.
      imm32/tests: Check ImmSetActiveContext effect on INPUTCONTEXT hWnd member.
      imm32: Forward ImmGetContext to NtUserGetWindowInputContext directly.
      user32: Move WM_IME_COMPOSITION DefWindowProc handlers in separate helpers.
      user32: Ignore WM_IME_COMPOSITION from the IME UI window in DefWindowProc.
      imm32: Don't hide/show IME UI window in ImmSetCompositionWindow.
      imm32: Move ImmAssociateContext(Ex) around.
      imm32: Update IME UI window IMMGWL_IMC when focus or HIMC changes.
      imm32/tests: Add some ImmGenerateMessage tests.
      imm32: Send messages one by one in ImmGenerateMessage.

Shaun Ren (2):
      include: Add more sapi structs and enums.
      include: Add ISpTTSEngineSite and ISpTTSEngine interfaces.

Stefan Dösinger (14):
      d3dx9: Use __VA_ARGS__ instead of GCCs named variadics.
      d3dx9/tests: Use __VA_ARGS__ instead of GCCs named variadics.
      wined3d: Sync depth stencils to both early and late depth test.
      wined3d: Avoid VK_IMAGE_LAYOUT_GENERAL.
      wined3d: Fall back to general layout if necessary.
      d3d9/tests: Radeon GPUs don't draw from sysmem textures.
      d3d9/tests: Accept AMD GPU sysmem sample failure in test_mipmap_upload.
      d3d8/tests: Radeon GPUs don't draw from sysmem textures.
      d3d8/test: Accept AMD GPU sysmem sample failure in test_mipmap_upload.
      d3dx9: Load D3DAssemble via GetProcAddress.
      d3dcompiler/tests: Load D3DAssemble via GetProcAddress.
      d3dcompiler: Make D3DAssemble a private export.
      d3d9/tests: AMD GPUs sample the border color of cube textures.
      d3d9/tests: Accept random depth when using a 3D texture with a 2D sampler.

Vova Mshanetskiy (2):
      winhttp: Support WINHTTP_OPTION_PARENT_HANDLE in request_query_option().
      winhttp: Avoid unnecessary cast in connect_query_option().

Zebediah Figura (8):
      wined3d: Allow retrieving the frontbuffer from a wined3d swapchain.
      ddraw: Retrieve the frontbuffer directly from wined3d.
      wined3d: Disable shaderTessellationAndGeometryPointSize.
      dxgi: Introduce IWineDXGIDeviceParent::register_swapchain_texture() and use it in IDXGIDevice::CreateSurface().
      dxgi: Create d3d11 swapchain textures directly from d3d11_swapchain_init().
      d3d9: Move surface allocation to d3d9_surface_create().
      d3d9: Create sub-resource surfaces manually.
      d3d9: Pass the container to d3d9_surface_create().

Ziqing Hui (3):
      winegstreamer: Implement wg_format_from_caps_video_wmv.
      wingstreamer: Create extra decodebin to decode compressed stream.
      mfreadwrite: Fix an address of operator typo.
