The Wine development release 7.18 is now available. What's new in this release: - Character tables updated to Unicode 15.0.0. - Wow64 support in the macOS driver. - Async reader fixes in GStreamer support. - Various bug fixes. The source is available at: https://dl.winehq.org/wine/source/7.x/wine-7.18.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 7.18 (total 20): - #31157 Multiple applications (FileMaker Pro 12-19, MyDiff) crash when trying to create/open sample solution ('ImmAssociateContext' should only generate 'WM_IME_SETCONTEXT' if window has focus) - #35478 Multiple applications and games need dsdmo.dll (DirectSound Effects) - #36312 valgrind shows a couple possible leaks in oledb32/tests/marshal.c - #36944 Hotel Giant 2 crashes frequently - #42751 Multiple applications crash on unimplemented function msvcr{100,110}.dll.?_Schedule@_StructuredTaskCollection@details@Concurrency@@QAEXPAV_UnrealizedChore@23@@Z (Gas Guzzlers Combat Carnage, Clip Studio Paint, Cube World, Intel ACAT) - #44314 Adobe FrameMaker 8: Installer aborts with the error "The wizard was interrupted..." - #48487 MSYS based Git 2.25 installer reports 'could not decode hex <hexstring>' (needs support for CryptStringToBinaryW CRYPT_STRING_HEX) - #48600 Bloomberg Terminal needs unimplemented function dbghelp.dll.SymSrvGetFileIndexInfo - #51404 Resident Evil 7 objects rendered with glitches (Vulkan renderer) - #52677 REVELPROG_IS crashes on unimplemented function winusb.dll.WinUsb_Free - #53430 urlmon:url fails due to unexpected redirection - #53458 windows.media.speech:speech - The 64-bit test_Recognition() gets unexpected ref count on Windows after ISpeechContinuousRecognitionSession_Release() - #53570 Visual C++ 2015-2019 crashes on launch - #53577 d3d9:device - test_scissor_size() fails on Windows 8+ - #53578 msvfw32:mciwnd - test_MCIWndCreate() fails in Wine - #53609 Segmentation fault when starting Dosbox.exe in virtual desktop mode - #53614 KeePassXC crashes on unimplemented function msvcp140.dll.?ReportUnhandledError@_ExceptionHolder@details@Concurrency@@AEAAXXZ - #53626 Wine crash due to long filename when saving file in Framemaker - #53703 Wine crashes when setting a long window title. - #53706 NtDeviceIoControlFile() is quite slow when called with and invalid handle ---------------------------------------------------------------- Changes since 7.17: Akihiro Sagawa (1): user32: Fix a memory allocation strategy. Alexandre Julliard (22): configure: Use --disable-stdcall-fixup for all PE builds. kernel32/tests: Fix affinity test when there are too many CPUs. ntdll/tests: Fix affinity test when there are too many CPUs. ntoskrnl/tests: Fix affinity test when there are too many CPUs. oleaut32: Avoid spurious debug traces when FIXMEs are disabled. oleaut32: Check that the 32/64 syskind matches when getting a typelib from the cache. webservices/tests: Mark tests that fail on 64-bit as todo. d2d1/tests: Adjust geometry to make tests pass on all devices. winetest: Don't require an email if we have a URL. gdi32/tests: Mark some tests that fail without Vulkan as todo. vcomp/tests: Limit the number of nested threads. unicode: Update to Unicode 15.0.0. win32u: Fix Get/SetWindowWord behavior on 32-bit. winex11: Don't send WM_CANCELMODE to iconified windows. user32/tests: Fix a few more assumptions about window positions. ntdll/tests: Re-add workaround for check that is still broken on win7. winetest: Report failure for tests that print too much output. ntdll/tests: Don't run the stack growth tests too many times. d2d1/tests: Skip subsequent todo tests for unsupported properties. user32/tests: Only report the first todo of a failed message sequence. user32/tests: Don't print debug traces by default. advapi32/tests: Mark some failing tests as todo. Alistair Leslie-Hughes (7): ws2_32: Return a valid value for WSAIoctl SIO_IDEAL_SEND_BACKLOG_QUERY. wininet: Clear cached credentials after the first failed attempt. oledb32/tests: Free returned property set memory. wininet: Use standard HTTP_ADD Flags. msdasql: Implement ICommandProperties GetProperties. msdasql: Implement ICommandProperties SetProperties. msdasql: Implement IColumnsRowset GetAvailableColumns. André Zwing (1): ntdll: Fix ARM vs AMD64 typo. Aurimas Fišeras (1): po: Update Lithuanian translation. Brendan Shanks (4): server: Remove 32-bit-specific macOS #ifdefs. server: Report errors on macOS when getting/setting debug registers. server: Write to correct context struct when getting debug registers on macOS. server: Use correct context struct and thread flavor when setting debug registers on macOS. Connor McAdams (6): uiautomationcore: Implement UiaReturnRawElementProvider. uiautomationcore: Increment module reference count when starting provider thread. uiautomationcore: Shutdown provider thread when all returned nodes are released. uiautomationcore: Implement UiaNodeFromHandle. uiautomationcore: Create UI Automation client thread. uiautomationcore: Add tests for UiaNodeFromHandle. David Kahurani (1): win32u: Use allocator mechanism to allocate DC attributes. Davide Beatrici (9): winecoreaudio: Fix RegEnumKeyExW() call passing wrong unit for the buffer size. winecoreaudio: Switch to string as device identifier, to match other drivers. mmdevapi: Integrate winecoreaudio's additions in unixlib.h. winecoreaudio: Drop "unix_" prefix in unixlib enum, apply it to the functions instead. winecoreaudio: Adapt "create_stream_params" struct to mmdevapi's. winecoreaudio: Adapt "release_stream_params" struct to mmdevapi's. winecoreaudio: Adapt "release_render_buffer_params" struct to mmdevapi's. winecoreaudio: Adapt "get_capture_buffer_params" struct to mmdevapi's. winecoreaudio: Switch to mmdevapi's unixlib.h. Eric Pouech (14): winedump: Harden reading PDB string table stream. dbghelp: Harden reading strings from string table. dbghelp: Correctly handle the absence of IPI stream. dbghelp: Support SymGetTypeInfo/TI_GET_LENGTH for variables. dbghelp: Displacements are optional. winedump: Print signed integers with %d. dbghelp: Support depth relating to top function for inline sites. dbghelp: Store all address ranges for inline sites. d3d10core/tests: Fix erroneous color parameter. d3d10core/tests: Introduce a clear_backbuffer_rtv() helper. d3d11/tests: Introduce a clear_rtv() helper. glu32: Fix GCC 12.2 warnings. jscript: Fix GCC 12.2 warning. avifil32: Fix GCC 12.2 warning (-Warray-bounds). Etaash Mathamsetty (2): ntoskrnl: KeSetTargetProcessorDpcEx stub. ntoskrnl: Implement KeGetCurrentProcessorNumberEx. Floris Renaud (1): po: Update Dutch translation. Gabriel Ivăncescu (8): include: Add IDOMStorageEvent and DispDOMStorageEvent interfaces. mshtml: Move the MessageEvent construction to a helper. mshtml: Implement StorageEvent and send it when clearing the storage. mshtml: Send StorageEvents when setting an item. mshtml: Send StorageEvents when removing an existing item. mshtml/tests: Add tests for StorageEvents with parallel documents. mshtml: Don't expose document.onstorage for IE9+ modes. mshtml: Send StorageEvents to iframe windows properly. Georg Lehmann (1): winevulkan: Update to VK spec version 1.3.228. Gijs Vermeulen (2): dbghelp: Add SymSrvGetFileIndexInfo stub. ntdll: Add RtlDosPathNameToRelativeNtPathName_U. Hans Leidekker (15): bcrypt: Support setting BCRYPT_CHAIN_MODE_CFB on keys. bcrypt: Add full support for algorithm pseudo-handles. bcrypt: Rename mode_id to chain_mode. appwiz.cpl: Use BCrypt algorithm pseudo-handles. appwiz.cpl: Use BCryptHash(). crypt32: Use BCrypt algorithm pseudo-handles. dssenh: Use BCrypt algorithm pseudo-handles. fusion: Use BCrypt algorithm pseudo-handles. ncrypt: Use BCrypt algorithm pseudo-handles. rsaenh: Use BCrypt algorithm pseudo-handles. adsldp: Implement ADS_SEARCHPREF_SIZE_LIMIT. adsldp/tests: Limit the number of search results. adsldp/tests: Get rid of workarounds for Windows XP. winhttp/tests: Fix test failure caused by expired client certificate. secur32/tests: Fix test failure caused by expired client certificate. Henri Verbeet (6): wined3d: Fix the sub-resource index validation in wined3d_texture_update_overlay(). wined3d: Destroy the Vulkan command pool after cleaning up resources. d3d9/tests: The expected scissor rect after a reset is equal to the back-buffer dimensions. d3d11: Implement d3d11_input_layout_to_wined3d_declaration() on top of vkd3d_shader_parse_input_signature(). d3d11/tests: Move the is_warp_device() call out of the loop in check_format_support(). wined3d: Return bools from all return paths in wined3d_cs_map_upload_bo(). Jacek Caban (8): urlmon/tests: Make BINDSTATUS_DOWNLOADINGDATA optional in test_URLDownloadToFile_abort. wininet/tests: Collect persistent connection before running tests in test_async_HttpSendRequestEx. wininet/tests: Don't send two HTTP responses for a single request in server_thread. win32u: Introduce NtUserSendDriverMessage. winemac: Use platform-independent types for user callback params. winemac: Implement wow64 thunks. winevulkan: Introduce VkVariable. winevulkan: Use DECLSPEC_ALIGN instead of pshpack4.h. Jacob Czekalla (3): notepad: Show status bar. notepad: Track and display line number and column. notepad: Show goto dialog box. Jinoh Kang (3): include: Define atomic read/write helpers for 32-bit integers. concrt140: Use atomic write for releasing threadsafe_queue spin lock. msvcp90: Use atomic write for releasing threadsafe_queue spin lock. Julian Klemann (9): widl: Use "cinterface(IInspectable)" for IInspectable signature. include/windows.devices.enumeration: Update file to newer formatting. include/windows.devices.enumeration: Define IDeviceInformationStatics2. windows.devices.enumeration: Replace STDMETHODCALLTYPE with WINAPI. windows.devices.enumeration: Create private header file. windows.devices.enumeration: Add IDeviceInformationStatics2 stub. windows.devices.enumeration: Add DeviceWatcher stub. windows.devices.enumeration: Implement Stopped handler for DeviceWatcher. windows.devices.enumeration/tests: Add test for Stopped DeviceWatcher event. Mohamad Al-Jaf (2): include: Add winusb.h file. winusb: Add WinUsb_Free stub. Nikolay Sivov (26): dwrite/layout: Use same logic for mapping both non-visual and visual runs. dwrite/layout: Keep system font collection for each layout. dwrite/layout: Use already resolved or last resort fonts when setting dummy line metrics. dwrite/layout: Constify some internal helpers arguments. dwrite/layout: Limit text window passed to MapCharacters() to the range of characters to map. xmllite/reader: Improve xml declaration node parsing. xmllite/writer: Implement WriteWhitespace(). xmllite/writer: Handle empty prefix and uri correctly in WriteStartElement(). xmllite/writer: Close open tag on WriteRaw(). xmllite/writer: Close open tag on WriteProcessingInstruction(). xmllite/writer: Implement WriteAttributes(). xmllite/writer: Add initial implementation of WriteNode(). xmllite/tests: Add some more tests for WriteStartElement(). xmllite/tests: Add a test for IsEmptyElement() on attributes. xmllite/writer: Handle empty local name in WriteAttributeString(). xmllite/writer: Implement WriteNodeShallow(). xmllite/writer: Enable some more tests for WriteNode(). kernelbase: Add OpenFileMappingFromApp(). kernelbase: Add CreateFileMappingFromApp(). kernelbase: Add MapViewOfFileFromApp(). include: Add windows.system.threading.idl. threadpoolwinrt: Add a stub module. threadpoolwinrt: Add initial implementation of RunAsync. include: Add windows.security.cryptography.idl. cryptowinrt: Add a stub module. cryptowinrt: Implement GenerateRandomNumber(). Owen Rudge (2): secur32/tests: Add tests for LsaGetLogonSessionData. secur32: Implement basic functionality for LsaGetLogonSessionData. Paul Gofman (6): advapi32: Add stub for PerfCloseQueryHandle(). advapi32: Add stub for PerfOpenQueryHandle(). advapi32: Add stub for PerfAddCounters(). advapi32: Add stub for PerfQueryCounterData(). crypt32: Support CRYPT_STRING_HEXRAW in CryptBinaryToStringA(). crypt32: Support CRYPT_STRING_HEX in CryptStringToBinary(). Piotr Caban (2): msvcp90: Fix indentation in concurrent_vector_alloc_segment function. msvcr100: Fix crash when setting scheduler in schedule_task_proc. Rémi Bernon (66): wmvcore/tests: Add some tests starting WM reader with NULL context. winegstreamer: Wrap async reader op new_context in a union. winegstreamer: Unconditionally assign new context for ASYNC_OP_START. winegstreamer: Implement async reader asynchronous seeking. winegstreamer: Keep start time in the async_reader struct. winegstreamer: Check whether the reader is still running before user time. winegstreamer: Factor async_reader waits using async_reader_get_wait_timeout. winegstreamer: Introduce a new async_reader_wait_pts helper. winegstreamer: Request the wm_reader stream only when necessary. widl: Allow parameterized types in runtimeclass interfaces. wineandroid.drv: Add missing DM_DISPLAYORIENTATION flag on display mode. win32u: Rename get_full_mode variables and avoid using devmode directly. win32u: Fill the local full_mode variable instead of using the modes array. win32u: Introduce reference counting to struct adapter. win32u: Avoid copying the modes array in NtUserChangeDisplaySettings. win32u: Avoid unnecessary copy of adapter path and device name. win32u: Pass adapter parameter to (read|write)_registry_settings. win32u: Introduce a new internal WINE_DM_UNSUPPORTED display flag. mf/tests: Split IMFTransform tests to transform.c. mf/tests: Add some winetest context to MFT tests. mf/tests: Split create_transform into check_(mft|dmo)_(enum|get_info). mf/tests: Test AAC encoder MFT presence and media types. mf/tests: Test AAC decoder MFT presence and media types. mf/tests: Factor IMFTransform required attributes checks together. maintainers: Assume maintainership of MF transforms. winegstreamer: Support MFT_SET_TYPE_TEST_ONLY flag in the MF transforms. winegstreamer: Avoid leaking attributes on video processor creation failure. winegstreamer: Better implement H264 MFT GetAttributes and GetOutputStreamAttributes. winegstreamer: Set MFT_OUTPUT_DATA_BUFFER_INCOMPLETE in wg_transform_read_mf. winegstreamer: Stop setting flags on unexpected MF_E_TRANSFORM_STREAM_CHANGE. winegstreamer: Check for unexpected format change in wg_transform_read helpers. winegstreamer: Check WMA sample size before wrapping the sample. winegstreamer: Remove unnecessary IMFTransform_GetInputStreamInfo calls. winegstreamer: Create wg_sample from IMFSample within wg_transform_push_mf. winegstreamer: Wake thread when async reader user clock is modified. winegstreamer: Introduce a new async_reader_deliver_sample helper. winegstreamer: Use a dedicated CS to serialize async reader commands. winegstreamer: Check for already opened stream in wm_reader_open*. winegstreamer: Get rid of the wm_reader_ops callbacks. winegstreamer: Aggregate a IWMSyncReader in the async reader. winegstreamer: Merge wm_syncreader.c into wm_reader.c. mf/tests: Use separate variables for input / output samples. mf/tests: Factor IMFTransform_ProcessOutput checks together. mf/tests: Introduce a new load_resource helper. mf/tests: Introduce a new dump_mf_sample helper. mf/tests: Factor IMFSample checks in a check_mf_sample helper. mf/tests: Factor IMFSample attributes checks in check_mf_sample. mf/tests: Check all produced output IMFSample at the same time. mf/tests: Rename transform frame dumps to BMP. mf/tests: Dump image samples with a BMP header and RGB data. winegstreamer: Query the IWMSyncReader2 interface in the async reader. winegstreamer: Implement IWMSyncReader2_GetReadStreamSamples. winegstreamer: Use IWMSyncReader2_GetReadStreamSamples in the async reader. winegstreamer: Use IWMSyncReader2_SetReadStreamSamples in the async reader. winegstreamer: Use IWMSyncReader2_Close in the async reader. winegstreamer: Use IWMSyncReader2_Open in the async reader. winegstreamer: Use IWMSyncReader2_OpenStream in the async reader. winegstreamer: Use IWMSyncReader2_SetRange in the async reader. winegstreamer: Avoid accessing NULL pointer if transform didn't provide a sample. user32/tests: Cleanup sysparams WM_DISPLAYCHANGE tests. win32u: Move enumeration of available modes out of graphics drivers. winemac.drv: Stop using the cached_modes_mutex for get_default_bpp. win32u: Factor out display_device lookup in separate helpers. win32u: Use find_adapter_device_by_(name|id) helpers in find_adapter. win32u: Lock display devices mutex in find_adapter. win32u: Broadcast WM_DISPLAYCHANGE message on display settings change. Santino Mazza (2): include: Define REG_APP_HIVE and REG_PROCESS_PRIVATE. ntdll/tests: Test for NtRegLoadKey roothandle parameter. Shaun Ren (1): msvcrt: Fix strncmp return value. Witold Baryluk (4): ntdll: Speed up NtQueryVirtualMemory(MemoryWorkingSetExInformation) by conditional page check. ntdll: Do not use hardcoded page shift in NtQueryVirtualMemory(MemoryWorkingSetExInformation). ntdll: Use pread in NtQueryVirtualMemory(MemoryWorkingSetExInformation). ntdll: Keep pagemap file open after first use of NtQueryVirtualMemory(MemoryWorkingSetExInformation). Zebediah Figura (16): wined3d: Do not create larger staging buffers than necessary in adapter_vk_copy_bo_address(). wined3d: Remove a redundant variable. wined3d: Factor out wined3d_texture_validate_sub_resource_idx(). wined3d: Mark managed textures as dirty if applicable in wined3d_device_evict_managed_resources(). d3d8: Remove an incorrect comment. wined3d: Add a dirty region to the destination texture in wined3d_device_context_blt() if applicable. wined3d: Pass a draw count of 1 to Vulkan indirect draw commands. ntdll: Avoid comparing the result of pointer arithmetic to zero. libwine: Avoid comparing the result of pointer arithmetic to zero. ntdll: Calculate the necessary length after calling snprintf() in SystemWineVersionInformation. win32u: Copy directly into the union pointer in unpack_message(). ntdll: Do not check for malloc() failure in get_initial_environment. ntdll: Add a fast path for NtDeviceIoControlFile(INVALID_HANDLE_VALUE). d3d10core/tests: Use a pixel shader that consumes SV_Position in test_pipeline_statistics_query(). d3d11/tests: Use a pixel shader that consumes SV_Position in test_pipeline_statistics_query(). d3d10core/tests: Ignore random WARP failures in test_pipeline_statistics_query. Zhiyi Zhang (1): kernelbase: Return system error codes in the ReadDirectoryChangesW() completion callback.