The Wine development release 8.18 is now available. What's new in this release: - Bundled FluidSynth library for DirectMusic. - More window management in the Wayland driver. - More effect support in Direct3D 10. - Various bug fixes. The source is available at: https://dl.winehq.org/wine/source/8.x/wine-8.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 8.18 (total 44): - #32574 Patrician 4 fails to start (Error in 'App::Initialize') - #41645 Unreal Tournament 2004 crashes - #43017 Unreal Tournament 2004/UT2004.exe crashes due to "intel_do_flush_locked failed: Cannot allocate memory" - #43185 "Battle Bugs" game in unresponsive once game starts - #44275 Shadow of Memories demo hangs at graphic setting screen - #44276 Poor resolution change handling with Shadow of Memories demo - #48905 Inner Chains Launches to Black Screen With Mouse Cursor - #52641 Feeding Frenzy 2 crashes while loading - #53276 comctl32:edit & user32:edit - test_paste() sometimes fails to access the clipboard on Windows - #54069 ddraw:ddraw7 - test_texture_wrong_caps() sometimes fails on Windows 8+ - #54156 comctl32:edit & user32:edit - test_paste() sometimes gets an empty string on Windows - #54420 preloader warning "failed to reserve range" macOS Ventura - #54430 user32:menu - test_menu_input()'s test 0 sometimes fails on Windows 7 - #54441 windows.media.speech:speech - test_Recognition() sometimes gets unexpected recognizer state on Windows 10 - #54699 Motorola Ready For Assistant does not start, RoOriginateLanguageException in Windows.Networking - #54744 explorerframe:taskbarlist - test_ITaskbarList() sometimes gets E_NOTIMPL on Windows - #54783 cryptowinrt:crypto - test_Credentials_Statics() sometimes gets unexpectedly high refcount in Wine - #54791 explorerframe:nstc - test_events() sometimes gets unexpected events on Windows 7 - #55108 xaudio2_8:xaudio2 fails on Windows 10+ - #55211 Print file not truncated before new print job is started with same target file - #55236 scrrun:dictionary - The 64-bit test_hash_value() gets bad hashes on Windows - #55241 The 64-bit winmm:capture & winmm:wave crash on Windows 8 - #55245 ntdll:om - The 32-bit test_all_kernel_objects() gets an access violation on the w8 VM - #55272 The 64-bit ntdll:exception crashes on Windows 10 1607 & 1709 - #55273 ntdll:wow64 - The 64-bit test_cpu_area() gets bad offsets on Windows 10 1607 & 1709 - #55528 Vitis 2020.1 can't find its libraries (cmd.exe bug with nested one-line if statement that sets PATH) - #55606 Finale 27 printing - incorrect linecap - #55627 secur32:negotiate & secur32:ntlm crash from a NULL dereference on macOS - #55631 ntdll:file - test_file_rename_information fails on Windows 10 1607 and older - #55632 ntdll:file - test_file_link_information() fails on Windows 10 1709 and older - #55634 Genshin Impact uses very long URLs - #55648 ntdll:wow64 - test_peb_teb() crashes on macOS - #55652 A FindResourceW() call prevents windows.applicationmodel:model from running on Windows 8 - #55656 user32:dialog - test_IsDialogMessage() fails in the hi-u8 and mx-MX locales on Windows - #55658 msinfo32 fails to start on macOS / wow64 (was psapi:psapi_main - test_EnumProcessModules*() fails on macOS) - #55670 Wordpad is no longer able to print multiple copies of a page - #55674 64-bit wineserver/wine-preloader hangs on macOS 14. - #55686 msvcr120:msvcr120 - test_StructuredTaskCollection() sometimes fails in Wine - #55696 msvfw32:mciwnd - The 64-bit test_MCIWndCreate() crashes in Wine - #55701 Sniper Elite 5 launcher opens Wine Internet Explorer instead of Options window - #55708 cpython 3.12.0 fails to run on wine, needs unimplemented function propsys.dll.VariantToString - #55713 mspaint.exe crashes with: Unhandled exception: unimplemented function propsys.dll.PropVariantToUInt32WithDefault - #55732 kernel32:loader - The 64-bit test_import_resolution() fails in Wine - #55733 ntdll:file - test_file_rename_information_ex() fails on Windows 10 1607 & 1709 ---------------------------------------------------------------- Changes since 8.17: Alex Henrie (14): http: Use the strdup function instead of reimplementing it. riched20: Use CRT allocation functions. mfplat: Rename debugstr_fourcc to mf_debugstr_fourcc. winecoreaudio: Rename wine_dbgstr_fourcc to coreaudio_dbgstr_fourcc. include: Introduce wine_dbgstr_fourcc and debugstr_fourcc. comctl32: Use the debugstr_fourcc function instead of reimplementing it. ddraw: Use the debugstr_fourcc function instead of reimplementing it. mciavi32: Use the debugstr_fourcc function instead of reimplementing it. mscms: Use the debugstr_fourcc function instead of reimplementing it. msvfw32: Use the debugstr_fourcc function instead of reimplementing it. cmd: Reset ignoreBracket when moving to the next line. uninstaller: Don't overallocate in FetchFromRootKey. msvcrt/tests: Check errno after strdup(NULL). msvcrt/tests: Add tests for wcsdup. Alexandre Julliard (34): nls: Update character tables to Unicode 15.1.0. mpg123: Import upstream release 1.32.2. tiff: Import upstream release 4.6.0. zlib: Import upstream release 1.3. xml2: Import upstream release 2.11.5. ldap: Import upstream release 2.5.16. faudio: Import upstream release 23.10. kernel32/tests: Add some dynamic base tests. kernel32/tests: Delete the correct manifest file. ntdll: Do an explicit mmap address search for any range not covering the entire address space. ntdll: Add a helper to find a mapping address for a PE image. ntdll: Always allocate dynamically relocatable dlls top-down. ntdll: Fix relocation of the 32-bit ntdll. ntdll: Move the module relocation support to virtual.c. ntdll: Support relocating the main exe. server: Set the dynamically relocated flag when relocations are present. server: Assign a system-wide mapping address for dynamic base modules. ntdll: Relocate dynamic base modules when mapping them. winegcc: Enable dynamic base by default. server: Remove some leftover code from a failed rebase. ntdll: Only create the main module on the 32-bit side for wow64. ntdll: Add a separate helper to build the main module on Wow64. ws2_32: Make htonl/htons/ntohl/ntohs proper functions. include: Stop pretending to support big-endian. winebuild: Add a helper to output an asm function header. ntdll: Use the standard syscall calling convention for NtFlushProcessWriteBuffers. makefiles: Remove unnecessary imports of version.dll. makefiles: Remove unnecessary imports of usp10.dll. makefiles: Always use the global SOURCES variable for .mc files. makefiles: Always use the global SOURCES variable for .po files. makefiles: Always use the global SOURCES variable for .m files. makefiles: Always use the global SOURCES variable for .sfd files. makefiles: Always use the global SOURCES variable for .in files. ntdll: Move LdrInitializeThunk to the CPU backends. Alexandros Frantzis (7): winewayland.drv: Respect the compositor requested surface config. winewayland.drv: Handle xdg_toplevel tiled states. winewayland.drv: Store and use the latest window config for a wayland_surface. winewayland.drv: Handle application-initiated fullscreen state. winewayland.drv: Use surface geometry to satisfy state size constraints. winewayland.drv: Rename wayland_surface_configure_is_compatible for consistency. winewayland.drv: Avoid resizing fullscreen windows. Alistair Leslie-Hughes (6): d3dxof: Remove DECLSPEC_HIDDEN usage. msxml3: IXMLDOMElement::selectSingleNode always assign a value to the output parameter. wpcap: Return NULL on error in get_broadcast. msado15: Move to newly created row in Recordset::AddNew. msado15: Show fixme only if field_list needs to be used in Recordset::AddNew. d3dx9: Support empty mesh in D3DXLoadMeshHierarchyFromXInMemory(). Ally Sommers (1): server: Move getpeername() implementation from ntdll/unix. Arkadiusz Hiler (1): xinput1_3: Hold module reference while the hid thread is running. Aurimas Fišeras (1): po: Update Lithuanian translation. Brendan Shanks (7): configure: Don't use -Wl,-z,defs if it causes link errors with 'environ'. winemac.drv: Use @autoreleasepool instead of NSAutoreleasePool. winemac.drv: Simplify control flow where possible after the removal of NSAutoreleasePool. winemac.drv: Use ObjC literals. wow64cpu: Use RTL_CONSTANT_STRING. cfgmgr32: Add stub for CM_Get_Device_Interface_PropertyW. winemac.drv: Fix redundant calls to [NSCursor set]. Connor McAdams (17): uiautomationcore/tests: Add another test for IProxyProviderWinEventHandler child HWND scope checking. uiautomationcore: Introduce uia_event_for_each function for iterating through registered events. uiautomationcore: Check if we should try to invoke IProxyProviderWinEventHandler::RespondToWinEvent for registered UIA events. uiautomationcore: Create HUIANODE for WinEvents that should invoke IProxyProviderWinEventHandler::RespondToWinEvent. uiautomationcore: Add support for ignoring ProviderOptions_UseComThreading when creating an HUIANODE. uiautomationcore: Add support for marking the root IAccessible as known on non-root IAccessibles upon proxy provider creation. uiautomationcore: Pass WinEvent data to IProxyProviderWinEventHandler::RespondToWinEvent. uiautomationcore: Add support for raising events passed to our IProxyProviderWinEventSink interface. uiautomationcore/tests: Add tests for COM event handler event advisement. uiautomationcore: Add support for passing WinEvents to the COM API. uiautomationcore: Separate checking if a node is within the scope of a registered event from event invocation. uiautomationcore: Use EVENT_OBJECT_SHOW to advise providers of events being listened for in the COM API. win32u: Fix NtUserIsCurrent{Process/Thread}Window enum typo. uiautomationcore/tests: Add tests for IUIAutomationFocusChangedEventHandler event advisement behavior. uiautomationcore: Query EVENT_OBJECT_FOCUS HWND for a serverside provider if there is a registered focus change event handler. uiautomationcore: Use EVENT_OBJECT_FOCUS to advise HWND providers of focus change events in the COM API. uiautomationcore: Use EVENT_OBJECT_DESTROY to remove HWNDs from the COM API focus change HWND map. Daniel Lehman (5): advapi32/tests: Add ReadEventLogW tests for EventLogStarted. advapi32/tests: Add ReadEventLogA tests for EventlogStarted. msxml4/tests: Copy namespaces as attributes tests. msxml6/tests: Copy namespaces as attributes tests. advapi32/tests: Skip ReadEventLog on failure to open System log. Eric Pouech (6): winemac.drv: Use NtCallbackReturn to send back app's icons to unixlib. msvfw32: Correctly store internal pointer. dbghelp: Simplify allocation code. dbghelp: Read debuggee environment by page. winedbg: Set first LDT entry value as ntdll does. winedbg: Correctly read LDT entries for wow64 debuggee. Esme Povirk (1): user32/tests: Print regions in test_hvredraw failure case. Etaash Mathamsetty (1): gdi32: Add stub for D3DKMTQueryAdapterInfo. Fabian Maurer (1): propsys: Implement PropVariantToUInt32WithDefault. François Gouget (9): winewayland.drv: Add a trailing linefeed to a TRACE() message. dmsynth: Add a trailing linefeed to TRACE() messages. nsiproxy.sys: Add a trailing linefeed to a TRACE() message. secur32/tests: Skip the tests instead of crashing if Kerberos is not supported. user32/tests: Don't test GetWindowModuleFileName() on windows belonging to another process. advapi32/tests: Better identify OpenEventLogA() failures. advapi32/tests: Add the read_write info to the failures context. advapi32/tests: Avoid unneeded reallocations of the ReadEventLog() buffer. advapi32/tests: Don't check the content of the buffer if ReadEventLog() fails. Gabriel Ivăncescu (11): mshtml: Call handle_event on the proper dispex object. mshtml: Remove unused IUnknown_iface in func_disp_t. mshtml: Traverse EventTarget listeners. mshtml: Implement SuperNavigate undocumented flag 2. shdoclc: Add a basic generic html page for navigation errors. ieframe: Implement IEHTMLWindow2_get_document. ieframe: Navigate to a basic error page on failed navigation. ieframe: Use the original URL for error pages' address bar. ieframe: Send the original URL for error pages in FireNavigationComplete2 notification. ieframe: Send the original URL for error pages in FireDocumentComplete notification. ieframe: Implement DocObjectService_IsErrorUrl. Georg Lehmann (1): winevulkan: Update to VK spec version 1.3.267. Hans Leidekker (2): mmdevapi/tests: Don't initialize the audio client twice. mmdevapi/tests: Relax a capture test. Helix Graziani (3): nsiproxy.sys: Implement ipv6_forward_enumerate_all. winecfg: Change system theme alongside app theme. uxtheme: Add ShouldSystemUseDarkMode. Jactry Zeng (1): user32: Add more builtin string resources. Joel Holdsworth (7): ntdll: Initial implementation of FileRenameInformationEx. ntdll: Initial implementation of FileLinkInformationEx. ntdll/tests: Add tests for FILE_RENAME_IGNORE_READONLY_ATTRIBUTE. ntdll/tests: Add tests for FILE_LINK_IGNORE_READONLY_ATTRIBUTE. server: Don't allow read-only files to be replaced by File{Rename,Link}Information{,Ex}. ntdll: Add support for FILE_{RENAME,LINK}_IGNORE_READONLY_ATTRIBUTE. ntdll/tests: Fix FILE_RENAME_INFORMATION_EX test failures on Windows 10 1607 & 1709. Marcus Meissner (1): user32/tests: Use correct size to LoadStringW. Martin Storsjö (1): configure: Fix restoring CFLAGS after the test for -Wl,-z,defs. Matteo Bruni (1): d3dx9/tests: Get rid of unnecessary branches in D3DXLoadMeshTest(). Mohamad Al-Jaf (17): windows.storage.applicationdata: Add stub DLL. windows.storage.applicationdata: Add IApplicationDataStatics stub interface. windows.storage.applicationdata/tests: Add IApplicationDataStatics::get_Current() tests. windows.storage.applicationdata: Implement IApplicationDataStatics::get_Current(). include: Add ISystemMediaTransportControls interface definition. windows.media.mediacontrol: Add stub DLL. include: Add systemmediatransportcontrolsinterop.idl file. windows.media.mediacontrol: Add ISystemMediaTransportControlsInterop stub interface. windows.media.mediacontrol/tests: Add ISystemMediaTransportControlsInterop::GetForWindow() tests. windows.media.mediacontrol: Implement ISystemMediaTransportControlsInterop::GetForWindow(). windows.media.mediacontrol/tests: Add some ISystemMediaTransportControls properties tests. windows.media.mediacontrol: Implement some ISystemMediaTransportControls properties. include: Add windows.security.credentials.ui.idl file. windows.security.credentials.ui.userconsentverifier: Add stub DLL. windows.security.credentials.ui.userconsentverifier: Add IUserConsentVerifierStatics stub interface. windows.security.credentials.ui.userconsentverifier: Implement IUserConsentVerifierStatics::CheckAvailabilityAsync(). windows.security.credentials.ui.userconsentverifier/tests: Add IUserConsentVerifierStatics::CheckAvailabilityAsync() tests. Nikolay Sivov (25): d3d10/effect: Add support for 'buge'/'bult' instructions. d3d10/tests: Compact returned arrays checks. d3d10/effect: Add support for 'ceil' instruction. d3d10/effect: Add support for 'floor' instruction. d3d10/effect: Add support for 'dot' instruction. propsys: Partially implement VariantToString(). propsys: Handle VT_I4 type in VariantToString(). d3d10/effect: Add support for 'imul' instruction. d3d10/tests: Use vector helpers in more places. d3d10/effect: Add support for 'sqrt' instruction. d3d10/effect: Add support for 'rsq' instruction. d3d10/effect: Add support for 'log' instruction. d3d10/effect: Add support for 'exp' instruction. d3d10/effect: Add support for 'not' instruction. d3d10/effect: Add support for 'or' instruction. d3d10/effect: Add support for shift instructions. d3d10/tests: Add a test for log2/log10/exp2 functions in expressions. gdi32/emf: Fix miter limit serialization. gdi32/tests: Add some tests for SetMiterLimit() argument validation. gdi32: Reject invalid values in SetMiterLimit(). gdi32/emf: Add SetMetaRgn() recording. winedump/emf: Add EMR_SETMITERLIMIT record dumping. gdi32/emf: Add SetBrushOrgEx() recording. gdi32/tests: Add some tests for FixBrushOrgEx(). d3dx9: Check for tx_1_0 blob magic earlier in D3DXCreateTextureShader(). Paul Gofman (5): secur32: Synchronize access to schannel handle table. server: Hold socket reference in sock_poll_event(). ntdll: Map EDESTADDRREQ to STATUS_INVALID_CONNECTION. imagehlp: Import functions instead of forwarding. ntdll: Implement NtQueryValueKey(KeyValuePartialInformationAlign64). Piotr Caban (16): msvcr110: Reset chore task_collection earlier to prevent occasional test failure. gdi32: Pass default DEVMODE to winspool in CreateDC. gdi32: Add partial support for creating EMREXTCREATEPEN records. wineps: Add support for EMR_EXTCREATEPEN record playback. localspl: Add ResetPrinter implementation. winspool.drv: Add ResetPrinterW implementation. gdi32: Update printer DEVMODE in ResetDCW. gdi32: Fix METADC handling in PlayMetaFile. gdi32: Test PlayMetaFile on METADC. include: Add winppi.h header. gdi32: Add GdiGetSpoolFileHandle stub. gdi32: Add GdiDeleteSpoolFileHandle stub. gdi32: Add GdiGetDevmodeForPage stub. gdi32: Add GdiGetDevmodeForPage implementation. wineps.drv: Use first page DEVMODE to determine number of copies and collation. localspl: Truncate output file when printing to file. Rémi Bernon (40): dmime: Rename DirectMusicSegmentState8 method prefix to segment_state. dmime: Get rid of the IDirectMusicSegmentState8Impl typedef. dmime: Implement some segment state default values. dmime: Redirect IDirectMusicPerformance_PlaySegment to PlaySegmentEx. dmime: Introduce a new segment_state_create constructor. dmime/tests: Tests interaction between CloseDown and notifications. dmime: Keep messages with the same time ordered. dmime: Free all pending messages after CloseDown. dmime: Send DMUS_PMSGT_DIRTY messages from the performance. dmime: Send DMUS_PMSGT_NOTIFICATION messages from the performance. dmime: Implement IDirectMusicPerformance_GetNotificationPMsg. dmime: Call IDirectMusicTrack_(Init|End)Play from the segment state. include: Avoid narrowing warning in wine_dbgstr_fourcc. dmime/tests: Queue the message before calling SendPMsg twice. dmsynth: Import and use FluidSynth 2.3.3. fluidsynth: Use Wine debugging facility for traces. dmsynth: Simplify IDirectMusicSynth8_Open checks. dmsynth: Create a fluid_synth instance on Open. dmsynth: Create and register a fluid_sfont instance. server: Send WM_WINE_SETCURSOR with the thread input cursor handle. dmime: Get rid of the IDirectMusicWaveTrack typedef. dmime: Include dmobject.h in dmime_private.h. dmusic: Split wave entry points to dmusic_wave.h. dmime: Create a wave track when loading a segment from a .wav. dmime: Implement GUID_(Download|Unload)FromAudioPath for wave track. dmime: Implement IDirectMusicTrack_Play for the wave track. dmime: Play direct sound buffer from DMUS_PMSGT_WAVE message. dmsynth: Fix synth download of articulations list. dmsynth: Improve debug traces of DLS2 connections. dmsynth: Guard synth members with a CS. dmsynth: Parse MIDI events in IDirectMusicSynth_PlayBuffer. dmsynth: Play some MIDI events in IDirectMusicSynth_Render. dmsynth: Create fluid_preset and fluid_voice from instrument. dmband: Download / unload bands when initializing / ending band track. dmime: Implement sequence track IDirectMusicTrack_Play. dmime: Implement band track IDirectMusicTrack_Play. dmime: Output DMUS_MIDI_PMSG into a music buffer on the port. dmime: Translate DMUS_PMSGT_NOTE to DMUS_PMSGT_MIDI messages. dmime: Translate DMUS_PMSGT_PATCH to DMUS_PMSGT_MIDI messages. winex11: Forcefully unmap the clipping window when it loses focus. Stefan Dösinger (1): wined3d: Reference the push constant buffers. Zebediah Figura (15): objsel: Remove unnecessary includes. objsel: Remove DLL refcount tracking. objsel: Merge factory.c into objsel.c. objsel: Do not check for a NULL interface in COM methods. objsel: Do not create an object from IClassFactory::QueryInterface(). wined3d: Rename WINED3D_MAX_TEXTURES to WINED3D_MAX_FFP_TEXTURES. wined3d: Rename the "textures" field of struct wined3d_gl_limits to "ffp_textures". wined3d: Rename the "MaxSimultaneousTextures" field of struct fragment_caps to "max_textures". wined3d: Rename the "MaxTextureBlendStages" field of struct fragment_caps to "max_blend_stages". wined3d: Store the "wined3d_caps" field of struct fragment_caps as separate bool flags. wined3d: Store a fragment_caps structure in struct wined3d_d3d_info. shell32: Fix parsing empty arguments in parse_dde_command(). ddraw: Do not check for DDRAW_NO3D in wined3d_resource_desc_from_ddraw(). ddraw: Refactor how bind flags are computed. ddraw: Always create surfaces with WINED3D_BIND_SHADER_RESOURCE if possible. Zhiyi Zhang (2): mf: Avoid a double free of presentation clock timers. winex11.drv: Set _NET_WM_FULLSCREEN_MONITORS only when necessary.