The Wine development release 8.8 is now available. What's new in this release: - More work towards full PE support in the PostScript driver. - Initial support for loading ARM64EC modules. - More work on IME restructuration. - Various bug fixes. The source is available at: https://dl.winehq.org/wine/source/8.x/wine-8.8.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.8 (total 18): - #33945 Wine build warnings with gcc - #35254 Freemake Video Converter 4.1 installer complains about running Freemake processes (builtin 'findstr' stub app always returns "match") - #48596 Multiple applications need tasklist.exe to support printing process list in CSV format '/fo CSV /nh' (Net64+ Client 2.x, Playstation Now 11.x, MathType) - #49964 32-bit dxdiag doesn't support '/64bit' command line switch (launch 64-bit dxdiag) - #50576 ACAT Phrase, part of Intel Assistive Context-Aware Toolkit (ACAT) v1.00.0 (.NET 4.5 app) crashes on unimplemented function 'uiautomationcore.dll.UiaNodeFromFocus' - #51107 rise of nation extended: cannot do multiplayer when having more than one network interface - #52269 Captvty can't find its own tools/cefsharp folder - #53073 mfplat: unimplemented function while loading Devil May Cry 1 - #53826 Attempting to install / update battle.net fails with Qt error - #54250 winedbg loads wrong debug symbols for builtin dlls - #54367 Wow64 wineboot fails to generate 32Bit slice of wineprefix - #54596 Wavelab 6.1 has problems minimising window - #54733 Notepad3 crashes on unimplemented function SHLWAPI.dll.StrFormatByteSizeEx - #54760 imm32:imm32 - test_ImmActivateLayout() fails on Windows - #54864 imm32:imm32 - test_ImmSetOpenStatus() fails on Windows in the Korean locale - #54879 RtlValidSecurityDescriptor should return TRUE if the given descriptor is valid. - #54904 RtlInitializeSid should return NTSTATUS - #54918 compiling nvcuda fails with threadpoolapiset.h:36:55: error: expected declaration specifiers before ‘__WINE_DEALLOC’ ---------------------------------------------------------------- Changes since 8.7: Ake Rehnman (2): ntdll: Fix return value of RtlInitializeSid(). ntdll: Fix RtlValidSecurityDescriptor() return value. Alex Henrie (1): winemenubuilder: Skip desktop integration for certain associations. Alexandre Julliard (23): ntdll: Initialize TLS links also on the 64-bit side in wow64 mode. ntdll: Add a helper function to read a PE image directory. ntdll: Allow loading ARM64EC binaries. ntdll: Apply dynamic relocations when mapping an ARM64X binary. ntdll: Support the ARM64EC code map. ntdll: Implement RtlIsEcCode(). ntdll: Handle the extended memory attributes in NtAllocateVirtualMemoryEx(). ntdll: Support the MEM_EXTENDED_PARAMETER_EC_CODE attribute. server: Make x86_64 a supported architecture on ARM64. ntdll: Pass limit instead of zero bits to internal memory mapping functions. ntdll: Add a helper function to process MEM_EXTENDED_PARAMETER parameters. ntdll: Support extended address requirements in NtMapViewOfSectionEx(). ntdll/tests: Add tests for address requirements in NtMapViewOfSectionEx(). wow64: Add a helper function to convert MEM_EXTENDED_PARAMETER. wow64: Convert MEM_EXTENDED_PARAMETER also for NtMapViewOfSectionEx(). ntdll: Add a helper function to free a range of pages. ntdll: Move the Unix function tables to avoid forward declarations, and make them static. win32u: Don't export wow64 Unix call functions. kernelbase: Move Wow64EnableWow64FsRedirection() from kernel32 to kernelbase. win32u: Don't use floating point types in syscalls. winebuild: Disallow floating point arguments in syscall functions. server: Add a separate request to create a memory view for a .so builtin. server: Move the Wine-specific flags out of the image_flags field. Alistair Leslie-Hughes (1): activeds: Free memory on error paths (coverity). Aurimas Fišeras (1): po: Update Lithuanian translation. Biswapriyo Nath (1): include: Add DXGI_DEBUG_D3D11 in d3d11sdklayers.idl. Brendan Shanks (2): include: Implement C_ASSERT() using the C11 _Static_assert() if available. winemac: Initialize retina_on to avoid incorrect cached display data in high-res/retina mode. Connor McAdams (1): combase: Check that process ID matches before searching the MTA for a stub manager. Conor McCarthy (1): vkd3d: Leave the command queue op mutex locked after a partial flush. David Kahurani (2): gdiplus: Traverse and draw the whole string. shlwapi: Implement StrFormatByteSizeEx. Davide Beatrici (18): winealsa: Move SimpleAudioVolume into mmdevapi. winecoreaudio: Use mmdevapi's SimpleAudioVolume. wineoss: Use mmdevapi's SimpleAudioVolume. winepulse: Use mmdevapi's SimpleAudioVolume. winecoreaudio: Implement per-channel volume control. mmdevapi: Remove unused "channel" member in set_volumes_params. winealsa: Move ChannelAudioVolume into mmdevapi. winecoreaudio: Use mmdevapi's ChannelAudioVolume. wineoss: Use mmdevapi's ChannelAudioVolume. winepulse: Use mmdevapi's ChannelAudioVolume. winepulse: Move AudioStreamVolume into mmdevapi. winealsa: Use mmdevapi's AudioStreamVolume. winecoreaudio: Use mmdevapi's AudioStreamVolume. wineoss: Use mmdevapi's AudioStreamVolume. winepulse: Move AudioClock into mmdevapi. winealsa: Use mmdevapi's AudioClock. winecoreaudio: Use mmdevapi's AudioClock. wineoss: Use mmdevapi's AudioClock. Eric Pouech (3): evr: Fix incorrect integral computation. winedump: Fix copy & paste error. winegstreamer: Fix typo. Etaash Mathamsetty (1): kernelbase: Add GetPackagesByPackageFamily stub. Floris Renaud (1): po: Update Dutch translation. François Gouget (2): kernel32/tests: Use win_skip() for missing APIs. kernelbase/tests: Use win_skip() for missing APIs. Georg Lehmann (1): winevulkan: Update to VK spec version 1.3.250. Gerald Pfeifer (1): webservices: Avoid uninitialized variable warning in format_double. Giovanni Mascellani (11): winegstreamer: Synchronize concurrent access to the media source. winegstreamer: Synchronize concurrent access to the media stream. winegstreamer: Synchronize access to the media source from callbacks. mfplat/tests: Push image size and format as context. mfplat/buffer: Use the appropriate image copy function for NV11. mfplat/buffer: Support YV12, I420 and IYUV image formats. mfplat/tests: Test large RGB image formats. mfplat/tests: Test IMF2DBuffer::ContiguousCopyFrom(). mfplat/buffer: Implement IMF2DBuffer::ContiguousCopyFrom(). mfplat/tests: Test IMF2DBuffer::ContiguousCopyTo(). mfplat/buffer: Implement IMF2DBuffer::ContiguousCopyTo(). Jactry Zeng (1): wordpad: Resize buttons of toolbar to make them align with height of the font list combox. Michael Stefaniuc (4): dxdiagn: Avoid assigning COM objects to interface variables. dbgeng: Avoid casts to IUnknown* in IUnknown method calls. d2d1: Remove superfluous casts to self. wbemprox: Avoid assigning COM objects to interface variables. Mohamad Al-Jaf (3): include: Add hrtfapoapi.idl file. hrtfapo: Add stub DLL. hrtfapo: Add CreateHrtfApo() stub. Nikolay Sivov (5): ntdll/tests: Add some tests for RtlInitializeSid(). ntdll: Fix subauthority count check in RtlInitializeSid(). ntdll/tests: Add some RtlValidSecurityDescriptor() tests. mfplat: Implement MFCreatePathFromURL(). mfplat/tests: Add another test for MFCopyImage(). Olivier F. R. Dierick (1): dxdiag: Ignore option /64bit on the commandline. Paul Gofman (11): win32u: Partially implement NtUserDisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE). d3dx9: Fix dst pitch for compressed format in D3DXLoadSurfaceFromMemory(). wbemprox: Bump video driver version and date. ntdll: Retry send on ECONNREFUSED in try_send(). ntdll/tests: Add tests for freeing a part of view. kernelbase: Validate nonzero size for MEM_RELEASE in VirtualFreeEx(). ntdll: Fix size validation in NtFreeVirtualMemory(). ntdll: Fully support unaligned views in free ranges management. ntdll: Factor out some view manipulation functions. ntdll: Support partial view release in NtFreeVirtualMemory(). ntdll: Add logging for free ranges. Piotr Caban (37): gdi32: Ignore in_count parameter in Escape() on PASSTHROUGH escape. gdi32: Support saving EMR_EXTESCAPE record in spool file. gdi32: Return error in EndPage if it's called before StartPage. win32u: Don't allow bitmap fonts if OUT_TT_ONLY_PRECIS output precision is specified. wineps: Use only TrueType fonts in print processor. Revert "wineps: Fix default device font selection.". winspool: Change CUPS printers print processor to wineps. wineps: Remove no longer used graphic driver functions. wineps: Use designated initializers to initialize gdi_dc_funcs structure. wineps: Store page size full name as unicode string. gdi32: Handle NEXTBAND escape in Escape(). wineps: Remove no longer used NEXTBAND escape. wineps: Copy GetDeviceCaps implementation to unixlib. wineps: Copy ResetDC implementation to unixlib. wineps: Move ExtEscape implementation to unixlib. wineps: Store font related strings in unicode. wineps: Copy SelectFont implementation to unixlib. wineps: Move EnumFonts implementation to unixlib. wineps: Move GetCharWidth implementation to unixlib. wineps: Copy GetTextMetrics implementation to unixlib. wineps: Copy GetTextExtentExPoint implementation to unixlib. wineps: Use printer DC in print processor. wineps: Change initial printer font to DEVICE_DEFAULT_FONT. wineps: Introduce PSDRV_GET_GLYPH_NAME escape to obtain builtin glyph name from unixlib. wineps: Remove unused fields from PSFONT structure. wineps: Don't use BUILTIN structure on PE side. wineps: Remove no longer used font selection code from PE side. wineps: Remove no longer used PSDRV_StartDoc and PSDRV_EndDoc functions. gdi32: Add device name to wine_get_gdi_driver call. wineps: Move remaining DC driver functions to unixlib. wineps: Rename PSDRV_PDEVICE structure to print_ctx. wineps: Define PSDRV_PDEVICE structure in unixlib. wineps: Remove gdi_physdev from print_ctx structure. wineps: Remove unused fields from PSDRV_DEVMODE. wineps: Use standard DEVMODEW structure instead of PSDRV_DEVMODE when possible. wineps: Store data from PPD file used in unixlib in DEVMODE. wineps: Store font substitution table in DEVMODE. Rémi Bernon (51): winegstreamer: Query the wg_parser stream in media_stream_create. winegstreamer: Keep a IMFMediaSource pointer in the media stream. winegstreamer: Only break cyclic references in IMFMediaSource_Shutdown. winegstreamer: Remove unnecessary media source stream states. riched20: Update the editor IME position on GCS_RESULTSTR. winex11: Rename preedit buffer and related variables. winex11: Simplify xic_preedit_draw control flow. winex11: Compute preedit text buffer sizes in WCHAR units. winex11: Always zero terminate XIM composition string buffer. imm32/tests: Move IME calls test helpers around. imm32/tests: Test cross-thread ImmRequestMessage(W|A) calls. imm32: Use INPUTCONTEXT directly in ImmRequestMessage(W|A). imm32/tests: Add more ImmProcessKey and ImmGetVirtualKey tests. imm32/tests: Test ImmTranslateMessage / ImeToAsciiEx calls. imm32: Ignore some messages in ImmTranslateMessage. imm32: Clear vkey before calling ToAsciiEx in ImmTranslateMessage. imm32: Post messages to the target window in ImmTranslateMessage. imm32/tests: Adjust the ImmSetOpenStatus tests for MS Korean IME. imm32/tests: Print human readable IME message names. imm32/tests: Ignore some unknown WM_IME_NOTIFY messages. imm32/tests: Add some missing local variables declarations. imm32/tests: Test MS Korean IME GA-NA-DA sequence. imm32/tests: Test MS Japanese IME NIHONGO-NO sequence. winegstreamer: Return a IUnknown pointer from source_create_async_op. winegstreamer: Avoid potential leak of media source async commands. winegstreamer: Use helpers to convert stream descriptor type to wg_format. winegstreamer: Start media streams in a dedicated media_stream_start helper. winegstreamer: Simplify media source wait_on_sample control flow. winegstreamer: Avoid eating errors in media source async commands. winegstreamer: Keep a stream descriptor array on the media source. winegstreamer: Create media source presentation descriptor as needed. winemac: Delay ime_set_text until ImeToAsciiEx requests it. winemac: Wait for IME input result on the unix side. winemac: Send IME key input from ImeProcessKey. imm32/tests: Mark some tests as broken by prior SetForegroundWindow call. winex11: Use a helper to change internal composition status. winex11: Clear the composition string when input context is closed. winex11: Simplify NotifyIME with NI_COMPOSITIONSTR / CPS_COMPLETE. win32u: Introduce new NtUserNotifyIMEStatus syscall. winex11: Move NotifyIME to the default IME implementation. winemac: Use the default IME implementation for NotifyIME. winex11: Use the default IME implementation for ImeSetCompositionString. winemac: Use the default IME implementation for ImeSetCompositionString. win32u: Introduce a new ImeProcessKey call through NtUserMessageCall. winemac: Use the ImeProcessKey driver entry to process IME input. win32u: Introduce a new ImeToAsciiEx call through NtUserMessageCall. winemac: Use the ImeToAsciiEx driver entry to retrieve IME result. winemac: Compute the required COMPOSITIONSTRING size in ImeToAsciiEx. imm32: Resize the composition string if the driver requested so. winemac: Write the IME strings to the COMPOSITIONSTRING in ImeToAsciiEx. winemac: Generate IME messages from the default ImeToAsciiEx implementation. Santino Mazza (1): mf/session: Reset presentation flags when session_clear_presentation is called. Shaun Ren (6): sapi: Implement ISpRegDataKey::SetStringValue. sapi: Ignore read_only in ISpRegDataKey::SetKey. sapi: Implement ISpRegDataKey::OpenKey. sapi: Use ISpRegDataKey in object_token. sapi: Implement ISpObjectToken::Set/GetStringValue. sapi: Implement ISpObjectToken::CreateInstance. Sven Baars (2): mscoree/tests: Remove the parent argument from create_new_dir() (Coverity). ddraw: Set the texture height in SetSurfaceDesc() (Coverity). Tim Clem (2): ntdll: Decrement thread count from exit_thread and exit the process if needed. winemac.drv: Force a window in front of its peers if its level is decreased. Torge Matthies (4): ntdll/tests: Add test for file attributes of files with names beginning with a dot. ntdll: Handle hidden file names inside get_file_info instead of after it. ntdll: Only infer hidden attribute from file name if xattr is not present. ntdll: Set xattr in NtCreateFile if inferred and requested attributes don't match. Vijay Kiran Kamuju (1): winex11.drv: Fix compile when xrandr is not available. Zebediah Figura (32): d3d8: Move surface allocation to d3d8_surface_create(). d3d8: Create sub-resource surfaces manually. d3d8: Pass the container to d3d8_surface_create(). wined3d: Directly call wined3d_texture_create() to create swapchain textures. winepulse: Avoid accessing the product name after freeing it. ntdll: Fix the prototype of NtDuplicateToken(). advapi32/tests: Add more tests for token duplication. quartz: Check whether the pin is connected in IBasicVideo::GetVideoSize(). quartz: Check whether the pin is connected in IVideoWindow::put_Caption(). quartz: Check whether the pin is connected in IVideoWindow::put_WindowStyle(). quartz: Check whether the pin is connected in IVideoWindow::put_AutoShow(). quartz: Check whether the pin is connected in IVideoWindow::put_Owner(). quartz: Check whether the pin is connected in IVideoWindow::put_MessageDrain(). quartz: Check whether the pin is connected in IVideoWindow::put_Visible(). quartz: Check whether the pin is connected in IVideoWindow::SetWindowPosition(). d3d9/tests: Add some more tests for accessing an old backbuffer surface after a reset. d3d9: Hold a reference to the wined3d swapchain from d3d9 swapchain surfaces. d3d8: Hold a reference to the wined3d swapchain from d3d8 swapchain surfaces. d3d11: Hold a reference to the wined3d swapchain from d3d11 swapchain textures. wined3d: Do not forward texture references to the swapchain. wined3d: Read the sm4 sample count in DCL instructions. wined3d: Do not declare resources as multisampled if the sample count is 1. qcap/audiorecord: Get rid of the AudioRecord typedef. qcap/audiorecord: Add a stub source pin. qcap/tests: Test audio capture pin interfaces. qcap/tests: Test audio capture pin information. qcap/tests: Test the audio capture CLSID. qcap/audiorecord: Stub IAMStreamConfig. qcap/tests: Add tests for media types. qcap/audiorecord: Implement pin_get_media_type(). qcap/audiorecord: Implement IAMStreamConfig::GetStreamCaps(). qcap/audiorecord: Partially implement QueryAccept(). Zhiyi Zhang (15): tasklist: Add basic functionality. tasklist: Support '/nh' option. tasklist: Support '/fo' option. tasklist: Partially support '/fi' option. findstr: Add basic functionality. oledb32/tests: Test initial catalog property. oledb32: Use the correct property for initial catalog. oledb32/tests: Test provider string with multiple provider specific properties. oledb32: Put provider initialization properties in a single DBPROP_INIT_PROVIDERSTRING. oledb32/tests: Test converting DBTYPE_VARIANT to DBTYPE_UI8. oledb32: Support converting DBTYPE_VARIANT to DBTYPE_UI8. oledb32/tests: Test converting DBTYPE_VARIANT to DBTYPE_GUID. oledb32: Support converting DBTYPE_VARIANT to DBTYPE_GUID. oledb32/tests: Test converting DBTYPE_VARIANT to DBTYPE_VARIANT. oledb32: Support converting DBTYPE_VARIANT to DBTYPE_VARIANT. Ziqing Hui (4): winegstreamer: Introduce format_is_compressed. winegstreamer: Implement wg_parser_stream_get_codec_format. winegstreamer: Implement amt_from_wg_format_video_wmv. winegstreamer: Use codec format in stream_props_GetMediaType.