Wine Announcement

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:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git
repository. Check 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 - 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/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): Add stub DLL. Add IApplicationDataStatics stub interface. Add IApplicationDataStatics::get_Current() tests. Implement IApplicationDataStatics::get_Current().
      include: Add ISystemMediaTransportControls interface definition. Add stub DLL.
      include: Add systemmediatransportcontrolsinterop.idl file. Add ISystemMediaTransportControlsInterop stub interface. Add ISystemMediaTransportControlsInterop::GetForWindow() tests. Implement ISystemMediaTransportControlsInterop::GetForWindow(). Add some ISystemMediaTransportControls properties tests. Implement some ISystemMediaTransportControls properties.
      include: Add file. Add stub DLL. Add IUserConsentVerifierStatics stub interface. Implement IUserConsentVerifierStatics::CheckAvailabilityAsync(). 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().
      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 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.