Wine Announcement

The Wine development release 5.15 is now available.

What's new in this release (see below for details):
  - Initial implementation of the XACT Engine libraries.
  - Beginnings of a math library in MSVCRT based on Musl.
  - Still more restructuration of the console support.
  - Direct Input performance improvements.
  - Exception handling fixes on x86-64.
  - Various bug fixes.

The source is available from the following locations:

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 5.15 (total 27):

  27207  splayer auto quit while open a mp3 file
  31476  Bully Scholarship Edition: 'no DirectX 9.0c compatible sound card' on start, needs xactengine3_1.dll et al.
  34263  Framebuffer read-before-write causes graphical glitches
  38615  DSA: Drakensang Demo fails to start, reports 'XACT Error after IXACTEngine::Initialize: unknown error code - maybe not an XACT error'
  40163  Racedriver GRID: freeze in the menu
  41030  Pac-Man Museum (Steam) crashes on start, needs '{bcc782bc-6492-4c22-8c35-f5d72fe73c6e}' xactengine3_7.dll
  41045  Captain Morgane crashes on start: needs clsid '{0977d092-2d95-4e43-8d42-9ddcc2545ed5}' xactengine3_4.dll
  41738  Cloning and releasing an IStream frees the HGLOBAL memory
  43153  Gothic 1.0 from Steam freezes in new game on phrase "I'm Diego"
  44059  Worms World Party Remastered (GOG version) crashes at launch in clean wine prefix version 2.21 and 2.22
  44306  Visual Novel "A Clockwork Ley-Line: The Borderline of Dusk" doesn't work with d3d9
  45700  Call of Duty WWII sound issues
  48684  "BlazBlue: Calamity Trigger" class {94c1affa-66e7-4961-9521-cfdef3128d4f} not registered
  49152  wine-mono 5.0.0 breaks rendering for disabled buttons
  49325  Kea Colorinbook crashes:
  49477  Some api-ms-win-core-* are not found by Forza Horizon 4
  49518  Grim Dawn leaks shared memory after upgrade to Wine 5.12
  49559  winevdm.exe crashes when running 16-bit installers (non-PE build only)
  49593  inconsistent return code when executable is not found
  49609  wine-staging-5.12 - Elite Dangerous launcher broken
  49638 installer fails with "Access denied"
  49653  Pattern Maker for Cross Stitch always displays measurement in imperial system
  49656  SAP GUI - Ws2_32.getaddrinfo crashes with non-standard service (/etc/services)
  49662  Wine Internet Explorer crashes on https://[2600::]/
  49664  FrostyModManager v1.0.5.9 crashes on launch
  49666  Red Dead Redemption 2 requires HEAP flags offset to match Windows
  49685  Gigabyte "EasyTune" service crashes in wbemprox


Changes since 5.14:

Akihiro Sagawa (1):
      user32: Fix wsprintfA's buffer usage when using %S.

Alex Henrie (2):
      urlmon: Fix null pointer dereference in process_hook_section (Coverity).
      urlmon: Call parse_host in combine_uri to set related parse_data fields.

Alexandre Julliard (10):
      winebuild: Always use DllMain as entry point for the 32-bit side of a 16-bit module.
      ntdll: Fix wcsncpy() implementation now that length is unsigned.
      ntdll: Move the critical section fallback code out of the Unix library.
      ntdll: Avoid importing RtlEnterCriticalSection/RtlLeaveCriticalSection from the Unix side.
      ntdll: Implement KiUserApcDispatcher().
      ntdll: Use KiUserApcDispatcher() to call user APCs.
      kernelbase: Fix console ioctl output sizes.
      ntdll/tests: Run exception tests under the debugger on all platforms.
      ntdll: Unwind the syscall frame when calling KiUserExceptionDispatcher().
      ntdll: Unwind the syscall frame when calling KiRaiseUserExceptionDispatcher().

