The Wine development release 8.17 is now available. What's new in this release: - Bundled vkd3d upgraded to version 1.9. - Initial window management in the Wayland driver. - SoundFont support in DirectMusic. - Various bug fixes. The source is available at: https://dl.winehq.org/wine/source/8.x/wine-8.17.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.17 (total 19): - #34789 MeGUI: Wrong icon for file chooser - #38823 Sumatra PDF 3.0: tabs don't work correctly - #43137 The Elder Scrolls: Oblivion crashes after opening logo screens. - #46483 Cemu 1.12.0 crashes on unimplemented function msvcp140.dll.?_Throw_C_error@std@@YAXH@Z - #48969 RageMP crashes on unimplemented function msvcp140.dll.?_Throw_future_error@std@@YAXAEBVerror_code@1@@Z - #51327 GdipCreateFont initializes font with ANSI_CHARSET - #54588 iphlpapi:iphlpapi - test_GetExtendedTcpTable() sometimes fails because the buffer is too small in Wine - #55001 ToneX by IK Multimedia needs unimplemented function msvcp140.dll.?_Throw_C_error@std@@YAXH@Z - #55184 Dwarf Fortress (Steam) crashes on unimplemented function msvcp140_atomic_wait.dll.__std_acquire_shared_mutex_for_instance - #55240 The 64-bit winmm:capture & winmm:wave get BADDEVICEID on Windows 10+ - #55486 Finale 27 printing mangled - #55522 SoftEther VPN Server Manager - #55529 Text in SRPG Studio games ends with a tofu/missing character glyph. - #55587 quartz:vmr9 - test_changed3ddevice() crashes on Windows 8+ - #55592 Separable Subsurface Scattering needs 'mov' opcode support for fx_4_0 effect - #55599 Metatrader 4 - not possible to add any indicator to a chart - #55614 ReCore crashes on unimplemented function msvcp110.dll.?_Winerror_map@std@@YAPEBDH@Z - #55635 mfreadwrite:mfplat - test_interfaces() crashes on Windows 7 & 8 - #55651 d3d10:effect - test_effect_fx_4_1_blend_state() fails on Windows 7+ ---------------------------------------------------------------- Changes since 8.16: Akihiro Sagawa (3): cmd/tests: Add dir built-in command test. cmd/tests: Test file time stamp format. cmd: Always outputs leading zeros when listing file time information. Alex Henrie (24): include: Move RTL functions that belong in winnt.h from winternl.h to winnt.h. oleaut32: Use CRT allocation functions in connpt.c. oleaut32: Use CRT allocation functions in hash.c. oleaut32: Use CRT allocation functions in olepicture.c. oleaut32: Use CRT allocation functions in typelib.c. advpack: Use CRT allocation functions. gameux: Use CRT allocation functions. mciwave: Use CRT allocation functions. msvfw32: Use CRT allocation functions. ncrypt: Use the wcsdup function instead of reimplementing it. shell32: Use the wcsdup function instead of reimplementing it. wshom: Use the wcsdup function instead of reimplementing it. dsound: Use malloc and free instead of _recalloc. conhost: Use the wcsdup function instead of reimplementing it. dxdiag: Use CRT allocation functions. reg: Use the wcsdup function instead of reimplementing it. regedit: Use the wcsdup function instead or reimplementing it. sc: Use CRT allocation functions. wordpad: Use the wcsdup function instead of reimplementing it. avifil32: Use CRT allocation functions. wpcap: Use the strdup function instead of reimplementing it. include: Move RTL functions that belong in ntddk.h from winternl.h to ntddk.h. include: Correct conflicting definition of PSID. include: Correct conflicting definition of PSECURITY_DESCRIPTOR. Alexandre Julliard (26): winebuild: Add a separate helper for .seh annotations. winebuild: Remove unnecessary .cfi_startproc/endproc annotations. winebuild: Add a few more SEH annotations. winebuild: Make the syscall thunks position-independent on ARM64. oleaut32: Add SEH annotations to ARM64 assembly code. rpcrt4: Add SEH annotations to ARM64 assembly code. vcomp: Add SEH annotations to ARM64 assembly code. ntdll: Remove unneeded SEH annotations in Unix code. kernel32/tests: Comment out one more test that can crash on Windows. kernel32/tests: Don't make assumptions about argv[0] of the main process. kernel32/tests: Unaligned SRW locks crash on ARM platforms. kernel32/tests: Update dll characteristics to make the module loadable on ARM64. vkd3d: Import upstream release 1.9. server: Don't zero out the PE optional header regardless of specified size. winedump: Don't zero out the PE optional header regardless of specified size. ntdll: Consistently use the IMAGE_FIRST_SECTION helper macro. dbghelp: Consistently use the IMAGE_FIRST_SECTION helper macro. imagehlp: Use the IMAGE_FIRST_SECTION helper macro. krnl386: Use the IMAGE_FIRST_SECTION helper macro. widl: Use the IMAGE_FIRST_SECTION helper macro. kernel32/tests: Fix loader tests on Windows ARM64. winebuild: Set ASLR-related dll flags by default. server: Require ASLR support on non-x86 platforms. ntdll: Release the low address space reservation for 64-bit apps. ntdll: Don't release the low address space reservation on wow64. ntdll: Don't free reserved memory on 64-bit macOS. Alexandros Frantzis (7): winewayland.drv: Remove wayland_surface destruction double locking. winewayland.drv: Handle xdg_toplevel close event. winewayland.drv: Handle xdg_toplevel configure event size hint. winewayland.drv: Handle xdg_toplevel maximized state. winewayland.drv: Handle client-initiated user-driven window move. winewayland.drv: Handle client-initiated user-driven window resize. winewayland.drv: Fix removal of wl_seat globals. Alistair Leslie-Hughes (9): mfreadwrite/reader: Update to IMFSourceReaderEx. d3drm: Correctly query for the returned interface. msado15: Recordset::Open - Correctly update count/index values. mfreadwrite/tests: Move test_interfaces after test_factory. msado15: _Recordset::Filter set index on value. d3dx9: Trace pointer value in D3DXValidMesh(). msado15: Implement _Recordset::get_ActiveConnection. msado15: _Recordset::Open store active connection parameter. msado15: Update editMode in AddNew/Cancel/Update functions. Ally Sommers (2): server: Return WSAEOPNOTSUPP on listen() if the socket's type is SOCK_DGRAM. ws2_32/tests: Add more tests for SO_REUSEADDR. Andrew Brobston (1): d2d1: Support GUID_WICPixelFormat32bppRGB. Bartosz Kosiorek (1): gdiplus/tests: Add tests of InterpolationMode Bilinear for GdipDrawImagePointsRect. Biswapriyo Nath (19): include: Add ID3D12VideoDecoder in d3d12video.idl. include: Add ID3D12VideoDevice in d3d12video.idl. include: Add ID3D12VideoDecoderHeap in d3d12video.idl. include: Add ID3D12VideoDecodeCommandList in d3d12video.idl. include: Add video decode profile guids in d3d12video.idl. include: Add D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT in d3d12video.idl. include: Add ID3D12VideoDevice1 in d3d12video.idl. include: Add ID3D12VideoExtensionCommand in d3d12video.idl. include: Add ID3D12VideoDevice2 in d3d12video.idl. include: Add ID3D12VideoEncoder in d3d12video.idl. include: Add ID3D12VideoEncoderHeap in d3d12video.idl. include: Add ID3D12VideoDevice3 in d3d12video.idl. include: Add ID3D12VideoMotionEstimator in d3d12video.idl. include: Add ID3D12VideoMotionVectorHeap in d3d12video.idl. include: Add ID3D12VideoEncodeCommandList in d3d12video.idl. include: Add ID3D12VideoDecodeCommandList1 in d3d12video.idl. include: Add ID3D12VideoEncodeCommandList1 in d3d12video.idl. include: Add ID3D12VideoEncodeCommandList2 in d3d12video.idl. include: Add some structures in d3d12video.idl. Brendan Shanks (3): winecoreaudio: Stop using the deprecated kAudioObjectPropertyElementMaster constant. winecoreaudio: Use os_unfair_lock when available instead of OSSpinLock. msv1_0: Implement ntlm_fork() using posix_spawn(). Connor McAdams (21): uiautomationcore: Add UiaHasServerSideProvider stub. uiautomationcore: Add a common helper function for creating HUIANODEs. uiautomationcore: Implement UiaHasServerSideProvider. include: Add missing WinEvent definitions. uiautomationcore/tests: Add method expect definitions for all Accessible test interfaces. uiautomationcore/tests: Add support for debug printing Accessible method calls. uiautomationcore/tests: Add support for debug printing Provider method calls. uiautomationcore: Add stub IRawElementProviderFragmentRoot implementation for MSAA providers. uiautomationcore: Add a common helper function for querying IServiceProvider on IAccessible interfaces. uiautomationcore: Implement IRawElementProviderFragment::get_FragmentRoot for MSAA providers. uiautomationcore: Don't return oleacc proxy IAccessibles from GetIAccessible for MSAA providers. uiautomationcore/tests: Increase wait timeout for cross-process event with navigation. uiautomationcore: Pass through failure HRESULTS on MSAA accState based property IDs for MSAA providers. uiautomationcore: Implement IRawElementProviderFragmentRoot::GetFocus for MSAA providers. uiautomationcore: Add stub IProxyProviderWinEventHandler implementation for MSAA providers. uiautomationcore: Handle EVENT_SYSTEM_ALERT in IProxyProviderWinEventHandler::RespondToWinEvent() for MSAA providers. uiautomationcore/tests: Add tests for IProxyProviderWinEventHandler based MSAA to UIA event bridging. uiautomationcore: Check providers for an IProxyProviderWinEventHandler interface when attaching events. uiautomationcore: Add WinEvent hook on the UIA event thread. uiautomationcore: Track HWNDs that need WinEvent translation. uiautomationcore: Make sure event thread is started when listening for WinEvents. Eric Pouech (3): dbghelp: Check that dwarf unwinder did actually unwind. ntdll: Allow empty application nodes in actctx. winedump: Improve dumping DEBUG directory entries in PE images. Esme Povirk (4): user32/tests: Account for some messages from dual-monitor setups. user32/tests: Fix WM_WINDOWPOSCHANGED entries. user32/tests: Use a child window for test_PeekMessage3. user32/tests: Use open_clipboard helper in msg tests. François Gouget (1): tests: Update the documentation. Gabriel Ivăncescu (22): mshtml: Move some Element methods around. mshtml: Move some AnchorElement methods up. mshtml: Move some AreaElement methods up. mshtml: Move some FormElement methods up. mshtml: Move some FrameElement methods down. mshtml: Move some IFrame methods down. mshtml: Move some ObjectElement methods up. mshtml: Move some SelectElement methods up. mshtml: Move node vtbl QI methods around. mshtml: Move node vtbl destructor methods down. mshtml: Get rid of useless element destructors. mshtml: Use specific dispex vtbls for remaining HTML elements. mshtml: Use specific dispex for each SVG element. mshtml: Use the dispex's query_interface for DocumentType nodes. mshtml: Use the dispex's query_interface for Document nodes and fragments. mshtml: Use the dispex's query_interface for DOMTextNodes. mshtml: Use the dispex's query_interface for the remaining nodes. mshtml: Use the dispex's destructor for all nodes. mshtml: Use the dispex's get_dispid for all nodes. mshtml: Use the dispex's get_name for all nodes. mshtml: Use the dispex's invoke for all nodes. mshtml: Use the event_target vtbl's handle_event for all nodes. Hans Leidekker (6): winmm/tests: Avoid truncating the handle passed to waveInGetDevCapsW(). wbemprox: Get Win32_OperatingSystem.BuildType from the registry. wbemprox: Fix Win32_OperatingSystem.TotalVirtual/VisibleMemorySize. wbemprox: Implement Win32_OperatingSystem.InstallDate. systeminfo: Add an implementation on top of WMI. secur32: Only return success from initialize_package() when initialization fully succeeds. Henri Verbeet (2): wined3d: Don't validate the frontbuffer's DRAWABLE location in wined3d_swapchain_resize_buffers() when NO3D is set. d3d11/tests: Properly mark the indexed sample position test as succeeding with the Vulkan backend. Huw D. M. Davies (1): gdiplus: Copy the compound array in GdipClonePen(). Jacek Caban (4): mshtml: Remove unused functions. include: Support ARM64EC target in intrin.h. include: Move __getReg intrinsic to intrin.h. include: Support ARM64EC target in winnt.h. Jactry Zeng (5): msi: Use CreateFileW() for handling path from cabinet_open() instead. cabinet/tests: Initialize CURR_DIR globally. msxml3: Store ValidateOnParse property in domdoc_properties instead. msxml3: Add ValidateOnParse support for IXMLDOMDocument3_{get,set}Property(). msxml3/tests: Add tests of ValidateOnParse property. Jeff Smith (2): gdiplus/tests: Test GdipCreateFont character set initialization. gdiplus: Fix GdipCreateFont character set initialization. Jinoh Kang (1): wbemprox: Fix out-of-bounds access caused by codepoints above U+00FF. Joel Holdsworth (6): include: Add flags to FILE_RENAME_INFORMATION used by FileRenameInformationEx. ntdll/tests: Test both FileRenameInformation and FileRenameInformationEx in test_file_rename_information. include: Add flags to FILE_LINK_INFORMATION used by FileLinkInformationEx. ntdll/tests: Test both FileLinkInformation and FileLinkInformationEx in test_file_link_information. ntdll/tests: Skip FileRenameInformationEx tests on older Windows versions. ntdll/tests: Skip FileLinkInformationEx tests on older Windows versions. Martin Storsjö (2): include: Update the d3d12 headers from vkd3d. include: Update the d3d12 header from vkd3d. Mohamad Al-Jaf (7): windows.applicationmodel: Add IPackageStatics stub interface. windows.applicationmodel: Implement IPackageStatics::get_Current(). windows.applicationmodel: Implement IPackage::get_InstalledLocation(). windows.applicationmodel: Add IStorageItem stub interface. windows.applicationmodel/tests: Add IStorageItem::get_Path() tests. windows.applicationmodel: Implement IStorageItem::get_Path(). windows.applicationmodel/tests: Use PathRemoveFileSpecW() instead of PathCchRemoveFileSpec(). Nikolay Sivov (6): d3d10/effect: Implement 'mov' opcode for expressions. d3d10/effect: Implement instructions used for signed integer division. d3d10/effect: Add signed integer compare instructions for expressions. d3d10/tests: Add some tests for D3D10.1 blend state in effects. d3dcompiler: Add support for matrix majority compiler flags. d3d10/tests: Test for correct return value. Paul Gofman (7): mf/tests: Add tests for AAC decoder with different input number of channels. winegstreamer: Handle missing or zero channel count in _GetOutputAvailableType in AAC decoder. winegstreamer: Correct output available types attrs in AAC decoder for channel count > 2. winegstreamer: Validate maximum channel count in _SetInputType in AAC decoder. winegstreamer: Also return output with 2 channels for multichannel inputs from AAC decoder. shell32: Avoid stack corruption with long name in SHELL_TryAppPathW(). shell32: Handle long command line in execute_from_key(). Piotr Caban (7): msvcp110: Add _Winerror_map implementation. msvcr110: Simplify _StructuredTaskCollection finished task counter updating. msvcr110: Use Context blocking functions in _StructuredTaskCollection class. msvcp140_atomic_wait: Add __std_acquire_shared_mutex_for_instance implementation. wineps.drv: Remove unused hmtx_tab field from TYPE42 structure. wineps.drv: Don't crash if specified font is missing required table in T42_download_header. msvcp90: Silence FIXME in _Locinfo::_Locinfo_ctor and _Locinfo::_Locinfo_Addcats functions. Rémi Bernon (74): dmusic: Avoid swallowing collection Load failures. dmusic: Rewrite downloading instrument to port. dmusic: Parse collection wave table. dmusic: Parse collection wave lists. dmusic: Keep an internal ref on the instrument's collection. dmusic: Implement downloading wave to port. dmusic: Parse instrument regions articulation lists. dmusic: Implement instrument articulation downloads. dmime/tests: Test that SendPMsg also converts reference time. dmime: Convert DMUS_PMSG music and reference times in SendPMsg. dmime: Get rid of the DMUS_PMSGItem typedef. dmime: Use a struct list to keep performance messages. dmime: Remove unnecessary struct message members. dmime: Rename DMUS_PMSGToItem to message_from_DMUS_PMSG. dmime: Pass the DMUS_PMSG through the performance graph. dmband: Rename IDirectMusicBandImpl prefix to band. dmband: Get rid of the IDirectMusicBandImpl typedef. dmband: Get rid of the IDirectMusicBandTrack typedef. dmband: Avoid leaking bands on band track Release. dmband: Avoid leaking collection on band release. dmband: Rewrite band lbin list parsing. dmband: Rewrite band lbil list parsing. dmband: Rewrite band dmbd chunk parsing. dmband: Rewrite band IPersistStream_Load. dmime: Rename IDirectMusicSegment8Impl method prefix to segment. dmime: Use one-liners for segment parameter checks. dmime: Get rid of the IDirectMusicSegmentImpl typedef. dmime: Avoid leaking tracks in IDirectMusicSegment_Release. dmime: Rewrite segment IDirectMusicSegment_GetTrack. dmime: Rewrite segment IDirectMusicSegment_GetTrackGroup. dmime: Rewrite segment IDirectMusicSegment_InsertTrack. dmime: Rewrite segment IDirectMusicSegment_RemoveTrack. dmime: Use segment_append_track in Clone and parse_track_form. dmime/tests: Add some DMUS_NOTIFICATION_PMSG tests. dmime/tests: Test wave segments and DMUS_WAVE_PMSG. dmime/tests: Test sequence track and DMUS_NOTE_PMSG. dmime/tests: Test band track and DMUS_PATCH_PMSG. dmusic/tests: Fixup chunk alignment in steam_end_chunk. dmusic: Keep the original instrument patch in the entry. dmband: Rewrite band track lbdl/lbnd lists parsing. dmband: Rewrite band track DBMT chunk parsing. dmband: Rewrite band track IPersistStream_Load. dmime: Get rid of the IDirectMusicSeqTrack typedef. dmime: Implement DirectMusicSeqTrack IPersistStream_Load. dmloader: Rename IDirectMusicLoaderImpl method prefix to loader. dmloader: Get rid of the IDirectMusicLoaderImpl typedef. dmloader: Initialize ref to 1, and release after QueryInterface. dmloader: Introduce a new loader_stream_create helper. dmloader: Get rid of the custom generic stream wrapper. dmime/tests: Remove some duplicated tests. dmime/tests: Move performance tests into dmime.c. dmime/tests: Test performance Init with a created port. dmime: Set the port direct sound before activating it. dmime: Initialize performance in Init rather than InitAudio. dmime: Return DMUS_E_AUDIOPATHS_IN_USE when audio paths are in use. dmime: Return DMUS_E_AUDIOPATH_INACTIVE when audio paths are not enabled. dmloader: Use a simpler file stream implementation. dmusic/tests: Test default gm.dls sound font instruments. dmloader: Remove invalid default DLS collection check. dmloader: Add fallbacks if the configured GMFilePath doesn't exist. dmusic: Avoid leaking articulations when freeing regions. dmusic: Avoid crashing in traces if wave doesn't have a WSMPL. dmusic: Implement SoundFont2 collection parsing. dmusic: Implement SoundFont2 wave sample parsing. dmusic: Implement SoundFont2 instrument parsing. dmime/tests: Add some tests for GUID_ConnectToDLSCollection. dmime/tests: Test segment state and playing a custom track. dmime: Implement IDirectMusicSegment_SetParam. dmband: Implement band track GUID_ConnectToDLSCollection parameter. dmime: Implement IDirectMusicSegment_(Download|Unload). dmband: Implement IDirectMusicBand_(Download|Unload). dmband: Implement band track GUID_UnloadFromAudioPath parameter. dmband: Implement band track GUID_DownloadToAudioPath parameter. dmime: Implement IDirectMusicPerformance_DownloadInstrument. Yuxuan Shui (4): gdi32: Make GetStockObject hotpatchable. user32: Make CallWindowProcA hotpatchable. user32: Add hotpatchable wrapper for GetWindowLongA. rtworkq: Fix leak of thread pool work items. Zebediah Figura (5): wined3d: Pass a wined3d_stateblock_state to wined3d_device_validate_device(). d3d10core/tests: Test performing a full clear after a draw. wined3d: Remove invalid parameter checks from internal wined3d_device_set_*() functions. wined3d: Make wined3d_stateblock_state_{init,cleanup}() static. wined3d: Move struct wined3d_stateblock into stateblock.c. Zhiyi Zhang (2): user32/tests: Fix test failures in Hindi UTF-8 and mixed locales. user32: Enable IsDialogMessageA() ASCII to Unicode mapping only when the user default lang ID is CJK.