Alistair Leslie-Hughes (14):
      xactengine3_7: Return valid HRESULT from IXACT3Engine Initialize.
      include: Define all CLSID/IID_IXACT3Engine versions.
      xactengine3_7: Use CLSID defined from global header.
      xactengine3_6: New DLL.
      xactengine3_5: New DLL.
      xactengine3_4: New DLL.
      xactengine3_3: New DLL.
      xactengine3_2: New DLL.
      xactengine3_1: New DLL.
      xactengine3_0: New DLL.
      xactengine3_7: Trace FAudio version being used.
      xactengine3_7: Don't cast interface pointers.
      xactengine3_7: Correct callback to windows function.
      dmime: Parse TimeSig track data.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Brendan Shanks (7):
      ntdll: Use unique handle numbers in generated SMBIOS tables.
      ntdll: End generated SMBIOS tables with the end-of-table structure.
      ntdll: Add additional fields to generated SMBIOS baseboard info table.
      ntdll: Add additional fields to generated SMBIOS chassis info table.
      ntdll: Generate "system boot information" SMBIOS table.
      include/msvcrt: Add stdbool.h header.
      ntdll: Pad HEAP structure so 'flags' offset matches recent Windows.

Daniel Lehman (2):
      wininet: Move INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT handling to helper.
      ntdll/tests: Handle 32 cores.

Derek Lesho (4):
      ntoskrnl.exe: Implement ObOpenObjectByName.
      ntoskrnl.exe: Implement KeReadStateEvent.
      ntoskrnl.exe: Implement KeInitializeApc.
      ntoskrnl.exe: Add stubs for Ke(/Test)AlertThread.

Dmitry Kislyuk (3):
      vbscript: Support conversion to string in InStr.
      vbscript: Return correct error for null start in InStr and more tests.
      vbscript: Implement case insensitive search in InStrRev function.

Dmitry Timoshkov (5):
      ieframe: Deactivate UI when processing IOleObject::DoVerb(OLEIVERB_HIDE).
      ole32/tests: Add tests for HGLOBAL based IStream::Clone.
      ole32: Allow SetSize to move a fixed memory block.
      mshtml: Add trace to IOleCommandTarget::Exec().
      ieframe: When activating UI also activate the embedded document.

Esme Povirk (1):
      mscoree: Use builtin XNA implementation by default.

Evgeny Litvinenko (1):
      ntdll: Add check for totalram, mem_unit in struct sysinfo.

Fabian Maurer (1):
      wine.inf: Map the Intl section of win.ini to the registry.

François Gouget (1):
      combase: Fix the trailing linefeed of a TRACE().

Gabriel Ivăncescu (15):
      iphlpapi: Update comment for SOCK_DGRAM since Linux also supports it from 3.0.
      msscript.ocx: Implement the ScriptModule enumerator.
      msscript.ocx: Move ScriptControl::Run implementation into a helper.
      msscript.ocx: Implement ScriptModule::Run.
      msscript.ocx: Implement ScriptModule::get_CodeObject.
      msscript.ocx: Implement ScriptControl::get_CodeObject.
      msscript.ocx: Add IScriptProcedureCollection stub implementation.
      msscript.ocx/tests: Add initial tests for Script Procedures.
      msscript.ocx: Implement ScriptProcedureCollection::get_Count.
      msscript.ocx: Uncache the module objects when adding new code.
      msscript.ocx: Implement ScriptProcedureCollection::get_Item.
      msscript.ocx: Cache the procedures obtained from the ScriptProcedureCollection.
      msscript.ocx: Implement ScriptProcedure::get_Name.
      msscript.ocx: Implement ScriptProcedure::get_NumArgs.
      msscript.ocx: Implement ScriptProcedure::get_HasReturnValue.

Gijs Vermeulen (7):
      amstream/tests: Split test_IDirectDrawStreamSample().
      amstream: Return E_INVALIDARG when a rect but no surface is passed in IDirectDrawMediaStream::CreateSample().
      amstream: Increase parent IAMMediaStream refcount in IDirectDrawMediaStream::CreateSample().
      configure: Add an option to disable QuickTime support.
      wbemprox: Accept 0 and WBEM_FLAG_ALWAYS | WBEM_MASK_CONDITION_ORIGIN as flags in IWbemClassObject::GetNames().
      wbemprox: Set obj to NULL on error in get_object().
      wbemprox: Don't crash in IWbemClassObject::Put() when called with empty class object.

Hans Leidekker (1):
      ws2_32: Avoid a crash in WS_getaddrinfo when the specified service doesn't exist.

Huw D. M. Davies (7):
      maintainers: Add combase to the OLE RPC section.
      ole32: Add a structure to hold memory block information.
      ole32: Add a ref-count to the handle structure.
      ole32: Add a constructor helper.
      ole32: Allow Clone to access the original memory block.
      ndis.sys: Reinstate the subsystem native option.
      scsiport.sys: Reinstate the subsystem native option.

Jacek Caban (27):
      configure: Build with -mcx16 on x86_64.
      kernelbase: Add missing consts to ScrollConsoleScreenBuffer declaration.
      ntdll: Move InterlockedCompareExchange128 support to winnt.h.
      include: Introduce wincontypes.h.
      include: Introduce consoleapi.h.
      include: Add pseudoconsole declarations.
      kernelbase: Add pseudoconsole stubs.
      urlmon: Remove unused flags argument from parse_host.
      include: Add missing console mode defines.
      kernel32/tests: Fix ReadConsoleOutputW tests on Windows 8.
      kernel32/tests: Disable ENABLE_VIRTUAL_TERMINAL_PROCESSING mode in testWriteNotWrappedProcessed.
      kernel32/tests: Add an option to test current console.
      kernel32/tests: Add console title tests.
      kernelbase: Close PEB ConsoleHandle in FreeConsole.
      kernel32: Set PEB console handle in AllocConsole.
      kernelbase: Close PEB ConsoleHandle in AttachConsole.
      server: Pass console handle to the child process.
      kernel32: Set PEB ConsoleHandle for bare console.
      kernel32: Use PEB console handle in CONSOLE_HandleCtrlC to check console connection.
      kernelbase: Move CONTROL_C_EXIT handler to kernelbase.
      kernelbase: Use PEB ConsoleHandle to check for console connection in AllocConsole.
      kernelbase: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleCP.
      kernelbase: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleOutputCP.
      kernelbase: Use IOCTL_CONDRV_GET_TITLE in GetConsoleTitleW.
      kernel32: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleWindow.
      kernel32: Use IOCTL_CONDRV_GET_INPUT_INFO in CONSOLE_GetNumHistoryEntries.
      server: Remove no longer used get_console_input_info.

Jactry Zeng (3):
      d3dcompiler: Add D3D_COMPILE_STANDARD_FILE_INCLUDE support for D3DCompile2().
      d3dcompiler: Implement D3DCompileFromFile().
      d3dx11: Partially implement D3DX11CompileFromFile{A, W}().

Jeff Smith (4):
      setupapi/tests: Change return values from coinst functions.
      setupapi/tests: Add error tests for SetupDiDestroyDeviceInfoList.
      setupapi: Clear error on SetupDiDestroyDeviceInfoList success.
      gdiplus: Avoid a few unnecessary calculations for arc2polybezier.

Julian Rüger (1):
      po: Update German translation.

Liam Middlebrook (2):
      winevulkan: Harden calibrated_timestamps failure paths.
      winevulkan: Update to VK spec version 1.2.149.

Louis Lenders (3):
      api-ms-win-core-memory-l1-1-3: Add dll.
      api-ms-win-core-file-fromapp-l1-1-0: Add dll.
      api-ms-win-core-file-ansi-l2-1-0: Add dll.

Martin Storsjo (4):
      ntdll: Remove a stray duplicate instruction.
      ntdll: Only call putenv() if we are going to call exec().
      tools: Upgrade the config.guess/config.sub scripts.
      configure, msvcrt: Check for the finite() function just like finitef().

Michael Müller (2):
      fsutil: Print out usage message.
      fsutil: Add support for creating hardlinks.

Michael Stefaniuc (2):
      dmime: Constify the chunk parameter of stream_skip_chunk().
      dmime: Simplify loading/storing of the Tempo Track data.

Mikołaj Zalewski (1):
      ntdll: Return from Thumb to ARM mode after assembling raise_func_trampoline_thumb.

Myah Caron (1):
      kernelbase/tests: Add test for Sleep(1).

Nikolay Sivov (54):
      combase: Mark 64-bit only stubs as such.
      combase: Move HBRUSH marshalling functions.
      combase: Move CLIPFORMAT marshalling functions.
      combase: Move HBITMAP marshalling functions.
      combase: Move HPALETTE marshalling stubs.
      combase: Move HGLOBAL marshalling functions.
      combase: Move HACCEL marshalling functions.
      combase: Move CreateErrorInfo() function.
      combase: Move IMalloc/IMallocSpy functionality.
      ole32: Move IsValidInterface() to another file.
      combase: Move FreePropVariantArray() and PropVariantClear().
      combase: Move PropVariantCopy().
      combase: Move CoFileTimeNow().
      combase: Move CoCreateGuid().
      combase: Move CoQueryProxyBlanket().
      combase: Move CoSetProxyBlanket().
      combase: Move CoCopyProxy().
      combase: Move CoQueryClientBlanket().
      combase: Move CoImpersonateClient().
      combase: Move CoRevertToSelf().
      combase: Add CoCreateErrorInfo() as an alias for CreateErrorInfo().
      combase: Move CoGetObjectContext().
      combase: Move CoGetCallState().
      combase: Move CoGetActivationState().
      combase: Move CoGetInstanceFromFile().
      combase: Move CoGetInstanceFromIStorage().
      combase: Move CoCreateInstance().
      combase: Move CoGetTreatAsClass().
      combase: Move ProgIDFromCLSID().
      combase: Move CLSIDFromProgID().
      combase: Move CLSIDFromString().
      combase: Move IIDFromString().
      combase: Move StringFromCLSID().
      combase: Move StringFromGUID2().
      combase: Move CoGetDefaultContext().
      combase: Move CoMarshalHresult().
      combase: Move CoUnmarshalHresult().
      combase: Move CoGetInterfaceAndReleaseStream().
      combase: Move CoMarshalInterThreadInterfaceInStream().
      combase: Move CoCreateFreeThreadedMarshaler().
      combase: Move CLSIDFromProgIDEx().
      ole32: Reduce duplication for global interface table factory.
      ole32: Expose ManualResetEvent as registered class.
      ole32: Remove registration for Global Interface Table class.
      ole32: Move more built-in classes to CoGetClassObject().
      ole32: Remove now unused helper.
      ole32: Remove initialized state test in CoCreateInstanceEx().
      combase: Move CoCreateInstanceEx().
      combase: Move CoFreeUnusedLibraries().
      shell32: Silence Destination List QueryInterface() failure message.
      include: Move fundamental ORPC types to separate private header.
      combase: Move CoGetMarshalSizeMax().
      combase: Move CoMarshalInterface().
      combase: Move CoInitializeSecurity().

Paul Gofman (10):
      include: Add d3d12 reflection structures.
      include: Define d3d12 shader reflection interfaces.
      d3dcompiler: Parse register space and range id for sm51 in d3dcompiler_parse_rdef().
      d3dcompiler: Fail parsing reflection data for sm51 in versions below 47.
      d3dcompiler/tests: Test bound resources' reflection for sm5.1.
      ntdll/tests: Always remove hook trampoline in test_kiuserexceptiondispatcher().
      ntdll: Support UWOP_PUSH_MACHFRAME opcode in RtlVirtualUnwind() on x64.
      ntdll: Fix unwind from call_consolidate_callback() for PE build on x64.
      ntdll: Support nested exceptions on x64.
      ntdll: Don't mind epilog in RtlVirtualUnwind() in case of zero op count on x64.

Piotr Caban (17):
      ucrtbase: Support overriding return value in _matherr.
      msvcrt: Import sqrtf from musl.
      msvcrt: Import sqrt from musl.
      msvcrt: Return error on invalid character in mbstowcs.
      msvcrt: Avoid allocations in _write implementation.
      msvcrt: Use correct code page in _write when outputing to console.
      msvcrt: Import acosf from musl.
      msvcrt: Import acos from musl.
      ucrtbase: Fix precision handling in %#g when printing 0.
      ucrtbase: Fix away from 0 rounding in %a format.
      ucrtbase: Support _CRT_INTERNAL_PRINTF_STANDARD_ROUNDING flag in printf.
      msvcrt: Import asinf from musl.
      msvcrt: Import asin from musl.
      msvcrt: Import atan2f from musl.
      msvcrt: Import atan2 from musl.
      msvcrt: Import atanf from musl.
      msvcrt: Import atan from musl.

Rémi Bernon (11):
      xaudio2_9: Use new FAudioCreateReverb9 interface.
      ntdll/tests: Fix w2008 debugger test results.
      ntdll/tests: Add broken FltSave results for w2008 / w8.
      ntdll/tests: Run RtlRaiseException tests on x86_64.
      wbemprox: Use empty strings instead of NULL.
      user32/tests: Add basic GetRegisteredRawInputDevices tests.
      user32: Implement GetRegisteredRawInputDevices.
      dinput8/tests: Add DISCL_EXCLUSIVE / rawinput test.
      dinput8: Add support for rawinput based devices.
      dinput8: Use rawinput interface for mouse device.
      dinput8: Stop using LL hooks for mouse devices.

Serge Gautherie (8):
      winapi: Use $cwd variable instead of pwd command.
      winapi_test: Horizontally align TEST_TYPE_SIGNED() parameter.
      winapi_test: Restore horizontal alignment of macro defines.
      winapi_test: PshpackN.h can only be 1/2/4/8.
      winapi_test: Escape parentheses in regexp, Allow spaces around them.
      winapi_test: '* long *' is 4 bytes, not pointer size, on Windows.
      winapi_test: Minor $pointer_size check consistency tweak.
      winapi_test: Update generated.c files.

Shawn M. Chapla (2):
      gdiplus/tests: Add metafile null frame rect GDI/GDI+ interop test case.
      gdiplus: Incorporate GDI frame into metafile auto-frame before scaling.

Stefan Dösinger (3):
      ddraw: Thunk to surface1, not surface7 in blt.
      ddraw: Thunk to surface1, not surface7 in surface_unlock.
      ddraw: Thunk to surface1, not surface7 in flip.

Sven Baars (5):
      sechost: Free the right variable (Coverity).
      ntoskrnl.exe/tests: Add a missing argument to an ok call (Coverity).
      prntvpt: Fix a null check (Coverity).
      msi: Fix a leak (Coverity).
      wbemprox: Avoid a use after free (Coverity).

Vijay Kiran Kamuju (13):
      xactengine3_7: Add new dll.
      xactengine3_7: Implement IXACT3Engine interface.
      xactengine3_7: Implement IXACT3SoundBank Interface.
      xactengine3_7: Implement IXACT3Cue Interface.
      dbghelp: Add xmm and mxcsr register mapping functions for i386.
      xactengine3_7: Implement IXACT3WaveBank Interface.
      xactengine3_7: Implement IXACT3Engine::CreateStreamingWaveBank.
      xactengine3_7: Implement IXACT3Wave interface.
      xactengine3_7: Implement IXACT3SoundBank::Play function.
      xactengine3_7: Implement IXACT3WaveBank::Play function.
      xactengine3_7: Implement IXACT3Engine::RegisterNotification and IXACT3Engine::UnRegisterNotification functions.
      include: Add missing WAVEBANKENTRY_FLAGS to xact3wb.h.
      include: Fix the spelling of XACT_WAVE_STREAMING_PARAMETERS in xact3.h.

Vladimir Panteleev (1):
      kernel32/tests: Add more GetEnvironmentVariableA/W tests.

Zebediah Figura (8):
      Revert "winegstreamer: Check for failure from gst_video_info_set_format().".
      server: Use a separate object for each opened mailslot device file.
      msvcrt/tests: Fix some tests on Windows 2003 and earlier.
      quartz/tests: Fix a test in test_basic_video().
      dsound: Select the nth effect matching the given CLSID in GetObjectInPath().
      wbemprox: Return WBEM_E_NOT_FOUND from get_object() if no object is available.
      d3dcompiler: Iterate through the instruction list in reverse in free_instr_list() (Valgrind).
      wined3d: Rename wined3d_sm4_immconst_type to wined3d_sm4_dimension.

Zhiyi Zhang (9):
      dwmapi: Check NULL parameter in DwmIsCompositionEnabled().
      gdi32/tests: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      user32/tests: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      user32: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      winex11.drv: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      winemac.drv: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      explorer: Zero initialize DEVMODE before passing it to EnumDisplaySettings().
      user32/tests: Remove some todo_wines.
      user32/tests: Fix a failing test on Windows 10 1909.

Ziqing Hui (1):
      d3dx10/tests: Add more test images for DDS format.

Alexandre Julliard